Use Filemode in TreeBuilder.Insert, and add test coverage for some

TreeBuilder methods.
This commit is contained in:
Han-Wen Nienhuys 2016-01-27 18:11:12 +01:00
parent aa59dccea7
commit 090dc7ee39
2 changed files with 42 additions and 1 deletions

View File

@ -149,7 +149,7 @@ func (v *TreeBuilder) Free() {
C.git_treebuilder_free(v.ptr)
}
func (v *TreeBuilder) Insert(filename string, id *Oid, filemode int) error {
func (v *TreeBuilder) Insert(filename string, id *Oid, filemode Filemode) error {
cfilename := C.CString(filename)
defer C.free(unsafe.Pointer(cfilename))

View File

@ -20,3 +20,44 @@ func TestTreeEntryById(t *testing.T) {
t.Fatalf("entry id %v was not found", id)
}
}
func TestTreeBuilderInsert(t *testing.T) {
repo := createTestRepo(t)
defer cleanupTestRepo(t, repo)
subTree, err := repo.TreeBuilder()
if err != nil {
t.Fatalf("TreeBuilder: %v", err)
}
defer subTree.Free()
odb, err := repo.Odb()
if err != nil {
t.Fatalf("repo.Odb: %v", err)
}
blobId, err := odb.Write([]byte("hello"), ObjectBlob)
if err != nil {
t.Fatalf("odb.Write: %v", err)
}
if err = subTree.Insert("subfile", blobId, FilemodeBlobExecutable); err != nil {
t.Fatalf("TreeBuilder.Insert: %v", err)
}
treeID, err := subTree.Write()
if err != nil {
t.Fatalf("TreeBuilder.Write: %v", err)
}
tree, err := repo.LookupTree(treeID)
if err != nil {
t.Fatalf("LookupTree: %v", err)
}
entry, err := tree.EntryByPath("subfile")
if err != nil {
t.Fatalf("tree.EntryByPath(%q): %v", "subfile", err)
}
if !entry.Id.Equal(blobId) {
t.Fatalf("got oid %v, want %v", entry.Id, blobId)
}
}