Merge remote-tracking branch 'carlos/tree-deep-search'

This commit is contained in:
J. David Ibáñez 2014-01-20 10:48:23 +01:00
commit b27b10eb56
2 changed files with 22 additions and 3 deletions

@ -191,14 +191,26 @@ Tree_len(Tree *self)
int
Tree_contains(Tree *self, PyObject *py_name)
{
int result = 0;
int err;
git_tree_entry *entry;
char *name = py_path_to_c_str(py_name);
if (name == NULL)
return -1;
result = git_tree_entry_byname(self->tree, name) ? 1 : 0;
err = git_tree_entry_bypath(&entry, self->tree, name);
free(name);
return result;
if (err == GIT_ENOTFOUND)
return 0;
if (err < 0) {
Error_set(err);
return -1;
}
git_tree_entry_free(entry);
return 1;
}
TreeEntry *

@ -120,6 +120,13 @@ class TreeTest(utils.BareRepoTestCase):
for tree_entry in tree:
self.assertEqual(tree_entry, tree[tree_entry.name])
def test_deep_contains(self):
tree = self.repo[TREE_SHA]
self.assertTrue('a' in tree)
self.assertTrue('c' in tree)
self.assertTrue('c/d' in tree)
self.assertFalse('c/e' in tree)
self.assertFalse('d' in tree)
if __name__ == '__main__':
unittest.main()