From a140f2310f56eb06d37454514e67647a8a49d197 Mon Sep 17 00:00:00 2001 From: lhchavez Date: Sun, 23 Feb 2020 14:58:21 +0000 Subject: [PATCH] Add test and runtime.KeepAlive() --- merge.go | 19 +++++++++++++++---- merge_test.go | 21 +++++++++++++++++++++ 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/merge.go b/merge.go index ab30fb2..06e98a0 100644 --- a/merge.go +++ b/merge.go @@ -58,7 +58,9 @@ func (r *Repository) AnnotatedCommitFromFetchHead(branchName string, remoteURL s return nil, MakeGitError(ret) } - return newAnnotatedCommitFromC(ptr, r), nil + annotatedCommit := newAnnotatedCommitFromC(ptr, r) + runtime.KeepAlive(r) + return annotatedCommit, nil } func (r *Repository) LookupAnnotatedCommit(oid *Oid) (*AnnotatedCommit, error) { @@ -71,7 +73,10 @@ func (r *Repository) LookupAnnotatedCommit(oid *Oid) (*AnnotatedCommit, error) { if ret < 0 { return nil, MakeGitError(ret) } - return newAnnotatedCommitFromC(ptr, r), nil + + annotatedCommit := newAnnotatedCommitFromC(ptr, r) + runtime.KeepAlive(r) + return annotatedCommit, nil } func (r *Repository) AnnotatedCommitFromRef(ref *Reference) (*AnnotatedCommit, error) { @@ -85,7 +90,10 @@ func (r *Repository) AnnotatedCommitFromRef(ref *Reference) (*AnnotatedCommit, e if ret < 0 { return nil, MakeGitError(ret) } - return newAnnotatedCommitFromC(ptr, r), nil + + annotatedCommit := newAnnotatedCommitFromC(ptr, r) + runtime.KeepAlive(r) + return annotatedCommit, nil } func (r *Repository) AnnotatedCommitFromRevspec(spec string) (*AnnotatedCommit, error) { @@ -101,7 +109,10 @@ func (r *Repository) AnnotatedCommitFromRevspec(spec string) (*AnnotatedCommit, if ret < 0 { return nil, MakeGitError(ret) } - return newAnnotatedCommitFromC(ptr, r), nil + + annotatedCommit := newAnnotatedCommitFromC(ptr, r) + runtime.KeepAlive(r) + return annotatedCommit, nil } type MergeTreeFlag int diff --git a/merge_test.go b/merge_test.go index f2c84bc..7cf034f 100644 --- a/merge_test.go +++ b/merge_test.go @@ -5,6 +5,22 @@ import ( "time" ) +func TestAnnotatedCommitFromRevspec(t *testing.T) { + t.Parallel() + repo := createTestRepo(t) + defer cleanupTestRepo(t, repo) + + seedTestRepo(t, repo) + + mergeHead, err := repo.AnnotatedCommitFromRevspec("refs/heads/master") + checkFatal(t, err) + + expectedId := "473bf778b67b6d53e2ab289e0f1a2e8addef2fc2" + if mergeHead.Id().String() != expectedId { + t.Errorf("mergeHead.Id() = %v, want %v", mergeHead.Id(), expectedId) + } +} + func TestMergeWithSelf(t *testing.T) { t.Parallel() repo := createTestRepo(t) @@ -18,6 +34,11 @@ func TestMergeWithSelf(t *testing.T) { mergeHead, err := repo.AnnotatedCommitFromRef(master) checkFatal(t, err) + expectedId := "473bf778b67b6d53e2ab289e0f1a2e8addef2fc2" + if mergeHead.Id().String() != expectedId { + t.Errorf("mergeHead.Id() = %v, want %v", mergeHead.Id(), expectedId) + } + mergeHeads := make([]*AnnotatedCommit, 1) mergeHeads[0] = mergeHead err = repo.Merge(mergeHeads, nil, nil)