Skip to content

Commit 94e8856

Browse files
committed
Add ConflictCollection.__contains__
1 parent 1e426fa commit 94e8856

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

pygit2/index.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,19 @@ def __delitem__(self, path):
427427
def __iter__(self):
428428
return ConflictIterator(self._index)
429429

430+
def __contains__(self, path):
431+
cancestor = ffi.new('git_index_entry **')
432+
cours = ffi.new('git_index_entry **')
433+
ctheirs = ffi.new('git_index_entry **')
434+
435+
err = C.git_index_conflict_get(cancestor, cours, ctheirs,
436+
self._index._index, to_bytes(path))
437+
if err == C.GIT_ENOTFOUND:
438+
return False
439+
440+
check_error(err)
441+
return True
442+
430443

431444
class ConflictIterator:
432445

test/test_merge.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ def test_merge_no_fastforward_conflicts(mergerepo):
100100
assert mergerepo.index.conflicts is not None
101101
with pytest.raises(KeyError):
102102
mergerepo.index.conflicts.__getitem__('some-file')
103+
assert 'some-file' not in mergerepo.index.conflicts
104+
assert '.gitignore' in mergerepo.index.conflicts
103105

104106
status = pygit2.GIT_STATUS_CONFLICTED
105107
# Asking twice to assure the reference counting is correct
@@ -126,12 +128,14 @@ def test_merge_remove_conflicts(mergerepo):
126128
idx = mergerepo.index
127129
conflicts = idx.conflicts
128130
assert conflicts is not None
131+
assert '.gitignore' in conflicts
129132
try:
130133
conflicts['.gitignore']
131134
except KeyError:
132135
mergerepo.fail("conflicts['.gitignore'] raised KeyError unexpectedly")
133136
del idx.conflicts['.gitignore']
134137
with pytest.raises(KeyError): conflicts.__getitem__('.gitignore')
138+
assert '.gitignore' not in conflicts
135139
assert idx.conflicts is None
136140

137141

0 commit comments

Comments
 (0)