summaryrefslogtreecommitdiff
path: root/cherrypick_test.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2015-03-15 01:09:11 +0100
committerCarlos Martín Nieto <[email protected]>2015-03-15 01:09:11 +0100
commit137c4fc3c838a803dddeb2855e726fc30713fdea (patch)
treecc2bbc371b93ed92d4b2f3a1abc2a62d6d578277 /cherrypick_test.go
parent063bed33a90e7d5b1ece1b6bd1aba04a69a78a28 (diff)
parent76d600f7b3633f78e5f1433c16eba4eddfdad3e0 (diff)
Merge branch 'master' into v22
Diffstat (limited to 'cherrypick_test.go')
-rw-r--r--cherrypick_test.go83
1 files changed, 83 insertions, 0 deletions
diff --git a/cherrypick_test.go b/cherrypick_test.go
new file mode 100644
index 0000000..f06dbdd
--- /dev/null
+++ b/cherrypick_test.go
@@ -0,0 +1,83 @@
+package git
+
+import (
+ "io/ioutil"
+ "testing"
+)
+
+func checkout(t *testing.T, repo *Repository, commit *Commit) {
+ tree, err := commit.Tree()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ err = repo.CheckoutTree(tree, &CheckoutOpts{Strategy: CheckoutSafe})
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ err = repo.SetHeadDetached(commit.Id(), commit.Author(), "checkout")
+ if err != nil {
+ t.Fatal(err)
+ }
+}
+
+const content = "Herro, Worrd!"
+
+func readReadme(t *testing.T, repo *Repository) string {
+ bytes, err := ioutil.ReadFile(pathInRepo(repo, "README"))
+ if err != nil {
+ t.Fatal(err)
+ }
+ return string(bytes)
+}
+
+func TestCherrypick(t *testing.T) {
+ repo := createTestRepo(t)
+ c1, _ := seedTestRepo(t, repo)
+ c2, _ := updateReadme(t, repo, content)
+
+ commit1, err := repo.LookupCommit(c1)
+ if err != nil {
+ t.Fatal(err)
+ }
+ commit2, err := repo.LookupCommit(c2)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ checkout(t, repo, commit1)
+
+ if readReadme(t, repo) == content {
+ t.Fatalf("README has wrong content after checking out initial commit")
+ }
+
+ opts, err := DefaultCherrypickOptions()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ err = repo.Cherrypick(commit2, opts)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if readReadme(t, repo) != content {
+ t.Fatalf("README has wrong contents after cherry-picking")
+ }
+
+ state := repo.State()
+ if state != RepositoryStateCherrypick {
+ t.Fatal("Incorrect repository state: ", state)
+ }
+
+ err = repo.StateCleanup()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ state = repo.State()
+ if state != RepositoryStateNone {
+ t.Fatal("Incorrect repository state: ", state)
+ }
+}