File tree 2 files changed +22
-3
lines changed
2 files changed +22
-3
lines changed Original file line number Diff line number Diff line change @@ -191,14 +191,26 @@ Tree_len(Tree *self)
191
191
int
192
192
Tree_contains (Tree * self , PyObject * py_name )
193
193
{
194
- int result = 0 ;
194
+ int err ;
195
+ git_tree_entry * entry ;
195
196
char * name = py_path_to_c_str (py_name );
196
197
if (name == NULL )
197
198
return -1 ;
198
199
199
- result = git_tree_entry_byname ( self -> tree , name ) ? 1 : 0 ;
200
+ err = git_tree_entry_bypath ( & entry , self -> tree , name );
200
201
free (name );
201
- return result ;
202
+
203
+ if (err == GIT_ENOTFOUND )
204
+ return 0 ;
205
+
206
+ if (err < 0 ) {
207
+ Error_set (err );
208
+ return -1 ;
209
+ }
210
+
211
+ git_tree_entry_free (entry );
212
+
213
+ return 1 ;
202
214
}
203
215
204
216
TreeEntry *
Original file line number Diff line number Diff line change @@ -120,6 +120,13 @@ def test_iterate_tree(self):
120
120
for tree_entry in tree :
121
121
self .assertEqual (tree_entry , tree [tree_entry .name ])
122
122
123
+ def test_deep_contains (self ):
124
+ tree = self .repo [TREE_SHA ]
125
+ self .assertTrue ('a' in tree )
126
+ self .assertTrue ('c' in tree )
127
+ self .assertTrue ('c/d' in tree )
128
+ self .assertFalse ('c/e' in tree )
129
+ self .assertFalse ('d' in tree )
123
130
124
131
if __name__ == '__main__' :
125
132
unittest .main ()
You can’t perform that action at this time.
0 commit comments