aboutsummaryrefslogtreecommitdiff
path: root/package_git_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'package_git_test.go')
-rw-r--r--package_git_test.go172
1 files changed, 172 insertions, 0 deletions
diff --git a/package_git_test.go b/package_git_test.go
new file mode 100644
index 0000000..7ae7af5
--- /dev/null
+++ b/package_git_test.go
@@ -0,0 +1,172 @@
+package beku
+
+import (
+ "go/build"
+ "io"
+ "io/ioutil"
+ "os"
+ "testing"
+
+ "github.com/shuLhan/share/lib/test"
+)
+
+var (
+ gitCurPkg *Package
+ gitNewPkg *Package
+ testStdout *os.File
+ testStderr *os.File
+)
+
+func testInitOutput() (err error) {
+ testStdout, err = ioutil.TempFile("", "")
+ if err != nil {
+ return
+ }
+
+ testStderr, err = ioutil.TempFile("", "")
+ if err != nil {
+ return
+ }
+
+ defStdout = testStdout
+ defStderr = testStderr
+
+ return
+}
+
+func testResetOutput(t *testing.T, truncate bool) {
+ _, err := testStdout.Seek(0, io.SeekStart)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ _, err = testStderr.Seek(0, io.SeekStart)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if truncate {
+ testStdout.Truncate(0)
+ testStderr.Truncate(0)
+ }
+}
+
+func testGitCompareVersion(t *testing.T) {
+ cases := []struct {
+ desc string
+ curVersion string
+ newVersion string
+ expErr string
+ expStdout string
+ expStderr string
+ }{{
+ desc: "With empty versions",
+ }, {
+ desc: "With invalid new version",
+ curVersion: "v0.1.0",
+ newVersion: "abcdef01",
+ expErr: "gitCompareVersion: exit status 128",
+ expStderr: `fatal: ambiguous argument 'v0.1.0...abcdef01': unknown revision or path not in the working tree.
+Use '--' to separate paths from revisions, like this:
+'git <command> [<revision>...] -- [<file>...]'
+`,
+ }, {
+ desc: "With empty on new version",
+ curVersion: "v0.1.0",
+ expStdout: `582b912 Add feature B.
+ec65455 Add feature A.
+`,
+ }, {
+ desc: "With empty on current version #1",
+ newVersion: "v0.1.0",
+ expStdout: `582b912 Add feature B.
+ec65455 Add feature A.
+`,
+ }, {
+ desc: "With empty on current version #2",
+ newVersion: "v0.2.0",
+ }, {
+ desc: "With empty on new version (latest tag)",
+ curVersion: "v0.2.0",
+ }, {
+ desc: "With valid versions",
+ curVersion: "v0.1.0",
+ newVersion: "v0.2.0",
+ expStdout: `582b912 Add feature B.
+ec65455 Add feature A.
+`,
+ }, {
+ desc: "With valid versions, but reversed",
+ curVersion: "v0.2.0",
+ newVersion: "v0.1.0",
+ expStdout: `582b912 Add feature B.
+ec65455 Add feature A.
+`,
+ }}
+
+ var (
+ err error
+ bout, berr []byte
+ stdout, stderr string
+ )
+
+ for _, c := range cases {
+ t.Log(c.desc)
+
+ gitCurPkg.Version = c.curVersion
+ gitNewPkg.Version = c.newVersion
+
+ err = gitCurPkg.CompareVersion(gitNewPkg)
+ if err != nil {
+ test.Assert(t, "err", c.expErr, err.Error(), true)
+ }
+
+ testResetOutput(t, false)
+
+ bout, err = ioutil.ReadAll(defStdout)
+ if err != nil {
+ t.Fatal(err)
+ }
+ berr, err = ioutil.ReadAll(testStderr)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ stdout = string(bout)
+ stderr = string(berr)
+
+ test.Assert(t, "stdout", c.expStdout, stdout, true)
+ test.Assert(t, "stderr", c.expStderr, stderr, true)
+
+ testResetOutput(t, true)
+ }
+}
+
+func TestGit(t *testing.T) {
+ orgGOPATH := build.Default.GOPATH
+
+ testGOPATH, err := os.Getwd()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ testGOPATH += "/testdata"
+ build.Default.GOPATH = testGOPATH
+
+ defer func() {
+ build.Default.GOPATH = orgGOPATH
+ }()
+
+ err = testInitOutput()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ gitCurPkg = NewPackage("git", "git", VCSModeGit)
+ gitNewPkg = NewPackage("git", "git", VCSModeGit)
+
+ t.Logf("gitCurPkg: %+v\n", *gitCurPkg)
+ t.Logf("gitNewPkg: %+v\n", *gitNewPkg)
+
+ t.Run("CompareVersion", testGitCompareVersion)
+}