github.com/triarius/goreleaser@v1.12.5/internal/pipe/gomod/gomod_test.go (about) 1 package gomod 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 8 "github.com/triarius/goreleaser/internal/testlib" 9 "github.com/triarius/goreleaser/pkg/config" 10 "github.com/triarius/goreleaser/pkg/context" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestRun(t *testing.T) { 15 ctx := context.New(config.Project{}) 16 require.NoError(t, Pipe{}.Default(ctx)) 17 require.NoError(t, Pipe{}.Run(ctx)) 18 require.Equal(t, "github.com/triarius/goreleaser", ctx.ModulePath) 19 } 20 21 func TestRunCustomMod(t *testing.T) { 22 ctx := context.New(config.Project{ 23 GoMod: config.GoMod{ 24 Mod: "readonly", 25 }, 26 }) 27 require.NoError(t, Pipe{}.Default(ctx)) 28 require.NoError(t, Pipe{}.Run(ctx)) 29 require.Equal(t, "github.com/triarius/goreleaser", ctx.ModulePath) 30 } 31 32 func TestCustomEnv(t *testing.T) { 33 bin := filepath.Join(t.TempDir(), "go.bin") 34 require.NoError(t, os.WriteFile(bin, []byte("#!/bin/sh\nenv | grep -qw FOO=bar"), 0o755)) 35 ctx := context.New(config.Project{ 36 GoMod: config.GoMod{ 37 GoBinary: bin, 38 Env: []string{"FOO=bar"}, 39 }, 40 }) 41 require.NoError(t, Pipe{}.Default(ctx)) 42 require.NoError(t, Pipe{}.Run(ctx)) 43 } 44 45 func TestRunOutsideGoModule(t *testing.T) { 46 dir := testlib.Mktmp(t) 47 require.NoError(t, os.WriteFile(filepath.Join(dir, "main.go"), []byte("package main\nfunc main() {println(0)}"), 0o666)) 48 ctx := context.New(config.Project{}) 49 require.NoError(t, Pipe{}.Default(ctx)) 50 testlib.AssertSkipped(t, Pipe{}.Run(ctx)) 51 require.Empty(t, ctx.ModulePath) 52 } 53 54 func TestRunCommandError(t *testing.T) { 55 ctx := context.New(config.Project{ 56 GoMod: config.GoMod{ 57 GoBinary: "not-a-valid-binary", 58 }, 59 }) 60 require.EqualError(t, Pipe{}.Run(ctx), "failed to get module path: exec: \"not-a-valid-binary\": executable file not found in $PATH: ") 61 require.Empty(t, ctx.ModulePath) 62 } 63 64 func TestDescription(t *testing.T) { 65 require.NotEmpty(t, Pipe{}.String()) 66 }