summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--blob.go6
-rw-r--r--blob_test.go20
2 files changed, 25 insertions, 1 deletions
diff --git a/blob.go b/blob.go
index d895449..e8296bb 100644
--- a/blob.go
+++ b/blob.go
@@ -40,6 +40,12 @@ func (v *Blob) Contents() []byte {
return goBytes
}
+func (v *Blob) IsBinary() bool {
+ ret := C.git_blob_is_binary(v.cast_ptr) == 1
+ runtime.KeepAlive(v)
+ return ret
+}
+
func (repo *Repository) CreateBlobFromBuffer(data []byte) (*Oid, error) {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
diff --git a/blob_test.go b/blob_test.go
index 815ab3d..2ab1291 100644
--- a/blob_test.go
+++ b/blob_test.go
@@ -28,7 +28,21 @@ func TestCreateBlobFromBuffer(t *testing.T) {
t.Fatal("Empty buffer did not deliver empty blob id")
}
- for _, data := range []([]byte){[]byte("hello there"), doublePointerBytes()} {
+ tests := []struct {
+ data []byte
+ isBinary bool
+ }{
+ {
+ data: []byte("hello there"),
+ isBinary: false,
+ },
+ {
+ data: doublePointerBytes(),
+ isBinary: true,
+ },
+ }
+ for _, tt := range tests {
+ data := tt.data
id, err = repo.CreateBlobFromBuffer(data)
checkFatal(t, err)
@@ -38,5 +52,9 @@ func TestCreateBlobFromBuffer(t *testing.T) {
t.Fatal("Loaded bytes don't match original bytes:",
blob.Contents(), "!=", data)
}
+ want := tt.isBinary
+ if got := blob.IsBinary(); got != want {
+ t.Fatalf("IsBinary() = %v, want %v", got, want)
+ }
}
}