106
111
('rev-a', 0, None, []) ],# ○
114
def test_branch_tips_date_sorted_with_working_tree_provider(self):
115
trunk, old, new = self.make_banches_for_tips_date_sorted()
116
trunk_tree = trunk.bzrdir.create_workingtree()
117
old_tree = old.bzrdir.open_workingtree()
118
new_tree = new.bzrdir.open_workingtree()
120
trunk_bi = loggraphviz.BranchInfo('trunk', trunk_tree, trunk)
121
gv = loggraphviz.WithWorkingTreeGraphVizLoader(
123
loggraphviz.BranchInfo('old', old_tree, old),
124
loggraphviz.BranchInfo('new', new_tree, new),],
128
state = loggraphviz.GraphVizFilterState(gv)
129
computed = gv.compute_viz(state)
132
[(gv.tree_revid(new_tree), 2, None, [(2, 2, 3, True)]), # ○
134
('rev-new', 2, None, [(2, 2, 0, True)]), # ○
136
(gv.tree_revid(old_tree), 1, None, [(1, 1, 2, True), # ○ │
137
(2, 2, 0, True)]), # │ │
138
('rev-old', 1, None, [(1, 1, 0, True), (2, 2, 0, True)]), # ○ │
140
(gv.tree_revid(trunk_tree), 0, None, [ # ○ │ │
141
(0, 0, 0, True), (1, 1, 0, True), (2, 2, 0, True)]), # │ │ │
142
('rev-trunk', 0, None, [(0, 0, 0, True), (1, 0, 0, True), # ○ │ │
143
(2, 0, 0, True)]), # ├─╯─╯
144
('rev-a', 0, None, [])], # ○
109
148
def make_tree_with_pending_merge(self, path):
110
149
builder = self.make_branch_builder('branch')
111
150
builder.start_series()
201
240
('rev-a', 0, None, [], []) ], # ○
202
241
computed, branch_labels=True)
243
def test_with_working_tree_provider_filtered(self):
244
# This test makes sure that lable for a Working Tree shows for on it's
245
# nearest visble unique ansestor when the working tree node is
247
builder = self.make_branch_builder('branch')
248
builder.start_series()
249
builder.build_snapshot('rev-a', None, [
250
('add', ('', 'TREE_ROOT', 'directory', '')),])
251
builder.build_snapshot('rev-b', ['rev-a'], [])
252
builder.build_snapshot('rev-c', ['rev-a'], [])
253
builder.finish_series()
255
branch = builder.get_branch()
256
tree = branch.bzrdir.create_workingtree()
257
tree.update(revision='rev-b')
259
bi = loggraphviz.BranchInfo('branch', tree, tree.branch)
260
gv = loggraphviz.WithWorkingTreeGraphVizLoader([bi], bi, False)
263
state = loggraphviz.GraphVizFilterState(gv)
264
state.filters.append(BasicFilterer(set([
265
'current:%s' % tree.basedir.encode('unicode-escape')])))
266
computed = gv.compute_viz(state)
268
[('rev-b', 1, None, [(1, 1, 0, True)], ['branch - Working Tree']) , # ○
270
('rev-c', 0, None, [(0, 0, 0, True), (1, 0, 0, True)], ['branch']), # ○ │
272
('rev-a', 0, None, [], []) ],# ○
273
computed, branch_labels=True)
204
275
def test_pending_merges_provider(self):
205
276
tree = self.make_tree_with_pending_merge('branch')
520
598
('rev-b', 1, None, [(0, 0, 0, True), (1, 0, 0, True)]) , # │ ○
522
600
('rev-a', 0, None, []) ],# ○
603
def test_merge_line_hidden2(self):
604
gv = BasicGraphVizLoader(('rev-e',), {
605
'rev-a': (NULL_REVISION, ),
606
'rev-z': ('rev-a', ),
607
'rev-y': ('rev-a', 'rev-z', ),
608
'rev-b': ('rev-a', ),
609
'rev-c': ('rev-a', ),
610
'rev-d': ('rev-a', 'rev-c'),
611
'rev-e': ('rev-y', 'rev-b', 'rev-d'),
624
state = loggraphviz.GraphVizFilterState(gv)
625
#state.expand_all_branch_lines()
626
state.branch_line_state[(1, 1)] = None
627
state.branch_line_state[(1, 2)] = None
628
#state.branch_line_state[(1, 3)] = None
629
state.branch_line_state[(1, 4)] = None
631
computed = gv.compute_viz(state)
632
# when the merge by branch line, we should show a non direct line
633
# this could layout better, but that's another story...
635
[('rev-e', 0, False, [(0, 0, 0, True), (0, 1, 3, False), (0, 2, 5, True)]) , # ⊕
637
('rev-b', 2, None, [(0, 0, 0, True), (1, 3, 3, False), (2, 2, 0, True)]) , # │ ┆ ○
639
('rev-c', 3, None, [(0, 0, 0, True), (2, 2, 0, True), (3, 3, 0, True)]) , # │ │ ○
641
('rev-y', 0, True, [(0, 0, 0, True), (0, 1, 2, True), (2, 2, 0, True), (3, 3, 0, True)]), # ⊖ │ │
643
('rev-z', 1, None, [(0, 0, 0, True), (1, 0, 0, True), (2, 0, 0, True), (3, 0, 0, True)]), # │ ○ │ │
645
('rev-a', 0, None, []) ],# ○
525
648
def test_merge_line_hidden_merge_rev_filtered(self):
526
649
gv = BasicGraphVizLoader(('rev-e',), {
527
650
'rev-a': (NULL_REVISION, ),
599
722
('rev-a', 0, None, []) ],# ○
725
def test_no_graph(self):
726
gv = BasicGraphVizLoader(('rev-d',), {
727
'rev-a': (NULL_REVISION, ),
728
'rev-b': ('rev-a', ),
729
'rev-c': ('rev-a', ),
730
'rev-d': ('rev-b', 'rev-c'),
734
state = loggraphviz.GraphVizFilterState(gv)
735
computed = gv.compute_viz(state)
737
[('rev-d', 0.0, None, []), # ○
739
('rev-c', 0.5, None, []), # ○
741
('rev-b', 0.0, None, []), # ○
743
('rev-a', 0.0, None, [])],# ○
746
def test_no_graph_filtered(self):
747
gv = BasicGraphVizLoader(('rev-d',), {
748
'rev-a': (NULL_REVISION, ),
749
'rev-b': ('rev-a', ),
750
'rev-c': ('rev-a', ),
751
'rev-d': ('rev-b', 'rev-c'),
755
state = loggraphviz.GraphVizFilterState(gv)
756
state.filters.append(BasicFilterer(set(['rev-b'])))
757
computed = gv.compute_viz(state)
759
[('rev-d', 0.0, None, []), # ○
761
('rev-c', 0.5, None, []), # ○
763
('rev-a', 0.0, None, [])],# ○
603
766
class TestLogGraphProviderState(TestCase):