Add support for git_blob_is_binary (#625)

This adds IsBinary() func to Blob struct, which simply returns the result of git_blob_is_binary function.
Refs: https://libgit2.org/libgit2/#HEAD/group/blob/git_blob_is_binary
Issue: Add support for git_blob_is_binary #426

Fixes: #426
This commit is contained in:
Yuichi Watanabe 2020-07-30 21:07:05 +09:00 committed by GitHub
parent d8f9990d4d
commit 462ebd83e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 1 deletions

View File

@ -40,6 +40,12 @@ func (v *Blob) Contents() []byte {
return goBytes 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) { func (repo *Repository) CreateBlobFromBuffer(data []byte) (*Oid, error) {
runtime.LockOSThread() runtime.LockOSThread()
defer runtime.UnlockOSThread() defer runtime.UnlockOSThread()

View File

@ -28,7 +28,21 @@ func TestCreateBlobFromBuffer(t *testing.T) {
t.Fatal("Empty buffer did not deliver empty blob id") 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) id, err = repo.CreateBlobFromBuffer(data)
checkFatal(t, err) checkFatal(t, err)
@ -38,5 +52,9 @@ func TestCreateBlobFromBuffer(t *testing.T) {
t.Fatal("Loaded bytes don't match original bytes:", t.Fatal("Loaded bytes don't match original bytes:",
blob.Contents(), "!=", data) blob.Contents(), "!=", data)
} }
want := tt.isBinary
if got := blob.IsBinary(); got != want {
t.Fatalf("IsBinary() = %v, want %v", got, want)
}
} }
} }