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) + } } }