diff options
| author | Carlos Martín Nieto <[email protected]> | 2015-03-15 01:09:11 +0100 |
|---|---|---|
| committer | Carlos Martín Nieto <[email protected]> | 2015-03-15 01:09:11 +0100 |
| commit | 137c4fc3c838a803dddeb2855e726fc30713fdea (patch) | |
| tree | cc2bbc371b93ed92d4b2f3a1abc2a62d6d578277 /cherrypick_test.go | |
| parent | 063bed33a90e7d5b1ece1b6bd1aba04a69a78a28 (diff) | |
| parent | 76d600f7b3633f78e5f1433c16eba4eddfdad3e0 (diff) | |
Merge branch 'master' into v22
Diffstat (limited to 'cherrypick_test.go')
| -rw-r--r-- | cherrypick_test.go | 83 |
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) + } +} |
