From ddbe13dab41dba7854b4c4f0c67a9abd9ed8a706 Mon Sep 17 00:00:00 2001 From: Carlos Martín Nieto Date: Wed, 6 Mar 2013 20:07:23 +0100 Subject: Add a test for references --- reference_test.go | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 reference_test.go (limited to 'reference_test.go') diff --git a/reference_test.go b/reference_test.go new file mode 100644 index 0000000..c2da93e --- /dev/null +++ b/reference_test.go @@ -0,0 +1,74 @@ +package git + +import ( + "os" + "runtime" + "testing" + "time" +) + +func TestRefModification(t *testing.T) { + repo := createTestRepo(t) + defer os.RemoveAll(repo.Path()) + + loc, err := time.LoadLocation("Europe/Berlin") + checkFatal(t, err) + sig := &Signature{ + Name: "Rand Om Hacker", + Email: "random@hacker.com", + When: time.Date(2013, 03, 06, 14, 30, 0, 0, loc), + } + + idx, err := repo.Index() + checkFatal(t, err) + err = idx.AddByPath("README") + checkFatal(t, err) + treeId, err := idx.WriteTree() + checkFatal(t, err) + + message := "This is a commit\n" + tree, err := repo.LookupTree(treeId) + checkFatal(t, err) + commitId, err := repo.CreateCommit("HEAD", sig, sig, message, tree) + checkFatal(t, err) + + _, err = repo.CreateReference("refs/tags/tree", treeId, true) + checkFatal(t, err) + + tag, err := repo.LookupReference("refs/tags/tree") + checkFatal(t, err) + checkRefType(t, tag, OID) + + ref, err := repo.LookupReference("HEAD") + checkFatal(t, err) + checkRefType(t, ref, SYMBOLIC) + + ref, err = ref.Resolve() + checkFatal(t, err) + checkRefType(t, ref, OID) + + if commitId.String() != ref.Target().String() { + t.Fatalf("Wrong ref target") + } + + _, err = tag.Rename("refs/tags/renamed", false) + checkFatal(t, err) + tag, err = repo.LookupReference("refs/tags/renamed") + checkFatal(t, err) + checkRefType(t, ref, OID) + +} + +func checkRefType(t *testing.T, ref *Reference, kind int) { + if ref.Type() == kind { + return + } + + // The failure happens at wherever we were called, not here + _, file, line, ok := runtime.Caller(1) + if !ok { + t.Fatal() + } + + t.Fatalf("Wrong ref type at %v:%v; have %v, expected %v", file, line, ref.Type(), kind) +} -- cgit v1.2.3 From d5a5467738f996ac5661611f783ecb588421e7e0 Mon Sep 17 00:00:00 2001 From: Carlos Martín Nieto Date: Wed, 6 Mar 2013 20:10:48 +0100 Subject: Delete the whole test dir --- index_test.go | 2 +- reference_test.go | 2 +- repository.go | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) (limited to 'reference_test.go') diff --git a/index_test.go b/index_test.go index c86c322..fe6fb87 100644 --- a/index_test.go +++ b/index_test.go @@ -23,7 +23,7 @@ func createTestRepo(t *testing.T) *Repository { func TestCreateRepoAndStage(t *testing.T) { repo := createTestRepo(t) - defer os.RemoveAll(repo.Path()) + defer os.RemoveAll(repo.Workdir()) idx, err := repo.Index() checkFatal(t, err) diff --git a/reference_test.go b/reference_test.go index c2da93e..ba32d81 100644 --- a/reference_test.go +++ b/reference_test.go @@ -9,7 +9,7 @@ import ( func TestRefModification(t *testing.T) { repo := createTestRepo(t) - defer os.RemoveAll(repo.Path()) + defer os.RemoveAll(repo.Workdir()) loc, err := time.LoadLocation("Europe/Berlin") checkFatal(t, err) diff --git a/repository.go b/repository.go index 2e53a01..51a2718 100644 --- a/repository.go +++ b/repository.go @@ -217,6 +217,10 @@ func (repo *Repository) Path() string { return C.GoString(C.git_repository_path(repo.ptr)) } +func (repo *Repository) Workdir() string { + return C.GoString(C.git_repository_workdir(repo.ptr)) +} + func (v *Repository) TreeBuilder() (*TreeBuilder, error) { bld := new(TreeBuilder) if ret := C.git_treebuilder_create(&bld.ptr, nil); ret < 0 { -- cgit v1.2.3