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
1=== modified file 'tests/test_merge_changelog.py'
2--- tests/test_merge_changelog.py 2011-12-14 00:04:54 +0000
3+++ tests/test_merge_changelog.py 2011-12-14 11:19:33 +0000
4@@ -44,7 +44,7 @@
5
6
7 v_111_2 = """\
8-psuedo-prog (1.1.1-2) unstable; urgency=low
9+pseudo-prog (1.1.1-2) unstable; urgency=low
10
11 * New upstream release.
12 * Awesome bug fixes.
13@@ -55,7 +55,7 @@
14
15
16 v_111_2b = """\
17-psuedo-prog (1.1.1-2) unstable; urgency=low
18+pseudo-prog (1.1.1-2) unstable; urgency=low
19
20 * New upstream release.
21 * Awesome bug fixes.
22@@ -67,7 +67,7 @@
23
24
25 v_111_2c = """\
26-psuedo-prog (1.1.1-2) unstable; urgency=low
27+pseudo-prog (1.1.1-2) unstable; urgency=low
28
29 * New upstream release.
30 * Yet another content for 1.1.1-2
31@@ -80,7 +80,7 @@
32 # Merge of 2b and 2c using 2 as the base (b adds a line, c adds a line and
33 # deletes a line).
34 v_111_2bc = """\
35-psuedo-prog (1.1.1-2) unstable; urgency=low
36+pseudo-prog (1.1.1-2) unstable; urgency=low
37
38 * New upstream release.
39 * Yet another content for 1.1.1-2
40@@ -94,7 +94,7 @@
41 # Merge of 2b and 2c using an empty base. (As calculated by
42 # dpkg-mergechangelogs.)
43 v_111_2bc_empty_base = """\
44-psuedo-prog (1.1.1-2) unstable; urgency=low
45+pseudo-prog (1.1.1-2) unstable; urgency=low
46
47 * New upstream release.
48 <<<<<<<
49@@ -110,7 +110,7 @@
50
51
52 v_112_1 = """\
53-psuedo-prog (1.1.2-1) unstable; urgency=low
54+pseudo-prog (1.1.2-1) unstable; urgency=low
55
56 * New upstream release.
57 * No bug fixes :(
58@@ -121,7 +121,7 @@
59
60
61 v_001_1 = """\
62-psuedo-prog (0.0.1-1) unstable; urgency=low
63+pseudo-prog (0.0.1-1) unstable; urgency=low
64
65 * New project released!!!!
66 * No bugs evar
67@@ -160,14 +160,19 @@
68 Content(UTF8_TEXT, lambda: [warnings_log]))
69
70 def assertMergeChangelog(self, expected_lines, this_lines, other_lines,
71- base_lines=[], conflicted=False):
72+ base_lines=[], conflicted=False, possible_error=False):
73 status, merged_lines = merge_changelog.merge_changelog(
74 this_lines, other_lines, base_lines)
75+ if possible_error and status == "not_applicable":
76+ self.assertContainsRe(self.logged_warnings.getvalue(),
77+ "(?m)dpkg-mergechangelogs failed with status \\d+$")
78+ return False
79 if conflicted:
80 self.assertEqual('conflicted', status)
81 else:
82 self.assertEqual('success', status)
83 self.assertEqualDiff(''.join(expected_lines), ''.join(merged_lines))
84+ return True
85
86 def test_merge_by_version(self):
87 this_lines = v_111_2 + v_001_1
88@@ -227,7 +232,7 @@
89
90 def test_not_valid_changelog(self):
91 invalid_changelog = """\
92-psuedo-prog (1.1.1-2) unstable; urgency=low
93+pseudo-prog (1.1.1-2) unstable; urgency=low
94
95 * New upstream release.
96 * Awesome bug fixes.
97@@ -246,10 +251,6 @@
98 # <https://bugs.launchpad.net/ubuntu/+source/dpkg/+bug/815704>
99 # - Andrew Bennetts, 25 July 2011.
100 #self.assertEqual(''.join(invalid_changelog), ''.join(lines))
101- status, lines = merge_changelog.merge_changelog(
102- invalid_changelog, v_111_2, v_111_2)
103- self.assertEqual('success', status)
104- #self.assertEqual(''.join(invalid_changelog), ''.join(lines))
105 self.assertMergeChangelog(v_112_1 +
106 ['<<<<<<<\n'] +
107 v_111_2 +
108@@ -260,6 +261,7 @@
109 conflicted=True
110 )
111
112+<<<<<<< TREE
113 def test_invalid_version(self):
114 """An invalid version in the changelog should be handled sanely
115
116@@ -293,6 +295,59 @@
117 self.assertEqualDiff(
118 "".join(v_112_1 + v_111_2 + invalid_changelog),
119 "".join(lines))
120+=======
121+ def test_invalid_version_starting_non_digit(self):
122+ """Invalid version without digit first is rejected or correctly merged
123+
124+ Versions of dpkg prior to 1.16.0.1 merge such changelogs correctly,
125+ however then a stricter check was introduced that aborts the script.
126+ In that case, the result should not be a success with a zero byte
127+ merge result file. See lp:893495 for such an issue.
128+ """
129+ invalid_changelog = """\
130+pseudo-prog (ss-0) unstable; urgency=low
131+
132+ * New project released!!!!
133+
134+ -- Barry Foo <barry@example.com> Thu, 28 Jan 2010 10:00:44 +0000
135+
136+""".splitlines(True)
137+ handled = self.assertMergeChangelog(
138+ expected_lines=v_112_1 + v_111_2 + invalid_changelog,
139+ this_lines=v_112_1 + invalid_changelog,
140+ other_lines=v_111_2 + invalid_changelog,
141+ base_lines=invalid_changelog,
142+ possible_error=True)
143+ if not handled:
144+ # Can't assert on the exact message as it depends on the locale
145+ self.assertContainsRe(self.logged_warnings.getvalue(),
146+ "ss-0( is not a valid version)?")
147+
148+ def test_invalid_version_non_ascii(self):
149+ """Invalid version with non-ascii data is rejected or correctly merged
150+
151+ Such a version has always been treated as invalid so fails
152+ consistently across dpkg versions currently.
153+ """
154+ invalid_changelog = """\
155+pseudo-prog (\xc2\xa7) unstable; urgency=low
156+
157+ * New project released!!!!
158+
159+ -- Barry Foo <barry@example.com> Thu, 28 Jan 2010 10:00:44 +0000
160+
161+""".splitlines(True)
162+ handled = self.assertMergeChangelog(
163+ expected_lines=v_112_1 + v_111_2 + invalid_changelog,
164+ this_lines=v_112_1 + invalid_changelog,
165+ other_lines=v_111_2 + invalid_changelog,
166+ base_lines=invalid_changelog,
167+ possible_error=True)
168+ if not handled:
169+ # Can't assert on the exact message as it depends on the locale
170+ self.assertContainsRe(self.logged_warnings.getvalue(),
171+ "\xc2\xa7( is not a valid version)?")
172+>>>>>>> MERGE-SOURCE
173
174
175 class TestChangelogHook(tests.TestCaseWithMemoryTransport):

Subscribers

People subscribed via source and target branches