aboutsummaryrefslogtreecommitdiff
path: root/main_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'main_test.go')
-rw-r--r--main_test.go134
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