github.com/joselitofilho/goreleaser@v0.155.1-0.20210123221854-e4891856c593/cmd/util_test.go (about)

     1  package cmd
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/goreleaser/goreleaser/internal/testlib"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  type exitMemento struct {
    13  	code int
    14  }
    15  
    16  func (e *exitMemento) Exit(i int) {
    17  	e.code = i
    18  }
    19  
    20  func setup(t testing.TB) string {
    21  	_ = os.Unsetenv("GITHUB_TOKEN")
    22  	_ = os.Unsetenv("GITLAB_TOKEN")
    23  
    24  	previous, err := os.Getwd()
    25  	require.NoError(t, err)
    26  
    27  	t.Cleanup(func() {
    28  		require.NoError(t, os.Chdir(previous))
    29  	})
    30  
    31  	var folder = t.TempDir()
    32  	require.NoError(t, os.Chdir(folder))
    33  
    34  	createGoreleaserYaml(t)
    35  	createMainGo(t)
    36  	goModInit(t)
    37  	testlib.GitInit(t)
    38  	testlib.GitAdd(t)
    39  	testlib.GitCommit(t, "asdf")
    40  	testlib.GitTag(t, "v0.0.1")
    41  	testlib.GitCommit(t, "asas89d")
    42  	testlib.GitCommit(t, "assssf")
    43  	testlib.GitCommit(t, "assd")
    44  	testlib.GitTag(t, "v0.0.2")
    45  	testlib.GitRemoteAdd(t, "git@github.com:goreleaser/fake.git")
    46  
    47  	return folder
    48  }
    49  
    50  func createFile(t testing.TB, filename, contents string) {
    51  	require.NoError(t, ioutil.WriteFile(filename, []byte(contents), 0644))
    52  }
    53  
    54  func createMainGo(t testing.TB) {
    55  	createFile(t, "main.go", "package main\nfunc main() {println(0)}")
    56  }
    57  
    58  func goModInit(t testing.TB) {
    59  	createFile(t, "go.mod", `module foo
    60  
    61  go 1.15
    62  `)
    63  }
    64  
    65  func createGoreleaserYaml(t testing.TB) {
    66  	var yaml = `build:
    67    binary: fake
    68    goos:
    69      - linux
    70    goarch:
    71      - amd64
    72  release:
    73    github:
    74      owner: goreleaser
    75      name: fake
    76  `
    77  	createFile(t, "goreleaser.yml", yaml)
    78  }