Merge lp:~stevenk/python-debian/merge-and-stricter into lp:~launchpad-pqm/python-debian/devel
- merge-and-stricter
- Merge into devel
Proposed by
Steve Kowalik
Status: | Merged |
---|---|
Merged at revision: | 186 |
Proposed branch: | lp:~stevenk/python-debian/merge-and-stricter |
Merge into: | lp:~launchpad-pqm/python-debian/devel |
Diff against target: |
361 lines (+184/-22) 8 files modified
debian/changelog (+14/-10) debian/control (+2/-2) lib/debian/changelog.py (+77/-0) lib/debian/deb822.py (+27/-10) lib/debian/debian_support.py (+4/-0) tests/test_Sources.mixed_encoding (+34/-0) tests/test_changelog.py (+2/-0) tests/test_deb822.py (+24/-0) |
To merge this branch: | bzr merge lp:~stevenk/python-debian/merge-and-stricter |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Robert Collins (community) | Approve | ||
William Grant (community) | code* | Approve | |
Review via email: mp+55277@code.launchpad.net |
Commit message
Description of the change
Merge to the tip of lp:python-debian, and include a patch that makes BaseVersion stricter about versions.
To post a comment you must log in.
Revision history for this message
William Grant (wgrant) : | # |
review:
Approve
(code*)
Revision history for this message
Robert Collins (lifeless) wrote : | # |
(the find() -> in change would be nice too, of course)
- 188. By Steve Kowalik
-
Use in, rather than .find()
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'debian/changelog' | |||
2 | --- debian/changelog 2010-08-02 22:12:54 +0000 | |||
3 | +++ debian/changelog 2011-03-29 04:59:41 +0000 | |||
4 | @@ -1,19 +1,23 @@ | |||
6 | 1 | python-debian (0.1.17~bzr184~launchpad2) hardy; urgency=low | 1 | python-debian (0.1.18) unstable; urgency=low |
7 | 2 | |||
8 | 3 | * Support installation together with older versions of python-apt. | ||
9 | 4 | Original patch by Jelmer Vernooij. (Closes: #590805) | ||
10 | 5 | |||
11 | 6 | -- John Wright <jsw@debian.org> Wed, 04 Aug 2010 01:16:52 -0700 | ||
12 | 7 | |||
13 | 8 | python-debian (0.1.17) unstable; urgency=low | ||
14 | 2 | 9 | ||
15 | 3 | [ James Westby ] | 10 | [ James Westby ] |
16 | 4 | * Use os.path.normpath to hide python version differences | 11 | * Use os.path.normpath to hide python version differences |
17 | 5 | 12 | ||
18 | 6 | [ John Wright ] | 13 | [ John Wright ] |
19 | 7 | * test_deb822.py: Make test_gpg_info more robust (Closes: #582878) | 14 | * test_deb822.py: Make test_gpg_info more robust (Closes: #582878) |
29 | 8 | * Support installation together with older versions of python-apt. | 15 | * deb822: Use chardet to try to detect character encodings as necessary |
30 | 9 | Original patch by Jelmer Vernooij. (Closes: #590805) | 16 | - This is only used when the specified encoding doesn't work. It's mainly |
31 | 10 | 17 | useful for files containing multiple deb822 paragraphs with mixed | |
32 | 11 | [ Jelmer Vernooij ] | 18 | encodings, like etch's Sources file. (Closes: #586021) |
33 | 12 | * Always use NativeVersion class to work around Debian bug #573592. | 19 | |
34 | 13 | * Upload to Launchpad PPA. | 20 | -- John Wright <jsw@debian.org> Sun, 25 Jul 2010 02:07:11 -0700 |
26 | 14 | * Downgrade source format to 1.0 to support building on Hardy. | ||
27 | 15 | |||
28 | 16 | -- Jelmer Vernooij <jelmer@debian.org> Thu, 29 Jul 2010 14:23:02 +0200 | ||
35 | 17 | 21 | ||
36 | 18 | python-debian (0.1.16) unstable; urgency=low | 22 | python-debian (0.1.16) unstable; urgency=low |
37 | 19 | 23 | ||
38 | 20 | 24 | ||
39 | === modified file 'debian/control' | |||
40 | --- debian/control 2010-08-02 22:12:54 +0000 | |||
41 | +++ debian/control 2011-03-29 04:59:41 +0000 | |||
42 | @@ -8,7 +8,7 @@ | |||
43 | 8 | Reinhard Tartler <siretart@tauware.de>, | 8 | Reinhard Tartler <siretart@tauware.de>, |
44 | 9 | Stefano Zacchiroli <zack@debian.org>, | 9 | Stefano Zacchiroli <zack@debian.org>, |
45 | 10 | John Wright <jsw@debian.org> | 10 | John Wright <jsw@debian.org> |
47 | 11 | Build-Depends: debhelper (>= 5.0.37.2), python, python-setuptools | 11 | Build-Depends: debhelper (>= 5.0.37.2), python, python-setuptools, python-chardet |
48 | 12 | Build-Depends-Indep: python-support (>= 0.3) | 12 | Build-Depends-Indep: python-support (>= 0.3) |
49 | 13 | Standards-Version: 3.8.4 | 13 | Standards-Version: 3.8.4 |
50 | 14 | Vcs-Browser: http://git.debian.org/?p=pkg-python-debian/python-debian.git | 14 | Vcs-Browser: http://git.debian.org/?p=pkg-python-debian/python-debian.git |
51 | @@ -16,7 +16,7 @@ | |||
52 | 16 | 16 | ||
53 | 17 | Package: python-debian | 17 | Package: python-debian |
54 | 18 | Architecture: all | 18 | Architecture: all |
56 | 19 | Depends: ${python:Depends}, ${misc:Depends} | 19 | Depends: ${python:Depends}, ${misc:Depends}, python-chardet |
57 | 20 | Recommends: python-apt | 20 | Recommends: python-apt |
58 | 21 | Suggests: gpgv | 21 | Suggests: gpgv |
59 | 22 | Provides: python-deb822 | 22 | Provides: python-deb822 |
60 | 23 | 23 | ||
61 | === modified file 'lib/debian/changelog.py' | |||
62 | --- lib/debian/changelog.py 2010-03-14 09:16:30 +0000 | |||
63 | +++ lib/debian/changelog.py 2011-03-29 04:59:41 +0000 | |||
64 | @@ -23,7 +23,10 @@ | |||
65 | 23 | 23 | ||
66 | 24 | """This module implements facilities to deal with Debian changelogs.""" | 24 | """This module implements facilities to deal with Debian changelogs.""" |
67 | 25 | 25 | ||
68 | 26 | import os | ||
69 | 27 | import pwd | ||
70 | 26 | import re | 28 | import re |
71 | 29 | import socket | ||
72 | 27 | import warnings | 30 | import warnings |
73 | 28 | 31 | ||
74 | 29 | import debian_support | 32 | import debian_support |
75 | @@ -470,3 +473,77 @@ | |||
76 | 470 | 473 | ||
77 | 471 | def write_to_open_file(self, file): | 474 | def write_to_open_file(self, file): |
78 | 472 | file.write(self.__str__()) | 475 | file.write(self.__str__()) |
79 | 476 | |||
80 | 477 | |||
81 | 478 | def get_maintainer(): | ||
82 | 479 | """Get the maintainer information in the same manner as dch. | ||
83 | 480 | |||
84 | 481 | This function gets the information about the current user for | ||
85 | 482 | the maintainer field using environment variables of gecos | ||
86 | 483 | informations as approriate. | ||
87 | 484 | |||
88 | 485 | It uses the same methods as dch to get the information, namely | ||
89 | 486 | DEBEMAIL, DEBFULLNAME, EMAIL, NAME, /etc/mailname and gecos. | ||
90 | 487 | |||
91 | 488 | :returns: a tuple of the full name, email pair as strings. | ||
92 | 489 | Either of the pair may be None if that value couldn't | ||
93 | 490 | be determined. | ||
94 | 491 | """ | ||
95 | 492 | env = os.environ | ||
96 | 493 | regex = re.compile(r"^(.*)\s+<(.*)>$") | ||
97 | 494 | |||
98 | 495 | # Split email and name | ||
99 | 496 | if 'DEBEMAIL' in env: | ||
100 | 497 | match_obj = regex.match(env['DEBEMAIL']) | ||
101 | 498 | if match_obj: | ||
102 | 499 | if not 'DEBFULLNAME' in env: | ||
103 | 500 | env['DEBFULLNAME'] = match_obj.group(1) | ||
104 | 501 | env['DEBEMAIL'] = match_obj.group(2) | ||
105 | 502 | if 'DEBEMAIL' not in env or 'DEBFULLNAME' not in env: | ||
106 | 503 | if 'EMAIL' in env: | ||
107 | 504 | match_obj = regex.match(env['EMAIL']) | ||
108 | 505 | if match_obj: | ||
109 | 506 | if not 'DEBFULLNAME' in env: | ||
110 | 507 | env['DEBFULLNAME'] = match_obj.group(1) | ||
111 | 508 | env['EMAIL'] = match_obj.group(2) | ||
112 | 509 | |||
113 | 510 | # Get maintainer's name | ||
114 | 511 | if 'DEBFULLNAME' in env: | ||
115 | 512 | maintainer = env['DEBFULLNAME'] | ||
116 | 513 | elif 'NAME' in env: | ||
117 | 514 | maintainer = env['NAME'] | ||
118 | 515 | else: | ||
119 | 516 | # Use password database if no data in environment variables | ||
120 | 517 | try: | ||
121 | 518 | maintainer = re.sub(r',.*', '', pwd.getpwuid(os.getuid()).pw_gecos) | ||
122 | 519 | except (KeyError, AttributeError): | ||
123 | 520 | maintainer = None | ||
124 | 521 | |||
125 | 522 | # Get maintainer's mail address | ||
126 | 523 | if 'DEBEMAIL' in env: | ||
127 | 524 | email = env['DEBEMAIL'] | ||
128 | 525 | elif 'EMAIL' in env: | ||
129 | 526 | email = env['EMAIL'] | ||
130 | 527 | else: | ||
131 | 528 | addr = None | ||
132 | 529 | if os.path.exists('/etc/mailname'): | ||
133 | 530 | f = open('/etc/mailname') | ||
134 | 531 | try: | ||
135 | 532 | addr = f.readline().strip() | ||
136 | 533 | finally: | ||
137 | 534 | f.close() | ||
138 | 535 | if not addr: | ||
139 | 536 | addr = socket.getfqdn() | ||
140 | 537 | if addr: | ||
141 | 538 | user = pwd.getpwuid(os.getuid()).pw_name | ||
142 | 539 | if not user: | ||
143 | 540 | addr = None | ||
144 | 541 | else: | ||
145 | 542 | addr = "%s@%s" % (user, addr) | ||
146 | 543 | |||
147 | 544 | if addr: | ||
148 | 545 | email = addr | ||
149 | 546 | else: | ||
150 | 547 | email = None | ||
151 | 548 | |||
152 | 549 | return (maintainer, email) | ||
153 | 473 | 550 | ||
154 | === modified file 'lib/debian/deb822.py' | |||
155 | --- lib/debian/deb822.py 2010-08-02 22:12:54 +0000 | |||
156 | +++ lib/debian/deb822.py 2011-03-29 04:59:41 +0000 | |||
157 | @@ -4,7 +4,7 @@ | |||
158 | 4 | # (.changes, .dsc, Packages, Sources, etc) | 4 | # (.changes, .dsc, Packages, Sources, etc) |
159 | 5 | # | 5 | # |
160 | 6 | # Copyright (C) 2005-2006 dann frazier <dannf@dannf.org> | 6 | # Copyright (C) 2005-2006 dann frazier <dannf@dannf.org> |
162 | 7 | # Copyright (C) 2006-2008 John Wright <john@johnwright.org> | 7 | # Copyright (C) 2006-2010 John Wright <john@johnwright.org> |
163 | 8 | # Copyright (C) 2006 Adeodato Simó <dato@net.com.org.es> | 8 | # Copyright (C) 2006 Adeodato Simó <dato@net.com.org.es> |
164 | 9 | # Copyright (C) 2008 Stefano Zacchiroli <zack@upsilon.cc> | 9 | # Copyright (C) 2008 Stefano Zacchiroli <zack@upsilon.cc> |
165 | 10 | # | 10 | # |
166 | @@ -32,10 +32,13 @@ | |||
167 | 32 | except (ImportError, AttributeError): | 32 | except (ImportError, AttributeError): |
168 | 33 | _have_apt_pkg = False | 33 | _have_apt_pkg = False |
169 | 34 | 34 | ||
170 | 35 | import chardet | ||
171 | 35 | import new | 36 | import new |
172 | 36 | import re | 37 | import re |
173 | 37 | import string | 38 | import string |
174 | 38 | import sys | 39 | import sys |
175 | 40 | import warnings | ||
176 | 41 | |||
177 | 39 | import StringIO | 42 | import StringIO |
178 | 40 | import UserDict | 43 | import UserDict |
179 | 41 | 44 | ||
180 | @@ -178,7 +181,25 @@ | |||
181 | 178 | 181 | ||
182 | 179 | if isinstance(value, str): | 182 | if isinstance(value, str): |
183 | 180 | # Always return unicode objects instead of strings | 183 | # Always return unicode objects instead of strings |
185 | 181 | value = value.decode(self.encoding) | 184 | try: |
186 | 185 | value = value.decode(self.encoding) | ||
187 | 186 | except UnicodeDecodeError, e: | ||
188 | 187 | # Evidently, the value wasn't encoded with the encoding the | ||
189 | 188 | # user specified. Try detecting it. | ||
190 | 189 | warnings.warn('decoding from %s failed; attempting to detect ' | ||
191 | 190 | 'the true encoding' % self.encoding, | ||
192 | 191 | UnicodeWarning) | ||
193 | 192 | result = chardet.detect(value) | ||
194 | 193 | try: | ||
195 | 194 | value = value.decode(result['encoding']) | ||
196 | 195 | except UnicodeDecodeError: | ||
197 | 196 | raise e | ||
198 | 197 | else: | ||
199 | 198 | # Assume the rest of the paragraph is in this encoding as | ||
200 | 199 | # well (there's no sense in repeating this exercise for | ||
201 | 200 | # every field). | ||
202 | 201 | self.encoding = result['encoding'] | ||
203 | 202 | |||
204 | 182 | return value | 203 | return value |
205 | 183 | 204 | ||
206 | 184 | def __delitem__(self, key): | 205 | def __delitem__(self, key): |
207 | @@ -309,33 +330,29 @@ | |||
208 | 309 | curkey = None | 330 | curkey = None |
209 | 310 | content = "" | 331 | content = "" |
210 | 311 | for line in self.gpg_stripped_paragraph(sequence): | 332 | for line in self.gpg_stripped_paragraph(sequence): |
211 | 312 | if isinstance(line, str): | ||
212 | 313 | line = line.decode(self.encoding) | ||
213 | 314 | m = single.match(line) | 333 | m = single.match(line) |
214 | 315 | if m: | 334 | if m: |
215 | 316 | if curkey: | 335 | if curkey: |
217 | 317 | self[curkey] += content | 336 | self[curkey] = content |
218 | 318 | 337 | ||
219 | 319 | if not wanted_field(m.group('key')): | 338 | if not wanted_field(m.group('key')): |
220 | 320 | curkey = None | 339 | curkey = None |
221 | 321 | continue | 340 | continue |
222 | 322 | 341 | ||
223 | 323 | curkey = m.group('key') | 342 | curkey = m.group('key') |
226 | 324 | self[curkey] = m.group('data') | 343 | content = m.group('data') |
225 | 325 | content = "" | ||
227 | 326 | continue | 344 | continue |
228 | 327 | 345 | ||
229 | 328 | m = multi.match(line) | 346 | m = multi.match(line) |
230 | 329 | if m: | 347 | if m: |
231 | 330 | if curkey: | 348 | if curkey: |
233 | 331 | self[curkey] += content | 349 | self[curkey] = content |
234 | 332 | 350 | ||
235 | 333 | if not wanted_field(m.group('key')): | 351 | if not wanted_field(m.group('key')): |
236 | 334 | curkey = None | 352 | curkey = None |
237 | 335 | continue | 353 | continue |
238 | 336 | 354 | ||
239 | 337 | curkey = m.group('key') | 355 | curkey = m.group('key') |
240 | 338 | self[curkey] = "" | ||
241 | 339 | content = "" | 356 | content = "" |
242 | 340 | continue | 357 | continue |
243 | 341 | 358 | ||
244 | @@ -345,7 +362,7 @@ | |||
245 | 345 | continue | 362 | continue |
246 | 346 | 363 | ||
247 | 347 | if curkey: | 364 | if curkey: |
249 | 348 | self[curkey] += content | 365 | self[curkey] = content |
250 | 349 | 366 | ||
251 | 350 | def __str__(self): | 367 | def __str__(self): |
252 | 351 | return self.dump() | 368 | return self.dump() |
253 | 352 | 369 | ||
254 | === modified file 'lib/debian/debian_support.py' | |||
255 | --- lib/debian/debian_support.py 2010-03-14 11:37:42 +0000 | |||
256 | +++ lib/debian/debian_support.py 2011-03-29 04:59:41 +0000 | |||
257 | @@ -94,6 +94,10 @@ | |||
258 | 94 | m = self.re_valid_version.match(version) | 94 | m = self.re_valid_version.match(version) |
259 | 95 | if not m: | 95 | if not m: |
260 | 96 | raise ValueError("Invalid version string %r" % version) | 96 | raise ValueError("Invalid version string %r" % version) |
261 | 97 | # If there no epoch ("1:..."), then the upstream version can not | ||
262 | 98 | # contain a :. | ||
263 | 99 | if m.group("epoch") is None and ':' in m.group("upstream_version"): | ||
264 | 100 | raise ValueError("Invalid version string %r" % version) | ||
265 | 97 | 101 | ||
266 | 98 | self.__full_version = version | 102 | self.__full_version = version |
267 | 99 | self.__epoch = m.group("epoch") | 103 | self.__epoch = m.group("epoch") |
268 | 100 | 104 | ||
269 | === added file 'tests/test_Sources.mixed_encoding' | |||
270 | --- tests/test_Sources.mixed_encoding 1970-01-01 00:00:00 +0000 | |||
271 | +++ tests/test_Sources.mixed_encoding 2011-03-29 04:59:41 +0000 | |||
272 | @@ -0,0 +1,34 @@ | |||
273 | 1 | Package: amarok | ||
274 | 2 | Binary: amarok, amarok-engines, amarok-xine | ||
275 | 3 | Version: 1.4.4-4etch1 | ||
276 | 4 | Priority: optional | ||
277 | 5 | Section: kde | ||
278 | 6 | Maintainer: Adeodato Simó <dato@net.com.org.es> | ||
279 | 7 | Build-Depends: cdbs, debhelper (>= 5), quilt, bzip2, automake1.9, libtool, kdelibs4-dev, kdemultimedia-dev, kdebase-dev, libxine-dev, libtag1-dev (>> 1.4), libsqlite3-dev, libtunepimp3-dev, libmysqlclient15-dev, libpq-dev, xmms-dev, libvisual-0.4-dev, libsdl1.2-dev, libifp-dev, libusb-dev, libgpod-dev, libnjb-dev, ruby, ruby1.8-dev, dpkg-dev (>= 1.13.19) | ||
280 | 8 | Architecture: any | ||
281 | 9 | Standards-Version: 3.7.2 | ||
282 | 10 | Format: 1.0 | ||
283 | 11 | Directory: pool/main/a/amarok | ||
284 | 12 | Files: | ||
285 | 13 | f8e80af55fbd8386e6b13b0b12d798f4 986 amarok_1.4.4-4etch1.dsc | ||
286 | 14 | 0adbbd8373da2198b80e509618a2dab9 17628566 amarok_1.4.4.orig.tar.gz | ||
287 | 15 | c29b0538c033ededacc6d31339d17700 42402 amarok_1.4.4-4etch1.diff.gz | ||
288 | 16 | Uploaders: Ana Beatriz Guerrero Lopez <ana@debian.org> | ||
289 | 17 | |||
290 | 18 | Package: texinfo | ||
291 | 19 | Binary: texinfo, info | ||
292 | 20 | Version: 4.8.dfsg.1-4 | ||
293 | 21 | Priority: important | ||
294 | 22 | Section: doc | ||
295 | 23 | Maintainer: Norbert Preining <preining@debian.org> | ||
296 | 24 | Build-Depends: debhelper (>= 5), dpatch, libncurses5-dev | libncurses-dev, gettext | ||
297 | 25 | Architecture: any | ||
298 | 26 | Standards-Version: 3.7.2 | ||
299 | 27 | Format: 1.0 | ||
300 | 28 | Directory: pool/main/t/texinfo | ||
301 | 29 | Files: | ||
302 | 30 | 2c233d2bf6627eac32deb9bb87726ea1 680 texinfo_4.8.dfsg.1-4.dsc | ||
303 | 31 | 614273ac8568a25926aae374cd9a6683 1926534 texinfo_4.8.dfsg.1.orig.tar.gz | ||
304 | 32 | e01520524bc114d90a2a1e5eefe71b50 101211 texinfo_4.8.dfsg.1-4.diff.gz | ||
305 | 33 | Uploaders: Frank Küster <frank@debian.org> | ||
306 | 34 | |||
307 | 0 | 35 | ||
308 | === modified file 'tests/test_changelog.py' | |||
309 | --- tests/test_changelog.py 2010-03-14 09:16:30 +0000 | |||
310 | +++ tests/test_changelog.py 2011-03-29 04:59:41 +0000 | |||
311 | @@ -202,6 +202,8 @@ | |||
312 | 202 | self._test_version('2:1.0.4+svn26-1ubuntu1', '2', '1.0.4+svn26', | 202 | self._test_version('2:1.0.4+svn26-1ubuntu1', '2', '1.0.4+svn26', |
313 | 203 | '1ubuntu1') | 203 | '1ubuntu1') |
314 | 204 | self._test_version('2:1.0.4~rc2-1', '2', '1.0.4~rc2', '1') | 204 | self._test_version('2:1.0.4~rc2-1', '2', '1.0.4~rc2', '1') |
315 | 205 | self.assertRaises( | ||
316 | 206 | ValueError, changelog.Version, 'a1:1.8.8-070403-1~priv1') | ||
317 | 205 | 207 | ||
318 | 206 | def test_version_updating(self): | 208 | def test_version_updating(self): |
319 | 207 | v = changelog.Version('1:1.4.1-1') | 209 | v = changelog.Version('1:1.4.1-1') |
320 | 208 | 210 | ||
321 | === modified file 'tests/test_deb822.py' | |||
322 | --- tests/test_deb822.py 2010-07-25 07:12:28 +0000 | |||
323 | +++ tests/test_deb822.py 2011-03-29 04:59:41 +0000 | |||
324 | @@ -21,6 +21,7 @@ | |||
325 | 21 | import re | 21 | import re |
326 | 22 | import sys | 22 | import sys |
327 | 23 | import unittest | 23 | import unittest |
328 | 24 | import warnings | ||
329 | 24 | from StringIO import StringIO | 25 | from StringIO import StringIO |
330 | 25 | 26 | ||
331 | 26 | sys.path.insert(0, '../lib/debian/') | 27 | sys.path.insert(0, '../lib/debian/') |
332 | @@ -702,6 +703,29 @@ | |||
333 | 702 | self.assertEqual(utf8_contents, latin1_to_utf8.getvalue()) | 703 | self.assertEqual(utf8_contents, latin1_to_utf8.getvalue()) |
334 | 703 | self.assertEqual(latin1_contents, utf8_to_latin1.getvalue()) | 704 | self.assertEqual(latin1_contents, utf8_to_latin1.getvalue()) |
335 | 704 | 705 | ||
336 | 706 | def test_mixed_encodings(self): | ||
337 | 707 | """Test that we can handle a simple case of mixed encodings | ||
338 | 708 | |||
339 | 709 | In general, this isn't guaranteed to work. It uses the chardet | ||
340 | 710 | package, which tries to determine heuristically the encoding of the | ||
341 | 711 | text given to it. But as far as I've seen, it's reliable for mixed | ||
342 | 712 | latin1 and utf-8 in maintainer names in old Sources files... | ||
343 | 713 | """ | ||
344 | 714 | |||
345 | 715 | # Avoid spitting out the encoding warning during testing. | ||
346 | 716 | warnings.filterwarnings(action='ignore', category=UnicodeWarning) | ||
347 | 717 | |||
348 | 718 | filename = 'test_Sources.mixed_encoding' | ||
349 | 719 | for paragraphs in [deb822.Sources.iter_paragraphs(file(filename)), | ||
350 | 720 | deb822.Sources.iter_paragraphs(file(filename), | ||
351 | 721 | use_apt_pkg=False)]: | ||
352 | 722 | p1 = paragraphs.next() | ||
353 | 723 | self.assertEqual(p1['maintainer'], | ||
354 | 724 | u'Adeodato Simó <dato@net.com.org.es>') | ||
355 | 725 | p2 = paragraphs.next() | ||
356 | 726 | self.assertEqual(p2['uploaders'], | ||
357 | 727 | u'Frank Küster <frank@debian.org>') | ||
358 | 728 | |||
359 | 705 | class TestPkgRelations(unittest.TestCase): | 729 | class TestPkgRelations(unittest.TestCase): |
360 | 706 | 730 | ||
361 | 707 | def test_packages(self): | 731 | def test_packages(self): |
Looks fine to me