36
from ..conflicts import ConflictList, TextConflict
36
from ..conflicts import ConflictList
37
from ..bzr.conflicts import TextConflict, MissingParent, UnversionedParent, DeletingParent, ContentsConflict
37
38
from ..errors import UnrelatedBranches, NoCommits
38
39
from ..merge import transform_tree, merge_inner, _PlanMerge
39
40
from ..osutils import basename, pathjoin, file_kind
134
135
this_branch=wt.branch,
136
137
with merger.make_preview_transform() as tt:
137
self.assertEqual([], tt.find_conflicts())
138
self.assertEqual([], tt.find_raw_conflicts())
138
139
preview = tt.get_preview_tree()
139
140
self.assertEqual(wt.path2id(''), preview.path2id(''))
198
199
def test_merge_inner_conflicts(self):
199
200
tree_a = self.make_branch_and_tree('a')
200
tree_a.set_conflicts(ConflictList([TextConflict('patha')]))
201
tree_a.set_conflicts([TextConflict('patha')])
201
202
merge_inner(tree_a.branch, tree_a, tree_a, this_tree=tree_a)
202
203
self.assertEqual(1, len(tree_a.conflicts()))
219
220
tree_z.commit('removed b')
220
221
merge_inner(tree_z.branch, tree_a, base_tree, this_tree=tree_z)
221
222
self.assertEqual([
222
conflicts.MissingParent('Created directory', 'b', b'b-id'),
223
conflicts.UnversionedParent('Versioned directory', 'b', b'b-id')],
223
MissingParent('Created directory', 'b', b'b-id'),
224
UnversionedParent('Versioned directory', 'b', b'b-id')],
224
225
tree_z.conflicts())
225
226
merge_inner(tree_a.branch, tree_z.basis_tree(), base_tree,
226
227
this_tree=tree_a)
227
228
self.assertEqual([
228
conflicts.DeletingParent('Not deleting', 'b', b'b-id'),
229
conflicts.UnversionedParent('Versioned directory', 'b', b'b-id')],
229
DeletingParent('Not deleting', 'b', b'b-id'),
230
UnversionedParent('Versioned directory', 'b', b'b-id')],
230
231
tree_a.conflicts())
232
233
def test_nested_merge(self):
287
288
tree_b.commit('content change')
288
289
tree_b.merge_from_branch(tree_a.branch)
289
290
self.assertEqual(tree_b.conflicts(),
290
[conflicts.ContentsConflict('file',
291
file_id=b'file-id')])
291
[ContentsConflict('file', file_id=b'file-id')])
293
293
def test_merge_type_registry(self):
294
294
merge_type_option = option.Option.OPTIONS['merge-type']
1432
1432
((u'a', [u'a', u'a']), u'a', u'a'),
1433
1433
((root_id, [root_id, root_id]), root_id, root_id),
1434
1434
((u'a', [u'a', u'a']), u'a', u'a'),
1435
((False, [False, False]), False, False)),
1435
((False, [False, False]), False, False),
1438
1439
def test_not_in_base(self):
1478
1479
((None, [u'bar', u'bar']), u'bar', u'bar'),
1479
1480
((None, [root_id, root_id]), root_id, root_id),
1480
1481
((None, [u'bar', u'bar']), u'bar', u'bar'),
1481
((None, [False, False]), False, False)),
1482
((None, [False, False]), False, False),
1484
1486
def test_not_in_this(self):
1511
1513
((u'a', [u'a', u'a']), u'a', None),
1512
1514
((root_id, [root_id, root_id]), root_id, None),
1513
1515
((u'a', [u'a', u'a']), u'a', None),
1514
((False, [False, False]), False, None)),
1516
((False, [False, False]), False, None),
1517
1520
def test_file_not_in_one_lca(self):
1562
1565
((u'a', [u'a', u'a']), None, u'a'),
1563
1566
((root_id, [root_id, root_id]), None, root_id),
1564
1567
((u'a', [u'a', u'a']), None, u'a'),
1565
((False, [False, False]), None, False)),
1568
((False, [False, False]), None, False),
1568
1572
def test_not_in_other_or_lca(self):
1628
1632
((u'foo', [u'foo', None]), None, u'foo'),
1629
1633
((root_id, [root_id, None]), None, root_id),
1630
1634
((u'foo', [u'foo', None]), None, 'foo'),
1631
((False, [False, None]), None, False)),
1635
((False, [False, None]), None, False),
1634
1639
def test_only_in_one_lca(self):
1683
1688
((None, [None, None]), u'a', None),
1684
1689
((None, [None, None]), root_id, None),
1685
1690
((None, [None, None]), u'a', None),
1686
((None, [None, None]), False, None)),
1691
((None, [None, None]), False, None),
1689
1695
def test_one_lca_supersedes(self):
1814
1820
[(b'foo-id', False,
1815
1821
((root_id, [root_id, root_id]), root_id, root_id),
1816
1822
((u'foo', [u'bar', u'foo']), u'bar', u'bing'),
1817
((False, [False, False]), False, False)),
1823
((False, [False, False]), False, False),
1820
1827
def test_both_sides_revert(self):
1846
1853
((u'foo', [u'foo', u'foo']), u'foo', u'foo'),
1847
1854
((root_id, [root_id, root_id]), root_id, root_id),
1848
1855
((u'foo', [u'foo', u'foo']), u'foo', u'foo'),
1849
((False, [False, False]), False, False)),
1856
((False, [False, False]), False, False),
1852
1860
def test_different_lca_resolve_one_side_updates_content(self):
1884
1892
((u'foo', [u'foo', u'foo']), u'foo', u'foo'),
1885
1893
((root_id, [root_id, root_id]), root_id, root_id),
1886
1894
((u'foo', [u'foo', u'foo']), u'foo', u'foo'),
1887
((False, [False, False]), False, False)),
1895
((False, [False, False]), False, False),
1890
1899
def test_same_lca_resolution_one_side_updates_content(self):
1946
1955
((u'a', [u'a', u'a']), u'b', u'a'),
1947
1956
((root_id, [root_id, root_id]), root_id, root_id),
1948
1957
((u'a', [u'a', u'a']), u'b', u'a'),
1949
((False, [False, False]), False, False)),
1958
((False, [False, False]), False, False),
1952
1962
def test_kind_changed(self):
1972
1982
((u'a', [u'a', u'a']), u'a', u'a'),
1973
1983
((root_id, [root_id, root_id]), root_id, root_id),
1974
1984
((u'a', [u'a', u'a']), u'a', u'a'),
1975
((False, [False, False]), False, False)),
1985
((False, [False, False]), False, False),
1978
1989
def test_this_changed_kind(self):
2018
2029
((u'b', [u'b', u'b']), u'b', u'b'),
2019
2030
((root_id, [root_id, root_id]), root_id, root_id),
2020
2031
((u'b', [u'b', u'b']), u'b', u'b'),
2021
((False, [False, False]), False, False)),
2032
((False, [False, False]), False, False),
2024
2036
def test_interesting_file_in_this(self):
2046
2058
((u'b', [u'b', u'b']), u'b', u'c'),
2047
2059
((root_id, [root_id, root_id]), root_id, root_id),
2048
2060
((u'b', [u'b', u'b']), u'b', u'c'),
2049
((False, [False, False]), False, False)),
2061
((False, [False, False]), False, False),
2052
2065
def test_interesting_file_in_base(self):
2076
2089
((u'c', [u'b', u'b']), u'b', u'b'),
2077
2090
((root_id, [root_id, root_id]), root_id, root_id),
2078
2091
((u'c', [u'b', u'b']), u'b', u'b'),
2079
((False, [False, False]), False, False)),
2092
((False, [False, False]), False, False),
2082
2096
def test_interesting_file_in_lca(self):
2104
2118
((u'b', [u'c', u'b']), u'b', u'b'),
2105
2119
((root_id, [root_id, root_id]), root_id, root_id),
2106
2120
((u'b', [u'c', u'b']), u'b', u'b'),
2107
((False, [False, False]), False, False)),
2121
((False, [False, False]), False, False),
2110
2125
def test_interesting_files(self):
2129
2144
((u'b', [u'b', u'b']), u'b', u'b'),
2130
2145
((root_id, [root_id, root_id]), root_id, root_id),
2131
2146
((u'b', [u'b', u'b']), u'b', u'b'),
2132
((False, [False, False]), False, False)),
2147
((False, [False, False]), False, False),
2439
2455
((u'foo', [u'barry', u'foo']), u'blah', u'barry'),
2440
2456
((root_id, [root_id, root_id]), root_id, root_id),
2441
2457
((u'foo', [u'barry', u'foo']), u'blah', u'barry'),
2442
((False, [False, False]), False, False)),
2458
((False, [False, False]), False, False),
2444
2461
conflicts = wt.merge_from_branch(wt.branch, to_revision=b'F-id')
2445
2462
self.assertEqual(0, conflicts)
2544
2561
((None, [u'foo', None]), u'foo', u'foo'),
2545
2562
((None, [root_id, None]), root_id, root_id),
2546
2563
((None, [u'foo', None]), u'foo', u'foo'),
2547
((None, [False, None]), False, False)),
2564
((None, [False, None]), False, False),
2550
2568
def test_symlink_all_wt(self):
2606
2624
((u'foo', [u'foo', u'foo']), u'foo', u'foo'),
2607
2625
((root_id, [root_id, root_id]), root_id, root_id),
2608
2626
((u'foo', [u'foo', u'foo']), u'foo', u'foo'),
2609
((False, [False, False]), False, False)),
2627
((False, [False, False]), False, False),
2612
2631
def test_other_reverted_path_to_base(self):
2733
2752
((u'a', [u'a', u'b']), u'c', u'b'),
2734
2753
((root_id, [root_id, root_id]), root_id, root_id),
2735
2754
((u'a', [u'a', u'b']), u'c', u'b'),
2736
((False, [False, False]), False, False)),
2755
((False, [False, False]), False, False),
2737
2757
(b'foo-id', True,
2738
2758
((u'foo', [u'foo', u'foo']), u'foo', u'foo'),
2739
2759
((root_id, [root_id, root_id]), root_id, root_id),
2740
2760
((u'foo', [u'foo', u'foo']), u'foo', u'foo'),
2741
((False, [False, False]), False, False)),
2761
((False, [False, False]), False, False),
2744
2765
def test_nested_tree_unmodified(self):
2853
2874
((u'sub', [u'sub', u'sub']), u'alt_sub', u'sub'),
2854
2875
((root_id, [root_id, root_id]), root_id, root_id),
2855
2876
((u'sub', [u'sub', u'sub']), u'alt_sub', u'sub'),
2856
((False, [False, False]), False, False)),
2877
((False, [False, False]), False, False),
2859
2881
def test_nested_tree_subtree_renamed_and_modified(self):
2898
2920
((u'sub', [u'sub', u'sub']), u'alt_sub', u'sub'),
2899
2921
((root_id, [root_id, root_id]), root_id, root_id),
2900
2922
((u'sub', [u'sub', u'sub']), u'alt_sub', u'sub'),
2901
((False, [False, False]), False, False)),
2923
((False, [False, False]), False, False),