summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--git.go4
-rw-r--r--reference_test.go12
2 files changed, 16 insertions, 0 deletions
diff --git a/git.go b/git.go
index 84716e3..68712d4 100644
--- a/git.go
+++ b/git.go
@@ -26,6 +26,10 @@ type Oid struct {
}
func newOidFromC(coid *C.git_oid) *Oid {
+ if coid == nil {
+ return nil
+ }
+
oid := new(Oid)
copy(oid.bytes[0:20], C.GoBytes(unsafe.Pointer(coid), 20))
return oid
diff --git a/reference_test.go b/reference_test.go
index ba32d81..8043833 100644
--- a/reference_test.go
+++ b/reference_test.go
@@ -43,10 +43,22 @@ func TestRefModification(t *testing.T) {
checkFatal(t, err)
checkRefType(t, ref, SYMBOLIC)
+ if target := ref.Target(); target != nil {
+ t.Fatalf("Expected nil *Oid, got %v", target)
+ }
+
ref, err = ref.Resolve()
checkFatal(t, err)
checkRefType(t, ref, OID)
+ if target := ref.Target(); target == nil {
+ t.Fatalf("Expected valid target got nil")
+ }
+
+ if target := ref.SymbolicTarget(); target != "" {
+ t.Fatalf("Expected empty string, got %v", target)
+ }
+
if commitId.String() != ref.Target().String() {
t.Fatalf("Wrong ref target")
}