Mercurial > hgsubversion
comparison tests/test_fetch_command_regexes.py @ 859:1d07e86f5797
stupid: handle changes in svn 1.7 diff format
Metadata changes are now represented like:
Property changes on: a
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
instead of:
Property changes on: a
___________________________________________________________________
Added: svn:executable
+ *
Also, I got tired of massaging the diff with regexps, so I extracted the
parsing logic in parsediff(). This is no small refactoring but it makes things
cleaner and the test suite pass on 1.6 and 1.7 so...
author | Patrick Mezard <patrick@mezard.eu> |
---|---|
date | Thu, 19 Apr 2012 14:59:50 +0200 |
parents | 46e69be8e2c8 |
children | d741f536f23a |
comparison
equal
deleted
inserted
replaced
858:bb6a013abaed | 859:1d07e86f5797 |
---|---|
46 | 46 |
47 """ | 47 """ |
48 | 48 |
49 class RegexTests(unittest.TestCase): | 49 class RegexTests(unittest.TestCase): |
50 def test_empty_file_re(self): | 50 def test_empty_file_re(self): |
51 matches = stupid.empty_file_patch_wont_make_re.findall(two_empties) | 51 changed = stupid.parsediff(two_empties) |
52 assert sorted(matches) == ['__init__.py', 'bar/__init__.py'] | 52 self.assertEqual(3, len(changed)) |
53 self.assertEqual('__init__.py', changed[0].name) | |
54 self.assert_(changed[0].isempty()) | |
55 self.assertEqual('bar/__init__.py', changed[1].name) | |
56 self.assert_(changed[1].isempty()) | |
57 self.assertEqual('bar/test_muhaha.py', changed[2].name) | |
58 self.assert_(not changed[2].isempty()) | |
53 | 59 |
54 def test_any_matches_just_one(self): | 60 def test_any_matches_just_one(self): |
55 pat = '''Index: trunk/django/contrib/admin/urls/__init__.py | 61 pat = '''Index: trunk/django/contrib/admin/urls/__init__.py |
56 =================================================================== | 62 =================================================================== |
57 ''' | 63 ''' |
58 matches = stupid.any_file_re.findall(pat) | 64 changed = stupid.parsediff(pat) |
59 assert len(matches) == 1 | 65 self.assertEqual(['trunk/django/contrib/admin/urls/__init__.py'], |
66 [f.name for f in changed]) | |
60 | 67 |
61 def test_special_re(self): | 68 def test_special_re(self): |
62 matches = stupid.property_special_set_re.findall(special_delta) | 69 changed = stupid.parsediff(special_delta) |
63 assert len(matches) == 1 | 70 self.assertEqual(1, len(changed)) |
71 self.assert_(changed[0].symlink) | |
64 | 72 |
65 def test_any_file_re(self): | 73 def test_any_file_re(self): |
66 matches = stupid.any_file_re.findall(two_empties) | 74 changed = stupid.parsediff(two_empties) |
67 assert sorted(matches) == ['__init__.py', 'bar/__init__.py', | 75 self.assertEqual(['__init__.py', 'bar/__init__.py', 'bar/test_muhaha.py'], |
68 'bar/test_muhaha.py'] | 76 [f.name for f in changed]) |
69 | 77 |
70 def test_binary_file_re(self): | 78 def test_binary_file_re(self): |
71 matches = stupid.binary_file_re.findall(binary_delta) | 79 changed = stupid.parsediff(binary_delta) |
72 assert matches == ['trunk/functional_tests/doc_tests/test_doctest_fixtures/doctest_fixtures_fixtures.pyc'] | 80 binaries = [f.name for f in changed if f.binary] |
81 self.assertEqual(['trunk/functional_tests/doc_tests/test_doctest_fixtures/doctest_fixtures_fixtures.pyc'], | |
82 binaries) | |
83 | |
84 def test_diff16(self): | |
85 data = """Index: d3/d | |
86 =================================================================== | |
87 --- d3/d (revision 0) | |
88 +++ d3/d (revision 6) | |
89 @@ -0,0 +1 @@ | |
90 +d | |
91 | |
92 Property changes on: d3 | |
93 ___________________________________________________________________ | |
94 Added: svn:externals | |
95 + ^/trunk/common/ext ext3 | |
96 | |
97 | |
98 | |
99 Property changes on: . | |
100 ___________________________________________________________________ | |
101 Added: svn:mergeinfo | |
102 Merged /branches/branch:r4-5 | |
103 """ | |
104 changed = stupid.parsediff(data) | |
105 self.assertEqual(['d3/d', 'd3', '.'], [f.name for f in changed]) | |
106 data = """Property changes on: empty1 | |
107 ___________________________________________________________________ | |
108 Deleted: svn:executable | |
109 - * | |
110 | |
111 | |
112 Property changes on: empty2 | |
113 ___________________________________________________________________ | |
114 Added: svn:executable | |
115 + * | |
116 | |
117 | |
118 Property changes on: binary1 | |
119 ___________________________________________________________________ | |
120 Deleted: svn:executable | |
121 - * | |
122 | |
123 | |
124 Property changes on: text1 | |
125 ___________________________________________________________________ | |
126 Deleted: svn:executable | |
127 - * | |
128 | |
129 | |
130 Property changes on: binary2 | |
131 ___________________________________________________________________ | |
132 Added: svn:executable | |
133 + * | |
134 | |
135 | |
136 Property changes on: text2 | |
137 ___________________________________________________________________ | |
138 Added: svn:executable | |
139 + * | |
140 """ | |
141 changed = stupid.parsediff(data) | |
142 self.assertEqual(['empty1', 'empty2', 'binary1', 'text1', 'binary2', 'text2'], | |
143 [f.name for f in changed]) | |
73 | 144 |
74 def suite(): | 145 def suite(): |
75 return unittest.TestLoader().loadTestsFromTestCase(RegexTests) | 146 return unittest.TestLoader().loadTestsFromTestCase(RegexTests) |