github.com/joselitofilho/goreleaser@v0.155.1-0.20210123221854-e4891856c593/internal/testlib/git.go (about) 1 package testlib 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/goreleaser/goreleaser/internal/git" 8 "github.com/stretchr/testify/require" 9 ) 10 11 // GitInit inits a new git project. 12 func GitInit(t testing.TB) { 13 out, err := fakeGit("init") 14 require.NoError(t, err) 15 require.Contains(t, out, "Initialized empty Git repository") 16 require.NoError(t, err) 17 } 18 19 // GitRemoteAdd adds the given url as remote. 20 func GitRemoteAdd(t testing.TB, url string) { 21 out, err := fakeGit("remote", "add", "origin", url) 22 require.NoError(t, err) 23 require.Empty(t, out) 24 } 25 26 // GitCommit creates a git commits. 27 func GitCommit(t testing.TB, msg string) { 28 GitCommitWithDate(t, msg, time.Time{}) 29 } 30 31 // GitCommitWithDate creates a git commit with a commit date. 32 func GitCommitWithDate(t testing.TB, msg string, commitDate time.Time) { 33 env := (map[string]string)(nil) 34 if !commitDate.IsZero() { 35 env = map[string]string{ 36 "GIT_COMMITTER_DATE": commitDate.Format(time.RFC1123Z), 37 } 38 } 39 out, err := fakeGitEnv(env, "commit", "--allow-empty", "-m", msg) 40 require.NoError(t, err) 41 require.Contains(t, out, "master", msg) 42 } 43 44 // GitTag creates a git tag. 45 func GitTag(t testing.TB, tag string) { 46 out, err := fakeGit("tag", tag) 47 require.NoError(t, err) 48 require.Empty(t, out) 49 } 50 51 // GitBranch creates a git branch. 52 func GitBranch(t testing.TB, branch string) { 53 out, err := fakeGit("branch", branch) 54 require.NoError(t, err) 55 require.Empty(t, out) 56 } 57 58 // GitAdd adds all files to stage. 59 func GitAdd(t testing.TB) { 60 out, err := fakeGit("add", "-A") 61 require.NoError(t, err) 62 require.Empty(t, out) 63 } 64 65 func fakeGitEnv(env map[string]string, args ...string) (string, error) { 66 var allArgs = []string{ 67 "-c", "user.name='GoReleaser'", 68 "-c", "user.email='test@goreleaser.github.com'", 69 "-c", "commit.gpgSign=false", 70 "-c", "log.showSignature=false", 71 } 72 allArgs = append(allArgs, args...) 73 return git.RunEnv(env, allArgs...) 74 } 75 76 func fakeGit(args ...string) (string, error) { 77 return fakeGitEnv(nil, args...) 78 } 79 80 // GitCheckoutBranch allows us to change the active branch that we're using. 81 func GitCheckoutBranch(t testing.TB, name string) { 82 out, err := fakeGit("checkout", "-b", name) 83 require.NoError(t, err) 84 require.Empty(t, out) 85 }