39
39
def assertReport(self, expected, file_id='fid', path='path',
40
40
versioned_change='unchanged', renamed=False,
41
41
modified='unchanged', exe_change=False,
42
kind=('file', 'file'), old_path=None):
42
kind=('file', 'file'), old_path=None,
43
unversioned_filter=None):
44
45
def result_line(format, *args):
45
46
result.append(format % args)
46
reporter = _mod_delta.ChangeReporter(result_line)
47
reporter = _mod_delta.ChangeReporter(result_line,
48
unversioned_filter=unversioned_filter)
47
49
reporter.report(file_id, (old_path, path), versioned_change, renamed,
48
50
modified, exe_change, kind)
49
self.assertEqualDiff(expected, result[0])
51
if expected is not None:
52
self.assertEqualDiff(expected, result[0])
54
self.assertEqual([], result)
51
56
def test_rename(self):
52
57
self.assertReport('R old => path', renamed=True, old_path='old')
86
91
self.assertReport(' M path', modified='modified')
87
92
self.assertReport(' M* path', modified='modified', exe_change=True)
94
def test_unversioned(self):
95
# by default any unversioned file is output
96
self.assertReport('? subdir/foo~', file_id=None, path='subdir/foo~',
97
old_path=None, versioned_change='unversioned',
98
renamed=False, modified='created', exe_change=False,
100
# but we can choose to filter these. Probably that should be done
101
# close to the tree, but this is a reasonable starting point.
102
self.assertReport(None, file_id=None, path='subdir/foo~',
103
old_path=None, versioned_change='unversioned',
104
renamed=False, modified='created', exe_change=False,
105
kind=(None, 'file'), unversioned_filter=lambda x:True)
89
107
def assertChangesEqual(self,
109
paths=('path', 'path'),
92
110
content_change=False,
93
111
versioned=(True, True),
94
112
parent_id=('pid', 'pid'),
100
118
modified='unchanged',
101
119
exe_change=False):
102
120
reporter = InstrumentedReporter()
103
_mod_delta.report_changes([(file_id, path, content_change, versioned,
121
_mod_delta.report_changes([(file_id, paths, content_change, versioned,
104
122
parent_id, name, kind, executable)], reporter)
105
123
output = reporter.calls[0]
106
124
self.assertEqual(file_id, output[0])
107
self.assertEqual(path, output[1])
125
self.assertEqual(paths, output[1])
108
126
self.assertEqual(versioned_change, output[2])
109
127
self.assertEqual(renamed, output[3])
110
128
self.assertEqual(modified, output[4])
152
170
content_change=True, name=('old', 'new'),
153
171
executable=(False, True))
173
def test_report_unversioned(self):
174
"""Unversioned entries are reported well."""
175
self.assertChangesEqual(file_id=None, paths=(None, 'full/path'),
177
versioned=(False, False),
178
parent_id=(None, None),
181
executable=(None, False),
182
versioned_change='unversioned',
156
188
class TestChangesFrom (tests.TestCaseWithTransport):