The former is deprecated. No functionality change.
- skip-blame just removing an ess and some whitespace
indygreg |
hg-reviewers |
The former is deprecated. No functionality change.
Lint Skipped |
Unit Tests Skipped |
Path | Packages | |||
---|---|---|---|---|
M | tests/test-simplemerge.py (164 lines) |
Commit | Parents | Author | Summary | Date |
---|---|---|---|---|
Augie Fackler | Apr 27 2018, 10:21 AM |
Status | Author | Revision | |
---|---|---|---|
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 | ||
Closed | durin42 |
pass | pass | ||||
def test_no_changes(self): | def test_no_changes(self): | ||||
"""No conflicts because nothing changed""" | """No conflicts because nothing changed""" | ||||
m3 = Merge3(['aaa', 'bbb'], | m3 = Merge3(['aaa', 'bbb'], | ||||
['aaa', 'bbb'], | ['aaa', 'bbb'], | ||||
['aaa', 'bbb']) | ['aaa', 'bbb']) | ||||
self.assertEquals(m3.find_unconflicted(), | self.assertEqual(m3.find_unconflicted(), | ||||
[(0, 2)]) | [(0, 2)]) | ||||
self.assertEquals(list(m3.find_sync_regions()), | self.assertEqual(list(m3.find_sync_regions()), | ||||
[(0, 2, | [(0, 2, | ||||
0, 2, | 0, 2, | ||||
0, 2), | 0, 2), | ||||
(2, 2, 2, 2, 2, 2)]) | (2, 2, 2, 2, 2, 2)]) | ||||
self.assertEquals(list(m3.merge_regions()), | self.assertEqual(list(m3.merge_regions()), | ||||
[('unchanged', 0, 2)]) | [('unchanged', 0, 2)]) | ||||
self.assertEquals(list(m3.merge_groups()), | self.assertEqual(list(m3.merge_groups()), | ||||
[('unchanged', ['aaa', 'bbb'])]) | [('unchanged', ['aaa', 'bbb'])]) | ||||
def test_front_insert(self): | def test_front_insert(self): | ||||
m3 = Merge3(['zz'], | m3 = Merge3(['zz'], | ||||
['aaa', 'bbb', 'zz'], | ['aaa', 'bbb', 'zz'], | ||||
['zz']) | ['zz']) | ||||
# todo: should use a sentinel at end as from get_matching_blocks | # todo: should use a sentinel at end as from get_matching_blocks | ||||
# to match without zz | # to match without zz | ||||
self.assertEquals(list(m3.find_sync_regions()), | self.assertEqual(list(m3.find_sync_regions()), | ||||
[(0, 1, 2, 3, 0, 1), | [(0, 1, 2, 3, 0, 1), | ||||
(1, 1, 3, 3, 1, 1)]) | (1, 1, 3, 3, 1, 1)]) | ||||
self.assertEquals(list(m3.merge_regions()), | self.assertEqual(list(m3.merge_regions()), | ||||
[('a', 0, 2), | [('a', 0, 2), | ||||
('unchanged', 0, 1)]) | ('unchanged', 0, 1)]) | ||||
self.assertEquals(list(m3.merge_groups()), | self.assertEqual(list(m3.merge_groups()), | ||||
[('a', ['aaa', 'bbb']), | [('a', ['aaa', 'bbb']), | ||||
('unchanged', ['zz'])]) | ('unchanged', ['zz'])]) | ||||
def test_null_insert(self): | def test_null_insert(self): | ||||
m3 = Merge3([], | m3 = Merge3([], | ||||
['aaa', 'bbb'], | ['aaa', 'bbb'], | ||||
[]) | []) | ||||
# todo: should use a sentinel at end as from get_matching_blocks | # todo: should use a sentinel at end as from get_matching_blocks | ||||
# to match without zz | # to match without zz | ||||
self.assertEquals(list(m3.find_sync_regions()), | self.assertEqual(list(m3.find_sync_regions()), | ||||
[(0, 0, 2, 2, 0, 0)]) | [(0, 0, 2, 2, 0, 0)]) | ||||
self.assertEquals(list(m3.merge_regions()), | self.assertEqual(list(m3.merge_regions()), | ||||
[('a', 0, 2)]) | [('a', 0, 2)]) | ||||
self.assertEquals(list(m3.merge_lines()), | self.assertEqual(list(m3.merge_lines()), | ||||
['aaa', 'bbb']) | ['aaa', 'bbb']) | ||||
def test_no_conflicts(self): | def test_no_conflicts(self): | ||||
"""No conflicts because only one side changed""" | """No conflicts because only one side changed""" | ||||
m3 = Merge3(['aaa', 'bbb'], | m3 = Merge3(['aaa', 'bbb'], | ||||
['aaa', '111', 'bbb'], | ['aaa', '111', 'bbb'], | ||||
['aaa', 'bbb']) | ['aaa', 'bbb']) | ||||
self.assertEquals(m3.find_unconflicted(), | self.assertEqual(m3.find_unconflicted(), | ||||
[(0, 1), (1, 2)]) | [(0, 1), (1, 2)]) | ||||
self.assertEquals(list(m3.find_sync_regions()), | self.assertEqual(list(m3.find_sync_regions()), | ||||
[(0, 1, 0, 1, 0, 1), | [(0, 1, 0, 1, 0, 1), | ||||
(1, 2, 2, 3, 1, 2), | (1, 2, 2, 3, 1, 2), | ||||
(2, 2, 3, 3, 2, 2)]) | (2, 2, 3, 3, 2, 2)]) | ||||
self.assertEquals(list(m3.merge_regions()), | self.assertEqual(list(m3.merge_regions()), | ||||
[('unchanged', 0, 1), | [('unchanged', 0, 1), | ||||
('a', 1, 2), | ('a', 1, 2), | ||||
('unchanged', 1, 2)]) | ('unchanged', 1, 2)]) | ||||
def test_append_a(self): | def test_append_a(self): | ||||
m3 = Merge3(['aaa\n', 'bbb\n'], | m3 = Merge3(['aaa\n', 'bbb\n'], | ||||
['aaa\n', 'bbb\n', '222\n'], | ['aaa\n', 'bbb\n', '222\n'], | ||||
['aaa\n', 'bbb\n']) | ['aaa\n', 'bbb\n']) | ||||
self.assertEquals(''.join(m3.merge_lines()), | self.assertEqual(''.join(m3.merge_lines()), | ||||
'aaa\nbbb\n222\n') | 'aaa\nbbb\n222\n') | ||||
def test_append_b(self): | def test_append_b(self): | ||||
m3 = Merge3(['aaa\n', 'bbb\n'], | m3 = Merge3(['aaa\n', 'bbb\n'], | ||||
['aaa\n', 'bbb\n'], | ['aaa\n', 'bbb\n'], | ||||
['aaa\n', 'bbb\n', '222\n']) | ['aaa\n', 'bbb\n', '222\n']) | ||||
self.assertEquals(''.join(m3.merge_lines()), | self.assertEqual(''.join(m3.merge_lines()), | ||||
'aaa\nbbb\n222\n') | 'aaa\nbbb\n222\n') | ||||
def test_append_agreement(self): | def test_append_agreement(self): | ||||
m3 = Merge3(['aaa\n', 'bbb\n'], | m3 = Merge3(['aaa\n', 'bbb\n'], | ||||
['aaa\n', 'bbb\n', '222\n'], | ['aaa\n', 'bbb\n', '222\n'], | ||||
['aaa\n', 'bbb\n', '222\n']) | ['aaa\n', 'bbb\n', '222\n']) | ||||
self.assertEquals(''.join(m3.merge_lines()), | self.assertEqual(''.join(m3.merge_lines()), | ||||
'aaa\nbbb\n222\n') | 'aaa\nbbb\n222\n') | ||||
def test_append_clash(self): | def test_append_clash(self): | ||||
m3 = Merge3(['aaa\n', 'bbb\n'], | m3 = Merge3(['aaa\n', 'bbb\n'], | ||||
['aaa\n', 'bbb\n', '222\n'], | ['aaa\n', 'bbb\n', '222\n'], | ||||
['aaa\n', 'bbb\n', '333\n']) | ['aaa\n', 'bbb\n', '333\n']) | ||||
ml = m3.merge_lines(name_a='a', | ml = m3.merge_lines(name_a='a', | ||||
name_b='b', | name_b='b', | ||||
start_marker='<<', | start_marker='<<', | ||||
mid_marker='--', | mid_marker='--', | ||||
end_marker='>>') | end_marker='>>') | ||||
self.assertEquals(''.join(ml), | self.assertEqual(''.join(ml), | ||||
'aaa\n' | 'aaa\n' | ||||
'bbb\n' | 'bbb\n' | ||||
'<< a\n' | '<< a\n' | ||||
'222\n' | '222\n' | ||||
'--\n' | '--\n' | ||||
'333\n' | '333\n' | ||||
'>> b\n' | '>> b\n' | ||||
) | ) | ||||
def test_insert_agreement(self): | def test_insert_agreement(self): | ||||
m3 = Merge3(['aaa\n', 'bbb\n'], | m3 = Merge3(['aaa\n', 'bbb\n'], | ||||
['aaa\n', '222\n', 'bbb\n'], | ['aaa\n', '222\n', 'bbb\n'], | ||||
['aaa\n', '222\n', 'bbb\n']) | ['aaa\n', '222\n', 'bbb\n']) | ||||
ml = m3.merge_lines(name_a='a', | ml = m3.merge_lines(name_a='a', | ||||
name_b='b', | name_b='b', | ||||
start_marker='<<', | start_marker='<<', | ||||
mid_marker='--', | mid_marker='--', | ||||
end_marker='>>') | end_marker='>>') | ||||
self.assertEquals(''.join(ml), 'aaa\n222\nbbb\n') | self.assertEqual(''.join(ml), 'aaa\n222\nbbb\n') | ||||
def test_insert_clash(self): | def test_insert_clash(self): | ||||
"""Both try to insert lines in the same place.""" | """Both try to insert lines in the same place.""" | ||||
m3 = Merge3(['aaa\n', 'bbb\n'], | m3 = Merge3(['aaa\n', 'bbb\n'], | ||||
['aaa\n', '111\n', 'bbb\n'], | ['aaa\n', '111\n', 'bbb\n'], | ||||
['aaa\n', '222\n', 'bbb\n']) | ['aaa\n', '222\n', 'bbb\n']) | ||||
self.assertEquals(m3.find_unconflicted(), | self.assertEqual(m3.find_unconflicted(), | ||||
[(0, 1), (1, 2)]) | [(0, 1), (1, 2)]) | ||||
self.assertEquals(list(m3.find_sync_regions()), | self.assertEqual(list(m3.find_sync_regions()), | ||||
[(0, 1, 0, 1, 0, 1), | [(0, 1, 0, 1, 0, 1), | ||||
(1, 2, 2, 3, 2, 3), | (1, 2, 2, 3, 2, 3), | ||||
(2, 2, 3, 3, 3, 3)]) | (2, 2, 3, 3, 3, 3)]) | ||||
self.assertEquals(list(m3.merge_regions()), | self.assertEqual(list(m3.merge_regions()), | ||||
[('unchanged', 0, 1), | [('unchanged', 0, 1), | ||||
('conflict', 1, 1, 1, 2, 1, 2), | ('conflict', 1, 1, 1, 2, 1, 2), | ||||
('unchanged', 1, 2)]) | ('unchanged', 1, 2)]) | ||||
self.assertEquals(list(m3.merge_groups()), | self.assertEqual(list(m3.merge_groups()), | ||||
[('unchanged', ['aaa\n']), | [('unchanged', ['aaa\n']), | ||||
('conflict', [], ['111\n'], ['222\n']), | ('conflict', [], ['111\n'], ['222\n']), | ||||
('unchanged', ['bbb\n']), | ('unchanged', ['bbb\n']), | ||||
]) | ]) | ||||
ml = m3.merge_lines(name_a='a', | ml = m3.merge_lines(name_a='a', | ||||
name_b='b', | name_b='b', | ||||
start_marker='<<', | start_marker='<<', | ||||
mid_marker='--', | mid_marker='--', | ||||
end_marker='>>') | end_marker='>>') | ||||
self.assertEquals(''.join(ml), | self.assertEqual(''.join(ml), | ||||
'''aaa | '''aaa | ||||
<< a | << a | ||||
111 | 111 | ||||
-- | -- | ||||
222 | 222 | ||||
>> b | >> b | ||||
bbb | bbb | ||||
''') | ''') | ||||
def test_replace_clash(self): | def test_replace_clash(self): | ||||
"""Both try to insert lines in the same place.""" | """Both try to insert lines in the same place.""" | ||||
m3 = Merge3(['aaa', '000', 'bbb'], | m3 = Merge3(['aaa', '000', 'bbb'], | ||||
['aaa', '111', 'bbb'], | ['aaa', '111', 'bbb'], | ||||
['aaa', '222', 'bbb']) | ['aaa', '222', 'bbb']) | ||||
self.assertEquals(m3.find_unconflicted(), | self.assertEqual(m3.find_unconflicted(), | ||||
[(0, 1), (2, 3)]) | [(0, 1), (2, 3)]) | ||||
self.assertEquals(list(m3.find_sync_regions()), | self.assertEqual(list(m3.find_sync_regions()), | ||||
[(0, 1, 0, 1, 0, 1), | [(0, 1, 0, 1, 0, 1), | ||||
(2, 3, 2, 3, 2, 3), | (2, 3, 2, 3, 2, 3), | ||||
(3, 3, 3, 3, 3, 3)]) | (3, 3, 3, 3, 3, 3)]) | ||||
def test_replace_multi(self): | def test_replace_multi(self): | ||||
"""Replacement with regions of different size.""" | """Replacement with regions of different size.""" | ||||
m3 = Merge3(['aaa', '000', '000', 'bbb'], | m3 = Merge3(['aaa', '000', '000', 'bbb'], | ||||
['aaa', '111', '111', '111', 'bbb'], | ['aaa', '111', '111', '111', 'bbb'], | ||||
['aaa', '222', '222', '222', '222', 'bbb']) | ['aaa', '222', '222', '222', '222', 'bbb']) | ||||
self.assertEquals(m3.find_unconflicted(), | self.assertEqual(m3.find_unconflicted(), | ||||
[(0, 1), (3, 4)]) | [(0, 1), (3, 4)]) | ||||
self.assertEquals(list(m3.find_sync_regions()), | self.assertEqual(list(m3.find_sync_regions()), | ||||
[(0, 1, 0, 1, 0, 1), | [(0, 1, 0, 1, 0, 1), | ||||
(3, 4, 4, 5, 5, 6), | (3, 4, 4, 5, 5, 6), | ||||
(4, 4, 5, 5, 6, 6)]) | (4, 4, 5, 5, 6, 6)]) | ||||
def test_merge_poem(self): | def test_merge_poem(self): | ||||
"""Test case from diff3 manual""" | """Test case from diff3 manual""" | ||||
m3 = Merge3(TZU, LAO, TAO) | m3 = Merge3(TZU, LAO, TAO) | ||||
ml = list(m3.merge_lines('LAO', 'TAO')) | ml = list(m3.merge_lines('LAO', 'TAO')) | ||||
self.log('merge result:') | self.log('merge result:') | ||||
self.log(''.join(ml)) | self.log(''.join(ml)) | ||||
self.assertEquals(ml, MERGED_RESULT) | self.assertEqual(ml, MERGED_RESULT) | ||||
def test_binary(self): | def test_binary(self): | ||||
with self.assertRaises(error.Abort): | with self.assertRaises(error.Abort): | ||||
Merge3(['\x00'], ['a'], ['b']) | Merge3(['\x00'], ['a'], ['b']) | ||||
def test_dos_text(self): | def test_dos_text(self): | ||||
base_text = 'a\r\n' | base_text = 'a\r\n' | ||||
this_text = 'b\r\n' | this_text = 'b\r\n' | ||||
other_text = 'c\r\n' | other_text = 'c\r\n' | ||||
m3 = Merge3(base_text.splitlines(True), other_text.splitlines(True), | m3 = Merge3(base_text.splitlines(True), other_text.splitlines(True), | ||||
this_text.splitlines(True)) | this_text.splitlines(True)) | ||||
m_lines = m3.merge_lines('OTHER', 'THIS') | m_lines = m3.merge_lines('OTHER', 'THIS') | ||||
self.assertEqual('<<<<<<< OTHER\r\nc\r\n=======\r\nb\r\n' | self.assertEqual('<<<<<<< OTHER\r\nc\r\n=======\r\nb\r\n' | ||||
'>>>>>>> THIS\r\n'.splitlines(True), list(m_lines)) | '>>>>>>> THIS\r\n'.splitlines(True), list(m_lines)) | ||||
def test_mac_text(self): | def test_mac_text(self): | ||||
base_text = 'a\r' | base_text = 'a\r' | ||||
this_text = 'b\r' | this_text = 'b\r' | ||||
other_text = 'c\r' | other_text = 'c\r' | ||||
m3 = Merge3(base_text.splitlines(True), other_text.splitlines(True), | m3 = Merge3(base_text.splitlines(True), other_text.splitlines(True), | ||||
this_text.splitlines(True)) | this_text.splitlines(True)) | ||||
m_lines = m3.merge_lines('OTHER', 'THIS') | m_lines = m3.merge_lines('OTHER', 'THIS') | ||||
self.assertEqual('<<<<<<< OTHER\rc\r=======\rb\r' | self.assertEqual('<<<<<<< OTHER\rc\r=======\rb\r' | ||||
'>>>>>>> THIS\r'.splitlines(True), list(m_lines)) | '>>>>>>> THIS\r'.splitlines(True), list(m_lines)) | ||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
# hide the timer | # hide the timer | ||||
import time | import time | ||||
orig = time.time | orig = time.time | ||||
try: | try: | ||||
time.time = lambda: 0 | time.time = lambda: 0 | ||||
unittest.main() | unittest.main() | ||||
finally: | finally: | ||||
time.time = orig | time.time = orig |