summaryrefslogtreecommitdiff
path: root/describe_test.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2015-08-31 19:58:29 +0200
committerCarlos Martín Nieto <[email protected]>2015-08-31 19:58:29 +0200
commit6d3a3499f1639a6272e334f9f74b1e0cf6b0bb49 (patch)
tree04b27dfdf1faadcaff6ca40fa27d8edd690045d1 /describe_test.go
parent157593f38da780c4f6cb6dc61275b9b36a3327bf (diff)
parent4090c401c8bf3f062e898f75bde01e2ef27b3911 (diff)
Merge branch 'master-v23'
Diffstat (limited to 'describe_test.go')
-rw-r--r--describe_test.go106
1 files changed, 106 insertions, 0 deletions
diff --git a/describe_test.go b/describe_test.go
new file mode 100644
index 0000000..25af107
--- /dev/null
+++ b/describe_test.go
@@ -0,0 +1,106 @@
+package git
+
+import (
+ "path"
+ "runtime"
+ "strings"
+ "testing"
+)
+
+func TestDescribeCommit(t *testing.T) {
+ repo := createTestRepo(t)
+ defer cleanupTestRepo(t, repo)
+
+ describeOpts, err := DefaultDescribeOptions()
+ checkFatal(t, err)
+
+ formatOpts, err := DefaultDescribeFormatOptions()
+ checkFatal(t, err)
+
+ commitID, _ := seedTestRepo(t, repo)
+
+ commit, err := repo.LookupCommit(commitID)
+ checkFatal(t, err)
+
+ // No annotated tags can be used to describe master
+ _, err = commit.Describe(&describeOpts)
+ checkDescribeNoRefsFound(t, err)
+
+ // Fallback
+ fallback := describeOpts
+ fallback.ShowCommitOidAsFallback = true
+ result, err := commit.Describe(&fallback)
+ checkFatal(t, err)
+ resultStr, err := result.Format(&formatOpts)
+ checkFatal(t, err)
+ compareStrings(t, "473bf77", resultStr)
+
+ // Abbreviated
+ abbreviated := formatOpts
+ abbreviated.AbbreviatedSize = 2
+ result, err = commit.Describe(&fallback)
+ checkFatal(t, err)
+ resultStr, err = result.Format(&abbreviated)
+ checkFatal(t, err)
+ compareStrings(t, "473b", resultStr)
+
+ createTestTag(t, repo, commit)
+
+ // Exact tag
+ patternOpts := describeOpts
+ patternOpts.Pattern = "v[0-9]*"
+ result, err = commit.Describe(&patternOpts)
+ checkFatal(t, err)
+ resultStr, err = result.Format(&formatOpts)
+ checkFatal(t, err)
+ compareStrings(t, "v0.0.0", resultStr)
+
+ // Pattern no match
+ patternOpts.Pattern = "v[1-9]*"
+ result, err = commit.Describe(&patternOpts)
+ checkDescribeNoRefsFound(t, err)
+
+ commitID, _ = updateReadme(t, repo, "update1")
+ commit, err = repo.LookupCommit(commitID)
+ checkFatal(t, err)
+
+ // Tag-1
+ result, err = commit.Describe(&describeOpts)
+ checkFatal(t, err)
+ resultStr, err = result.Format(&formatOpts)
+ checkFatal(t, err)
+ compareStrings(t, "v0.0.0-1-gd88ef8d", resultStr)
+
+ // Strategy: All
+ describeOpts.Strategy = DescribeAll
+ result, err = commit.Describe(&describeOpts)
+ checkFatal(t, err)
+ resultStr, err = result.Format(&formatOpts)
+ checkFatal(t, err)
+ compareStrings(t, "heads/master", resultStr)
+
+ repo.CreateBranch("hotfix", commit, false)
+
+ // Workdir (branch)
+ result, err = repo.DescribeWorkdir(&describeOpts)
+ checkFatal(t, err)
+ resultStr, err = result.Format(&formatOpts)
+ checkFatal(t, err)
+ compareStrings(t, "heads/hotfix", resultStr)
+}
+
+func checkDescribeNoRefsFound(t *testing.T, err error) {
+ // The failure happens at wherever we were called, not here
+ _, file, line, ok := runtime.Caller(1)
+ if !ok {
+ t.Fatalf("Unable to get caller")
+ }
+ if err == nil || !strings.Contains(err.Error(), "No reference found, cannot describe anything") {
+ t.Fatalf(
+ "%s:%v: was expecting error 'No reference found, cannot describe anything', got %v",
+ path.Base(file),
+ line,
+ err,
+ )
+ }
+}