diff options
Diffstat (limited to 'main_test.go')
| -rw-r--r-- | main_test.go | 134 |
1 files changed, 16 insertions, 118 deletions
diff --git a/main_test.go b/main_test.go index ba321b1..febbe53 100644 --- a/main_test.go +++ b/main_test.go @@ -7,124 +7,95 @@ import ( "testing" "github.com/Masterminds/semver/v3" - "github.com/go-git/go-billy/v5/osfs" - "github.com/go-git/go-git/v5" - "github.com/go-git/go-git/v5/plumbing" - "github.com/go-git/go-git/v5/storage/filesystem" - "github.com/spf13/viper" ) var ( tags = []string{"0.1.1", "1.2.3", "3.1.1", "0.3.0", "4.1.1", "0.8.1", "1.1.1-PR.44.4"} ) -func newRepo(tempDir string) *git.Repository { - fs := osfs.New(tempDir) - strg := filesystem.NewStorage(fs, nil) - r, err := git.Init(strg, fs) - if err != nil { - log.Fatal(err) - } - return r -} - -func makeCommit(wt *git.Worktree) (plumbing.Hash, error) { - file, err := wt.Filesystem.Create("thisismyfile") - if err != nil { - return plumbing.Hash{}, err - } - file.Write([]byte("this is my content")) - wt.Add("thisismyfile") - hash, err := wt.Commit("this is a commit", &git.CommitOptions{}) - if err != nil { - return plumbing.Hash{}, err - } - return hash, nil - -} func TestCmd(t *testing.T) { tests := []struct { name string input string - prior string + prior []string output string isError error }{ { name: "patch bump", input: "patch", - prior: "1.1.1", + prior: []string{"1.1.1"}, output: "1.1.2", isError: nil, }, { name: "minor bump", input: "minor", - prior: "1.1.0", + prior: []string{"1.1.0"}, output: "1.2.0", isError: nil, }, { name: "major bump", input: "major", - prior: "1.2.1", + prior: []string{"1.2.1"}, output: "2.0.0", isError: nil, }, { name: "major bump new prerelease", input: "major --prerelease --key-args PR_NUM=11", - prior: "1.2.1", + prior: []string{"1.2.1"}, output: "2.0.0-PR.11.0", isError: nil, }, { name: "major bump existing prerelease bump", input: "major --prerelease --key-args PR_NUM=11", - prior: "2.0.0-PR.11.0", + prior: []string{"2.0.0-PR.11.0"}, output: "2.0.0-PR.11.1", isError: nil, }, { name: "minor bump new prerelease", input: "minor --prerelease --key-args PR_NUM=11", - prior: "1.2.1", + prior: []string{"1.2.1"}, output: "1.3.0-PR.11.0", isError: nil, }, { name: "minor bump existing prerelease bump", input: "minor --prerelease --key-args PR_NUM=11", - prior: "1.3.0-PR.11.0", + prior: []string{"1.3.0-PR.11.0"}, output: "1.3.0-PR.11.1", isError: nil, }, { name: "patch bump new prerelease", input: "patch --prerelease --key-args PR_NUM=11", - prior: "1.2.1", + prior: []string{"1.2.1"}, output: "1.2.2-PR.11.0", isError: nil, }, { name: "patch bump existing prerelease bump", input: "patch --prerelease --key-args PR_NUM=11", - prior: "1.2.2-PR.11.0", + prior: []string{"1.2.2-PR.11.0"}, output: "1.2.2-PR.11.1", isError: nil, }, { name: "patch bump different fmt", input: "patch --prerelease --prerelease-fmt NOTME.$BumpInt", - prior: "1.2.3", + prior: []string{"1.2.3"}, output: "1.2.4-NOTME.0", isError: nil, }, { name: "patch bump existing different fmt", input: "patch --prerelease --prerelease-fmt NOTME.$BumpInt", - prior: "1.2.4-NOTME.0", + prior: []string{"1.2.4-NOTME.0"}, output: "1.2.4-NOTME.1", isError: nil, }, @@ -133,23 +104,12 @@ func TestCmd(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { logOut := &bytes.Buffer{} - repoDir := t.TempDir() - testRepo := newRepo(repoDir) - viper.Set("repo-dir", repoDir) - wt, _ := testRepo.Worktree() - hash, err := makeCommit(wt) - if err != nil { - t.Fatal(err) - } - - _, err = testRepo.CreateTag(test.prior, hash, nil) - if err != nil { - t.Fatal(err) - } - + stdIn := &bytes.Buffer{} + stdIn.WriteString(strings.Join(test.prior, "\n")) rootCmd.SetArgs(strings.Split(test.input, " ")) rootCmd.SetOut(logOut) rootCmd.SetErr(logOut) + rootCmd.SetIn(stdIn) result := rootCmd.Execute() if result != test.isError { t.Fatalf("didn't expect %s", result) @@ -181,7 +141,7 @@ func TestLatestTags(t *testing.T) { { name: "returns the last item in slice", inputs: semverTags, - output: semver.New(1, 1, 1, "PR.44.4", ""), + output: semver.New(4, 1, 1, "", ""), }, { name: "returns nil if no tags are present", @@ -199,68 +159,6 @@ func TestLatestTags(t *testing.T) { }) } } - -func TestFindingTags(t *testing.T) { - tmpDir := t.TempDir() - r := newRepo(tmpDir) - wt, err := r.Worktree() - if err != nil { - t.Fatal(err) - } - hash, err := makeCommit(wt) - if err != nil { - t.Fatal(err) - } - - results, err := findTags(r) - if err != nil { - t.Fatal(err) - } - - if len(results) != 0 { - t.Fatalf("Expected no tags, found %d", len(results)) - } - - // at least a single tag is found - _, err = r.CreateTag("0.0.1", hash, nil) - if err != nil { - t.Fatal(err) - } - - results1, err := findTags(r) - if err != nil { - t.Fatal(err) - } - - if len(results1) != 1 { - t.Fatalf("Expected no tags, found %d", len(results1)) - } - - // a random tag - _, _ = r.CreateTag("this-is-not-me", hash, nil) - results2, err := findTags(r) - if err != nil { - t.Fatal(err) - } - - if len(results2) != 1 { - t.Fatalf("Expected no tags, found %d", len(results2)) - } - - // all semver tags - for _, tag := range tags { - _, _ = r.CreateTag(tag, hash, nil) - } - results3, err := findTags(r) - if err != nil { - t.Fatal(err) - } - - if len(results3) != 8 { - t.Fatalf("found %d", len(results3)) - } -} - func TestIncPreRelease(t *testing.T) { tests := []struct { name string |