summaryrefslogtreecommitdiff
path: root/object_test.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2015-08-03 10:56:47 +0200
committerCarlos Martín Nieto <[email protected]>2015-08-03 10:56:47 +0200
commit5d989f2caddad21d0296cd9a6a83cabce88858d5 (patch)
tree6d41733fe6f9333f659849f67b39ff6bf800e7f2 /object_test.go
parentfba081ddbb02dc990c01d51573e3e458fd6b371d (diff)
parent17950c198b0d1495091a5784e454a4ca9800e927 (diff)
Merge pull request #236 from clns/object-peel
Add ability to peel any git object
Diffstat (limited to 'object_test.go')
-rw-r--r--object_test.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/object_test.go b/object_test.go
index aa295e5..ef6c5a1 100644
--- a/object_test.go
+++ b/object_test.go
@@ -102,3 +102,63 @@ func TestObjectOwner(t *testing.T) {
checkOwner(t, repo, commit)
checkOwner(t, repo, tree)
}
+
+func TestObjectPeel(t *testing.T) {
+ repo := createTestRepo(t)
+ defer cleanupTestRepo(t, repo)
+
+ commitID, treeID := seedTestRepo(t, repo)
+
+ var obj Object
+
+ commit, err := repo.LookupCommit(commitID)
+ checkFatal(t, err)
+
+ obj, err = commit.Peel(ObjectAny)
+ checkFatal(t, err)
+
+ if obj.Type() != ObjectTree {
+ t.Fatalf("Wrong object type when peeling a commit, expected tree, have %v", obj.Type())
+ }
+
+ obj, err = commit.Peel(ObjectTag)
+
+ if !IsErrorCode(err, ErrInvalidSpec) {
+ t.Fatalf("Wrong error when peeling a commit to a tag, expected ErrInvalidSpec, have %v", err)
+ }
+
+ tree, err := repo.LookupTree(treeID)
+ checkFatal(t, err)
+
+ obj, err = tree.Peel(ObjectAny)
+
+ if !IsErrorCode(err, ErrInvalidSpec) {
+ t.Fatalf("Wrong error when peeling a tree, expected ErrInvalidSpec, have %v", err)
+ }
+
+ entry := tree.EntryByName("README")
+
+ blob, err := repo.LookupBlob(entry.Id)
+ checkFatal(t, err)
+
+ obj, err = blob.Peel(ObjectAny)
+
+ if !IsErrorCode(err, ErrInvalidSpec) {
+ t.Fatalf("Wrong error when peeling a blob, expected ErrInvalidSpec, have %v", err)
+ }
+
+ tagID := createTestTag(t, repo, commit)
+
+ tag, err := repo.LookupTag(tagID)
+ checkFatal(t, err)
+
+ obj, err = tag.Peel(ObjectAny)
+ checkFatal(t, err)
+
+ if obj.Type() != ObjectCommit {
+ t.Fatalf("Wrong object type when peeling a tag, expected commit, have %v", obj.Type())
+ }
+
+ // TODO: Should test a tag that annotates a different object than a commit
+ // but it's impossible at the moment to tag such an object.
+}