Skip to content

Commit 7d00d84

Browse files
Merge pull request #521 from albertsun/treebuilder-remove-return
Treebuilder remove return
2 parents 44e49b0 + 63620c3 commit 7d00d84

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

ext/rugged/rugged_tree.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -815,8 +815,11 @@ static VALUE rb_git_treebuilder_remove(VALUE self, VALUE path)
815815
Check_Type(path, T_STRING);
816816

817817
error = git_treebuilder_remove(builder, StringValueCStr(path));
818-
if (error == GIT_ENOTFOUND)
818+
if (error == GIT_ENOTFOUND) {
819819
return Qfalse;
820+
} else if (error == GIT_ERROR && giterr_last()->klass == GITERR_TREE) {
821+
return Qfalse;
822+
}
820823

821824
rugged_exception_check(error);
822825
return Qtrue;

test/tree_test.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,17 @@ def test_write_tree_data
130130
assert_equal 38, obj.read_raw.len
131131
end
132132
end
133+
134+
class TreeUpdateTest < Rugged::TestCase
135+
def setup
136+
@source_repo = FixtureRepo.from_rugged("testrepo.git")
137+
@repo = FixtureRepo.clone(@source_repo)
138+
end
139+
140+
def test_treebuilder_remove
141+
builder = Rugged::Tree::Builder.new(@repo, @repo.head.target.tree)
142+
assert_equal builder.remove("new.txt"), true
143+
assert_equal builder.remove("nonexistent file"), false
144+
end
145+
146+
end

0 commit comments

Comments
 (0)