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  }