diff --git a/dictdiffer/unify.py b/dictdiffer/unify.py index 6bac345..4950834 100644 --- a/dictdiffer/unify.py +++ b/dictdiffer/unify.py @@ -37,7 +37,8 @@ def unify(self, first_patches, second_patches, conflicts): if conflict.take_patch() != patch: continue - self.unified_patches.append(patch) + if patch not in self.unified_patches: + self.unified_patches.append(patch) return self.unified_patches diff --git a/tests/test_unify.py b/tests/test_unify.py index 9e9c701..d8c4d36 100644 --- a/tests/test_unify.py +++ b/tests/test_unify.py @@ -40,3 +40,15 @@ def test_unify(self): u.unify([p1], [p2], [c]) self.assertEqual(u.unified_patches, [p1]) + + def test_unify_duplicate_patches(self): + u = Unifier() + + p1 = ('remove', '', [('a', 'b')]) + p2 = ('remove', '', [('a', 'b')]) + c = Conflict(p1, p2) + c.take = 'f' + + u.unify([p1], [p2], [c]) + + self.assertEqual(u.unified_patches, [p1])