Merge lp:~gz/bzr-builddeb/merge_changelog_invalid_version_tweak_testing into lp:bzr-builddeb

Proposed by Martin Packman
Status: Superseded
Proposed branch: lp:~gz/bzr-builddeb/merge_changelog_invalid_version_tweak_testing
Merge into: lp:bzr-builddeb
Diff against target: 175 lines (+68/-13) (has conflicts)
1 file modified
tests/test_merge_changelog.py (+68/-13)
Text conflict in tests/test_merge_changelog.py
To merge this branch: bzr merge lp:~gz/bzr-builddeb/merge_changelog_invalid_version_tweak_testing
Reviewer Review Type Date Requested Status
James Westby Approve
Review via email: mp+85638@code.launchpad.net

This proposal has been superseded by a proposal from 2011-12-14.

Description of the change

Follow up to previous mp, tidying up the merge_changelog testing a little:

<https://code.launchpad.net/~gz/bzr-builddeb/merge_changelog_invalid_version_893495/+merge/85572>

Original way of spelling the test meant it would fail when selftest was run with LANG=de_DE.UTF-8 for example. Have rearranged things a bit to make it easy to add another test for the original style of invalid version as well.

To post a comment you must log in.
669. By Martin Packman

Slightly strengthen log output assertion on error

670. By Martin Packman

Merge trunk to resolve conflict in test_merge_changelog.py

Revision history for this message
James Westby (james-w) wrote :

Hi,

Thanks for cleaning this up. It looks good to me, assuming the
conflicts are easily resolvable.

Thanks,

James

