mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-01-10 03:47:03 +02:00
454abc9a0a
See #243. Upload binaries directly instead of creating archive. This option, however currently doesn't work together with brew and fpm since they both require archived artifacts.
202 lines
4.5 KiB
Go
202 lines
4.5 KiB
Go
package archive
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/goreleaser/goreleaser/config"
|
|
"github.com/goreleaser/goreleaser/context"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestDescription(t *testing.T) {
|
|
assert.NotEmpty(t, Pipe{}.Description())
|
|
}
|
|
|
|
func TestRunPipe(t *testing.T) {
|
|
var assert = assert.New(t)
|
|
folder, err := ioutil.TempDir("", "archivetest")
|
|
assert.NoError(err)
|
|
current, err := os.Getwd()
|
|
assert.NoError(err)
|
|
assert.NoError(os.Chdir(folder))
|
|
defer func() {
|
|
assert.NoError(os.Chdir(current))
|
|
}()
|
|
var dist = filepath.Join(folder, "dist")
|
|
assert.NoError(os.Mkdir(dist, 0755))
|
|
assert.NoError(os.Mkdir(filepath.Join(dist, "mybin"), 0755))
|
|
_, err = os.Create(filepath.Join(dist, "mybin", "mybin"))
|
|
assert.NoError(err)
|
|
_, err = os.Create(filepath.Join(dist, "mybin", "mybin.exe"))
|
|
assert.NoError(err)
|
|
_, err = os.Create(filepath.Join(folder, "README.md"))
|
|
assert.NoError(err)
|
|
var ctx = &context.Context{
|
|
Archives: map[string]string{
|
|
"darwinamd64": "mybin",
|
|
"windowsamd64": "mybin",
|
|
},
|
|
Config: config.Project{
|
|
Dist: dist,
|
|
Build: config.Build{
|
|
Binary: "mybin",
|
|
},
|
|
Archive: config.Archive{
|
|
Files: []string{
|
|
"README.*",
|
|
},
|
|
FormatOverrides: []config.FormatOverride{
|
|
{
|
|
Goos: "windows",
|
|
Format: "zip",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
for _, format := range []string{"tar.gz", "zip"} {
|
|
t.Run("Archive format "+format, func(t *testing.T) {
|
|
ctx.Config.Archive.Format = format
|
|
assert.NoError(Pipe{}.Run(ctx))
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestRunPipeSkip(t *testing.T) {
|
|
var assert = assert.New(t)
|
|
folder, err := ioutil.TempDir("", "archivetest")
|
|
assert.NoError(err)
|
|
current, err := os.Getwd()
|
|
assert.NoError(err)
|
|
assert.NoError(os.Chdir(folder))
|
|
defer func() {
|
|
assert.NoError(os.Chdir(current))
|
|
}()
|
|
var dist = filepath.Join(folder, "dist")
|
|
assert.NoError(os.Mkdir(dist, 0755))
|
|
assert.NoError(os.Mkdir(filepath.Join(dist, "mybin"), 0755))
|
|
_, err = os.Create(filepath.Join(dist, "mybin", "mybin"))
|
|
assert.NoError(err)
|
|
_, err = os.Create(filepath.Join(dist, "mybin", "mybin.exe"))
|
|
assert.NoError(err)
|
|
_, err = os.Create(filepath.Join(folder, "README.md"))
|
|
assert.NoError(err)
|
|
var ctx = &context.Context{
|
|
Archives: map[string]string{
|
|
"darwinamd64": "mybin",
|
|
"windowsamd64": "mybin",
|
|
},
|
|
Config: config.Project{
|
|
Dist: dist,
|
|
Build: config.Build{
|
|
Binary: "mybin",
|
|
},
|
|
Archive: config.Archive{
|
|
Skip: true,
|
|
},
|
|
},
|
|
}
|
|
assert.NoError(Pipe{}.Run(ctx))
|
|
assert.Equal([]string{"mybin.exe", "mybin"}, ctx.Artifacts)
|
|
}
|
|
|
|
func TestRunPipeDistRemoved(t *testing.T) {
|
|
var assert = assert.New(t)
|
|
var ctx = &context.Context{
|
|
Archives: map[string]string{
|
|
"darwinamd64": "mybin",
|
|
"windowsamd64": "mybin",
|
|
},
|
|
Config: config.Project{
|
|
Dist: "/path/nope",
|
|
Archive: config.Archive{
|
|
Format: "zip",
|
|
},
|
|
},
|
|
}
|
|
assert.Error(Pipe{}.Run(ctx))
|
|
}
|
|
|
|
func TestFormatFor(t *testing.T) {
|
|
var assert = assert.New(t)
|
|
var ctx = &context.Context{
|
|
Config: config.Project{
|
|
Archive: config.Archive{
|
|
Format: "tar.gz",
|
|
FormatOverrides: []config.FormatOverride{
|
|
{
|
|
Goos: "windows",
|
|
Format: "zip",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
assert.Equal("zip", formatFor(ctx, "windowsamd64"))
|
|
assert.Equal("tar.gz", formatFor(ctx, "linux386"))
|
|
}
|
|
|
|
func TestRunPipeInvalidGlob(t *testing.T) {
|
|
var assert = assert.New(t)
|
|
var ctx = &context.Context{
|
|
Archives: map[string]string{
|
|
"windowsamd64": "mybin",
|
|
},
|
|
Config: config.Project{
|
|
Dist: "/tmp",
|
|
Archive: config.Archive{
|
|
Files: []string{
|
|
"[x-]",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
assert.Error(Pipe{}.Run(ctx))
|
|
}
|
|
|
|
func TestRunPipeGlobFailsToAdd(t *testing.T) {
|
|
var assert = assert.New(t)
|
|
folder, err := ioutil.TempDir("", "archivetest")
|
|
assert.NoError(err)
|
|
current, err := os.Getwd()
|
|
assert.NoError(err)
|
|
assert.NoError(os.Chdir(folder))
|
|
defer func() {
|
|
assert.NoError(os.Chdir(current))
|
|
}()
|
|
assert.NoError(os.MkdirAll(filepath.Join(folder, "folder", "another"), 0755))
|
|
|
|
var ctx = &context.Context{
|
|
Archives: map[string]string{
|
|
"windows386": "mybin",
|
|
},
|
|
Config: config.Project{
|
|
Dist: folder,
|
|
Archive: config.Archive{
|
|
Files: []string{
|
|
"folder",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
assert.Error(Pipe{}.Run(ctx))
|
|
}
|
|
|
|
func TestRunPipeBinaryDontExist(t *testing.T) {
|
|
var assert = assert.New(t)
|
|
folder, err := ioutil.TempDir("", "archivetest")
|
|
assert.NoError(err)
|
|
var ctx = &context.Context{
|
|
Archives: map[string]string{
|
|
"windows386": "mybin",
|
|
},
|
|
Config: config.Project{
|
|
Dist: folder,
|
|
},
|
|
}
|
|
assert.Error(Pipe{}.Run(ctx))
|
|
}
|