bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
|
0.9.1
by Aaron Bentley
Get trivial case passing |
1 |
from unittest import TestCase |
2 |
||
3 |
import multiparent |
|
4 |
||
|
0.9.3
by Aaron Bentley
Get three-parent comparisions under test |
5 |
|
|
0.9.1
by Aaron Bentley
Get trivial case passing |
6 |
LINES_1 = "a\nb\nc\nd\ne\n".splitlines(True) |
|
0.9.2
by Aaron Bentley
Get single-parent comparison working |
7 |
LINES_2 = "a\nc\nd\ne\n".splitlines(True) |
|
0.9.3
by Aaron Bentley
Get three-parent comparisions under test |
8 |
LINES_3 = "a\nb\nc\nd\n".splitlines(True) |
|
0.9.2
by Aaron Bentley
Get single-parent comparison working |
9 |
|
10 |
||
11 |
class Mock(object): |
|
12 |
||
13 |
def __init__(self, **kwargs): |
|
14 |
self.__dict__ = kwargs |
|
15 |
||
|
0.9.1
by Aaron Bentley
Get trivial case passing |
16 |
|
17 |
class TestMulti(TestCase): |
|
18 |
||
|
0.9.2
by Aaron Bentley
Get single-parent comparison working |
19 |
def test_compare_no_parent(self): |
20 |
diff = multiparent.MultiParent.from_lines(LINES_1) |
|
21 |
self.assertEqual([multiparent.NewText(LINES_1)], diff.hunks) |
|
22 |
||
23 |
def test_compare_one_parent(self): |
|
24 |
diff = multiparent.MultiParent.from_lines(LINES_1, [LINES_2]) |
|
25 |
self.assertEqual([multiparent.ParentText(0, 0, 0, 1), |
|
26 |
multiparent.NewText(['b\n']), |
|
27 |
multiparent.ParentText(0, 1, 2, 3)], |
|
28 |
diff.hunks) |
|
29 |
||
|
0.9.3
by Aaron Bentley
Get three-parent comparisions under test |
30 |
def test_compare_two_parents(self): |
31 |
diff = multiparent.MultiParent.from_lines(LINES_1, [LINES_2, LINES_3]) |
|
32 |
self.assertEqual([multiparent.ParentText(1, 0, 0, 4), |
|
33 |
multiparent.ParentText(0, 3, 4, 1)], |
|
34 |
diff.hunks) |
|
35 |
||
|
0.9.9
by Aaron Bentley
Much progress on non-naive text reconstruction |
36 |
def test_range_iterator(self): |
37 |
diff = multiparent.MultiParent.from_lines(LINES_1, [LINES_2, LINES_3]) |
|
38 |
diff.hunks.append(multiparent.NewText(['q\n'])) |
|
39 |
self.assertEqual([(0, 4, 'parent', (1, 0, 4)), |
|
40 |
(4, 5, 'parent', (0, 3, 4)), |
|
41 |
(5, 6, 'new', ['q\n'])], |
|
42 |
list(diff.range_iterator())) |
|
43 |
||
|
0.9.2
by Aaron Bentley
Get single-parent comparison working |
44 |
def test_eq(self): |
45 |
diff = multiparent.MultiParent.from_lines(LINES_1) |
|
46 |
diff2 = multiparent.MultiParent.from_lines(LINES_1) |
|
47 |
self.assertEqual(diff, diff2) |
|
48 |
diff3 = multiparent.MultiParent.from_lines(LINES_2) |
|
49 |
self.assertFalse(diff == diff3) |
|
50 |
self.assertFalse(diff == Mock(hunks=[multiparent.NewText(LINES_1)])) |
|
51 |
self.assertEqual(multiparent.MultiParent( |
|
52 |
[multiparent.NewText(LINES_1), |
|
53 |
multiparent.ParentText(0, 1, 2, 3)]), |
|
54 |
multiparent.MultiParent( |
|
55 |
[multiparent.NewText(LINES_1), |
|
56 |
multiparent.ParentText(0, 1, 2, 3)])) |
|
|
0.9.1
by Aaron Bentley
Get trivial case passing |
57 |
|
|
0.9.4
by Aaron Bentley
Start supporting serialization |
58 |
def test_to_patch(self): |
59 |
self.assertEqual(['i 1\n', 'a\n', '\n', 'c 0 1 2 3\n'], |
|
60 |
list(multiparent.MultiParent([multiparent.NewText(['a\n']), |
|
61 |
multiparent.ParentText(0, 1, 2, 3)]).to_patch())) |
|
62 |
||
|
0.9.11
by Aaron Bentley
Implement reconstruct_version, handle all hunks through that |
63 |
def test_num_lines(self): |
64 |
mp = multiparent.MultiParent([multiparent.NewText(['a\n'])]) |
|
65 |
self.assertEqual(1, mp.num_lines()) |
|
66 |
mp.hunks.append(multiparent.NewText(['b\n', 'c\n'])) |
|
67 |
self.assertEqual(3, mp.num_lines()) |
|
68 |
mp.hunks.append(multiparent.ParentText(0, 0, 3, 2)) |
|
69 |
self.assertEqual(5, mp.num_lines()) |
|
70 |
mp.hunks.append(multiparent.NewText(['f\n', 'g\n'])) |
|
71 |
self.assertEqual(7, mp.num_lines()) |
|
72 |
||
|
0.9.1
by Aaron Bentley
Get trivial case passing |
73 |
|
74 |
class TestNewText(TestCase): |
|
75 |
||
76 |
def test_eq(self): |
|
77 |
self.assertEqual(multiparent.NewText([]), multiparent.NewText([])) |
|
78 |
self.assertFalse(multiparent.NewText(['a']) == |
|
79 |
multiparent.NewText(['b'])) |
|
|
0.9.2
by Aaron Bentley
Get single-parent comparison working |
80 |
self.assertFalse(multiparent.NewText(['a']) == Mock(lines=['a'])) |
81 |
||
|
0.9.4
by Aaron Bentley
Start supporting serialization |
82 |
def test_to_patch(self): |
83 |
self.assertEqual(['i 0\n', '\n'], |
|
84 |
list(multiparent.NewText([]).to_patch())) |
|
85 |
self.assertEqual(['i 1\n', 'a', '\n'], |
|
86 |
list(multiparent.NewText(['a']).to_patch())) |
|
87 |
self.assertEqual(['i 1\n', 'a\n', '\n'], |
|
88 |
list(multiparent.NewText(['a\n']).to_patch())) |
|
89 |
||
|
0.9.2
by Aaron Bentley
Get single-parent comparison working |
90 |
|
91 |
class TestParentText(TestCase): |
|
92 |
||
93 |
def test_eq(self): |
|
94 |
self.assertEqual(multiparent.ParentText(1, 2, 3, 4), |
|
95 |
multiparent.ParentText(1, 2, 3, 4)) |
|
96 |
self.assertFalse(multiparent.ParentText(1, 2, 3, 4) == |
|
97 |
multiparent.ParentText(2, 2, 3, 4)) |
|
98 |
self.assertFalse(multiparent.ParentText(1, 2, 3, 4) == |
|
99 |
Mock(parent=1, parent_pos=2, child_pos=3, |
|
100 |
num_lines=4)) |
|
|
0.9.4
by Aaron Bentley
Start supporting serialization |
101 |
|
102 |
def test_to_patch(self): |
|
103 |
self.assertEqual(['c 0 1 2 3\n'], |
|
104 |
list(multiparent.ParentText(0, 1, 2, 3).to_patch())) |
|
|
0.9.8
by Aaron Bentley
get add_version working |
105 |
|
106 |
||
|
0.9.9
by Aaron Bentley
Much progress on non-naive text reconstruction |
107 |
REV_A = ['a\n', 'b\n', 'c\n', 'd\n'] |
108 |
REV_B = ['a\n', 'c\n', 'd\n', 'e\n'] |
|
109 |
REV_C = ['a\n', 'b\n', 'e\n', 'f\n'] |
|
110 |
||
111 |
||
|
0.9.8
by Aaron Bentley
get add_version working |
112 |
class TestVersionedFile(TestCase): |
113 |
||
114 |
def add_version(self, vf, text, version_id, parent_ids): |
|
115 |
vf.add_version([(t+'\n') for t in text], version_id, parent_ids) |
|
116 |
||
|
0.9.9
by Aaron Bentley
Much progress on non-naive text reconstruction |
117 |
def make_vf(self): |
|
0.9.8
by Aaron Bentley
get add_version working |
118 |
vf = multiparent.MultiVersionedFile() |
119 |
self.add_version(vf, 'abcd', 'rev-a', []) |
|
|
0.9.9
by Aaron Bentley
Much progress on non-naive text reconstruction |
120 |
self.add_version(vf, 'acde', 'rev-b', []) |
121 |
self.add_version(vf, 'abef', 'rev-c', ['rev-a', 'rev-b']) |
|
122 |
return vf |
|
123 |
||
124 |
def test_add_version(self): |
|
125 |
vf = self.make_vf() |
|
126 |
self.assertEqual(REV_A, vf._lines['rev-a']) |
|
|
0.9.8
by Aaron Bentley
get add_version working |
127 |
vf.clear_cache() |
128 |
self.assertEqual(vf._lines, {}) |
|
|
0.9.9
by Aaron Bentley
Much progress on non-naive text reconstruction |
129 |
|
130 |
def test_get_line_list(self): |
|
131 |
vf = self.make_vf() |
|
132 |
vf.clear_cache() |
|
133 |
self.assertEqual(REV_A, vf.get_line_list(['rev-a'])[0]) |
|
134 |
self.assertEqual([REV_B, REV_C], vf.get_line_list(['rev-b', 'rev-c'])) |
|
135 |
||
136 |
@staticmethod
|
|
137 |
def reconstruct(vf, revision_id, start, end): |
|
138 |
reconstructor = multiparent._Reconstructor(vf._diffs, vf._lines, |
|
139 |
vf._parents) |
|
140 |
lines = [] |
|
141 |
reconstructor._reconstruct(lines, revision_id, start, end) |
|
142 |
return lines |
|
143 |
||
|
0.9.11
by Aaron Bentley
Implement reconstruct_version, handle all hunks through that |
144 |
@staticmethod
|
145 |
def reconstruct_version(vf, revision_id): |
|
146 |
reconstructor = multiparent._Reconstructor(vf._diffs, vf._lines, |
|
147 |
vf._parents) |
|
148 |
lines = [] |
|
149 |
reconstructor.reconstruct_version(lines, revision_id) |
|
150 |
return lines |
|
151 |
||
|
0.9.9
by Aaron Bentley
Much progress on non-naive text reconstruction |
152 |
def test_reconstructor(self): |
153 |
vf = self.make_vf() |
|
154 |
self.assertEqual(['a\n', 'b\n'], self.reconstruct(vf, 'rev-a', 0, 2)) |
|
155 |
self.assertEqual(['c\n', 'd\n'], self.reconstruct(vf, 'rev-a', 2, 4)) |
|
156 |
self.assertEqual(['e\n', 'f\n'], self.reconstruct(vf, 'rev-c', 2, 4)) |
|
|
0.9.10
by Aaron Bentley
Text reconstruction seems to work |
157 |
self.assertEqual(['a\n', 'b\n', 'e\n', 'f\n'], |
158 |
self.reconstruct(vf, 'rev-c', 0, 4)) |
|
|
0.9.11
by Aaron Bentley
Implement reconstruct_version, handle all hunks through that |
159 |
self.assertEqual(['a\n', 'b\n', 'e\n', 'f\n'], |
160 |
self.reconstruct_version(vf, 'rev-c')) |