review: Approve

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'tests/test_merge_changelog.py'
--- tests/test_merge_changelog.py 2011-12-14 00:04:54 +0000
+++ tests/test_merge_changelog.py 2011-12-14 11:19:33 +0000
@@ -44,7 +44,7 @@
4444
4545
46v_111_2 = """\46v_111_2 = """\
47psuedo-prog (1.1.1-2) unstable; urgency=low47pseudo-prog (1.1.1-2) unstable; urgency=low
4848
49 * New upstream release.49 * New upstream release.
50 * Awesome bug fixes.50 * Awesome bug fixes.
@@ -55,7 +55,7 @@
5555
5656
57v_111_2b = """\57v_111_2b = """\
58psuedo-prog (1.1.1-2) unstable; urgency=low58pseudo-prog (1.1.1-2) unstable; urgency=low
5959
60 * New upstream release.60 * New upstream release.
61 * Awesome bug fixes.61 * Awesome bug fixes.
@@ -67,7 +67,7 @@
6767
6868
69v_111_2c = """\69v_111_2c = """\
70psuedo-prog (1.1.1-2) unstable; urgency=low70pseudo-prog (1.1.1-2) unstable; urgency=low
7171
72 * New upstream release.72 * New upstream release.
73 * Yet another content for 1.1.1-273 * Yet another content for 1.1.1-2
@@ -80,7 +80,7 @@
80# Merge of 2b and 2c using 2 as the base (b adds a line, c adds a line and80# Merge of 2b and 2c using 2 as the base (b adds a line, c adds a line and
81# deletes a line).81# deletes a line).
82v_111_2bc = """\82v_111_2bc = """\
83psuedo-prog (1.1.1-2) unstable; urgency=low83pseudo-prog (1.1.1-2) unstable; urgency=low
8484
85 * New upstream release.85 * New upstream release.
86 * Yet another content for 1.1.1-286 * Yet another content for 1.1.1-2
@@ -94,7 +94,7 @@
94# Merge of 2b and 2c using an empty base. (As calculated by94# Merge of 2b and 2c using an empty base. (As calculated by
95# dpkg-mergechangelogs.)95# dpkg-mergechangelogs.)
96v_111_2bc_empty_base = """\96v_111_2bc_empty_base = """\
97psuedo-prog (1.1.1-2) unstable; urgency=low97pseudo-prog (1.1.1-2) unstable; urgency=low
9898
99 * New upstream release.99 * New upstream release.
100<<<<<<<100<<<<<<<
@@ -110,7 +110,7 @@
110110
111111
112v_112_1 = """\112v_112_1 = """\
113psuedo-prog (1.1.2-1) unstable; urgency=low113pseudo-prog (1.1.2-1) unstable; urgency=low
114114
115 * New upstream release.115 * New upstream release.
116 * No bug fixes :(116 * No bug fixes :(
@@ -121,7 +121,7 @@
121121
122122
123v_001_1 = """\123v_001_1 = """\
124psuedo-prog (0.0.1-1) unstable; urgency=low124pseudo-prog (0.0.1-1) unstable; urgency=low
125125
126 * New project released!!!!126 * New project released!!!!
127 * No bugs evar127 * No bugs evar
@@ -160,14 +160,19 @@
160 Content(UTF8_TEXT, lambda: [warnings_log]))160 Content(UTF8_TEXT, lambda: [warnings_log]))
161161
162 def assertMergeChangelog(self, expected_lines, this_lines, other_lines,162 def assertMergeChangelog(self, expected_lines, this_lines, other_lines,
163 base_lines=[], conflicted=False):163 base_lines=[], conflicted=False, possible_error=False):
164 status, merged_lines = merge_changelog.merge_changelog(164 status, merged_lines = merge_changelog.merge_changelog(
165 this_lines, other_lines, base_lines)165 this_lines, other_lines, base_lines)
166 if possible_error and status == "not_applicable":
167 self.assertContainsRe(self.logged_warnings.getvalue(),
168 "(?m)dpkg-mergechangelogs failed with status \\d+$")
169 return False
166 if conflicted:170 if conflicted:
167 self.assertEqual('conflicted', status)171 self.assertEqual('conflicted', status)
168 else:172 else:
169 self.assertEqual('success', status)173 self.assertEqual('success', status)
170 self.assertEqualDiff(''.join(expected_lines), ''.join(merged_lines))174 self.assertEqualDiff(''.join(expected_lines), ''.join(merged_lines))
175 return True
171176
172 def test_merge_by_version(self):177 def test_merge_by_version(self):
173 this_lines = v_111_2 + v_001_1178 this_lines = v_111_2 + v_001_1
@@ -227,7 +232,7 @@
227232
228 def test_not_valid_changelog(self):233 def test_not_valid_changelog(self):
229 invalid_changelog = """\234 invalid_changelog = """\
230psuedo-prog (1.1.1-2) unstable; urgency=low235pseudo-prog (1.1.1-2) unstable; urgency=low
231236
232 * New upstream release.237 * New upstream release.
233 * Awesome bug fixes.238 * Awesome bug fixes.
@@ -246,10 +251,6 @@
246 # <https://bugs.launchpad.net/ubuntu/+source/dpkg/+bug/815704>251 # <https://bugs.launchpad.net/ubuntu/+source/dpkg/+bug/815704>
247 # - Andrew Bennetts, 25 July 2011.252 # - Andrew Bennetts, 25 July 2011.
248 #self.assertEqual(''.join(invalid_changelog), ''.join(lines))253 #self.assertEqual(''.join(invalid_changelog), ''.join(lines))
249 status, lines = merge_changelog.merge_changelog(
250 invalid_changelog, v_111_2, v_111_2)
251 self.assertEqual('success', status)
252 #self.assertEqual(''.join(invalid_changelog), ''.join(lines))
253 self.assertMergeChangelog(v_112_1 + 254 self.assertMergeChangelog(v_112_1 +
254 ['<<<<<<<\n'] +255 ['<<<<<<<\n'] +
255 v_111_2 +256 v_111_2 +
@@ -260,6 +261,7 @@
260 conflicted=True261 conflicted=True
261 )262 )
262263
264<<<<<<< TREE
263 def test_invalid_version(self):265 def test_invalid_version(self):
264 """An invalid version in the changelog should be handled sanely266 """An invalid version in the changelog should be handled sanely
265 267
@@ -293,6 +295,59 @@
293 self.assertEqualDiff(295 self.assertEqualDiff(
294 "".join(v_112_1 + v_111_2 + invalid_changelog),296 "".join(v_112_1 + v_111_2 + invalid_changelog),
295 "".join(lines))297 "".join(lines))
298=======
299 def test_invalid_version_starting_non_digit(self):
300 """Invalid version without digit first is rejected or correctly merged
301
302 Versions of dpkg prior to 1.16.0.1 merge such changelogs correctly,
303 however then a stricter check was introduced that aborts the script.
304 In that case, the result should not be a success with a zero byte
305 merge result file. See lp:893495 for such an issue.
306 """
307 invalid_changelog = """\
308pseudo-prog (ss-0) unstable; urgency=low
309
310 * New project released!!!!
311
312 -- Barry Foo <barry@example.com> Thu, 28 Jan 2010 10:00:44 +0000
313
314""".splitlines(True)
315 handled = self.assertMergeChangelog(
316 expected_lines=v_112_1 + v_111_2 + invalid_changelog,
317 this_lines=v_112_1 + invalid_changelog,
318 other_lines=v_111_2 + invalid_changelog,
319 base_lines=invalid_changelog,
320 possible_error=True)
321 if not handled:
322 # Can't assert on the exact message as it depends on the locale
323 self.assertContainsRe(self.logged_warnings.getvalue(),
324 "ss-0( is not a valid version)?")
325
326 def test_invalid_version_non_ascii(self):
327 """Invalid version with non-ascii data is rejected or correctly merged
328
329 Such a version has always been treated as invalid so fails
330 consistently across dpkg versions currently.
331 """
332 invalid_changelog = """\
333pseudo-prog (\xc2\xa7) unstable; urgency=low
334
335 * New project released!!!!
336
337 -- Barry Foo <barry@example.com> Thu, 28 Jan 2010 10:00:44 +0000
338
339""".splitlines(True)
340 handled = self.assertMergeChangelog(
341 expected_lines=v_112_1 + v_111_2 + invalid_changelog,
342 this_lines=v_112_1 + invalid_changelog,
343 other_lines=v_111_2 + invalid_changelog,
344 base_lines=invalid_changelog,
345 possible_error=True)
346 if not handled:
347 # Can't assert on the exact message as it depends on the locale
348 self.assertContainsRe(self.logged_warnings.getvalue(),
349 "\xc2\xa7( is not a valid version)?")
350>>>>>>> MERGE-SOURCE
296351
297352
298class TestChangelogHook(tests.TestCaseWithMemoryTransport):353class TestChangelogHook(tests.TestCaseWithMemoryTransport):

Subscribers

People subscribed via source and target branches