1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-01-10 03:47:03 +02:00
goreleaser/internal/pipe/sourcearchive/source_test.go
Carlos Alexandro Becker 7fe4d0ae79
feat: upload source archive (#1379)
* feat: upload source archive

Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>

* fix: lint

Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>
2020-04-12 11:47:46 -03:00

86 lines
2.2 KiB
Go

package sourcearchive
import (
"io/ioutil"
"os"
"path/filepath"
"testing"
"github.com/goreleaser/goreleaser/internal/artifact"
"github.com/goreleaser/goreleaser/internal/testlib"
"github.com/goreleaser/goreleaser/pkg/config"
"github.com/goreleaser/goreleaser/pkg/context"
"github.com/stretchr/testify/require"
)
func TestArchive(t *testing.T) {
for _, format := range []string{"tar.gz", "tar", "zip"} {
t.Run(format, func(t *testing.T) {
tmp, back := testlib.Mktmp(t)
defer back()
require.NoError(t, os.Mkdir("dist", 0744))
testlib.GitInit(t)
require.NoError(t, ioutil.WriteFile("code.txt", []byte("not really code"), 0655))
require.NoError(t, ioutil.WriteFile("README.md", []byte("# my dope fake project"), 0655))
testlib.GitAdd(t)
testlib.GitCommit(t, "feat: first")
var ctx = context.New(config.Project{
ProjectName: "foo",
Dist: "dist",
Source: config.Source{
Format: format,
Enabled: true,
},
})
ctx.Git.FullCommit = "HEAD"
ctx.Version = "1.0.0"
require.NoError(t, Pipe{}.Default(ctx))
require.NoError(t, Pipe{}.Run(ctx))
var artifacts = ctx.Artifacts.List()
require.Len(t, artifacts, 1)
require.Equal(t, artifact.Artifact{
Type: artifact.UploadableSourceArchive,
Name: "foo-1.0.0." + format,
Path: "dist/foo-1.0.0." + format,
Extra: map[string]interface{}{
"Format": format,
},
}, *artifacts[0])
stat, err := os.Stat(filepath.Join(tmp, "dist", "foo-1.0.0."+format))
require.NoError(t, err)
require.Greater(t, stat.Size(), int64(100))
})
}
}
func TestDefault(t *testing.T) {
var ctx = context.New(config.Project{})
require.NoError(t, Pipe{}.Default(ctx))
require.Equal(t, config.Source{
NameTemplate: "{{ .ProjectName }}-{{ .Version }}",
Format: "tar.gz",
}, ctx.Config.Source)
}
func TestInvalidNameTemplate(t *testing.T) {
var ctx = context.New(config.Project{
Source: config.Source{
Enabled: true,
NameTemplate: "{{ .foo }-asdda",
},
})
require.EqualError(t, Pipe{}.Run(ctx), "template: tmpl:1: unexpected \"}\" in operand")
}
func TestDisabled(t *testing.T) {
testlib.AssertSkipped(t, Pipe{}.Run(context.New(config.Project{})))
}
func TestString(t *testing.T) {
require.NotEmpty(t, Pipe{}.String())
}