Skip to content

Commit 090dc7e

Browse files
committed
Use Filemode in TreeBuilder.Insert, and add test coverage for some
TreeBuilder methods.
1 parent aa59dcc commit 090dc7e

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

tree.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func (v *TreeBuilder) Free() {
149149
C.git_treebuilder_free(v.ptr)
150150
}
151151

152-
func (v *TreeBuilder) Insert(filename string, id *Oid, filemode int) error {
152+
func (v *TreeBuilder) Insert(filename string, id *Oid, filemode Filemode) error {
153153
cfilename := C.CString(filename)
154154
defer C.free(unsafe.Pointer(cfilename))
155155

tree_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,44 @@ func TestTreeEntryById(t *testing.T) {
2020
t.Fatalf("entry id %v was not found", id)
2121
}
2222
}
23+
24+
func TestTreeBuilderInsert(t *testing.T) {
25+
repo := createTestRepo(t)
26+
defer cleanupTestRepo(t, repo)
27+
28+
subTree, err := repo.TreeBuilder()
29+
if err != nil {
30+
t.Fatalf("TreeBuilder: %v", err)
31+
}
32+
defer subTree.Free()
33+
34+
odb, err := repo.Odb()
35+
if err != nil {
36+
t.Fatalf("repo.Odb: %v", err)
37+
}
38+
blobId, err := odb.Write([]byte("hello"), ObjectBlob)
39+
if err != nil {
40+
t.Fatalf("odb.Write: %v", err)
41+
}
42+
if err = subTree.Insert("subfile", blobId, FilemodeBlobExecutable); err != nil {
43+
t.Fatalf("TreeBuilder.Insert: %v", err)
44+
}
45+
treeID, err := subTree.Write()
46+
if err != nil {
47+
t.Fatalf("TreeBuilder.Write: %v", err)
48+
}
49+
50+
tree, err := repo.LookupTree(treeID)
51+
if err != nil {
52+
t.Fatalf("LookupTree: %v", err)
53+
}
54+
55+
entry, err := tree.EntryByPath("subfile")
56+
if err != nil {
57+
t.Fatalf("tree.EntryByPath(%q): %v", "subfile", err)
58+
}
59+
60+
if !entry.Id.Equal(blobId) {
61+
t.Fatalf("got oid %v, want %v", entry.Id, blobId)
62+
}
63+
}

0 commit comments

Comments
 (0)