[Pkg-python-debian-commits] r72 trunk: * debfile.py
Stefano Zacchiroli
zack at bononia.it
Fri Aug 17 13:03:32 UTC 2007
------------------------------------------------------------
revno: 72
committer: Stefano Zacchiroli <zack at bononia.it>
branch nick: pkg-python-debian
timestamp: Fri 2007-08-17 15:03:32 +0200
message:
* debfile.py
- do not fail if extra ar members exist in a .deb, according to deb(5)
extra ar members should be ignored (closes: #438486). Also add the
corresponding regression test to test_debfile.py
added:
debian_bundle/test-broken.deb.uu
modified:
debian/changelog
debian_bundle/debfile.py
debian_bundle/test_debfile.py
-------------- next part --------------
=== added file 'debian_bundle/test-broken.deb.uu'
--- a/debian_bundle/test-broken.deb.uu 1970-01-01 00:00:00 +0000
+++ b/debian_bundle/test-broken.deb.uu 2007-08-17 13:03:32 +0000
@@ -0,0 +1,18 @@
+begin 644 hello-broken_2.2-2_i386.deb
+M(3QA<F-H/@ID96)I86XM8FEN87)Y+R`@,3$X-S,U-#4U,B`@,3`P,"`@,3`P
+M,"`@,3`P-C0T("`T("`@("`@("`@8`HR+C`*8V]N=')O;"YT87(N9WHO(#$Q
+M.#<S-30U-3(@(#$P,#`@(#$P,#`@(#$P,#8T-"`@-3(Q("`@("`@(&`*'XL(
+M`````````^W17VO;,!``\#SK4]Q;6TC<_&F<$+:R06'D82.0K<]3Y(NM3=$9
+M24Z6??J=G69LA6U/*0SNAX,<^>Z0[K+;WL4-V6PZ[5;V?.W>1\-\.!L-Q],\
+MY_W9;'37 at VGO!30QZ0#0"T3I;W'_^OZ?RFX-^13(77C^^=W=G^8_&DW&O\^?
+M=]KY#V7^%[?2YJLN<0$5.D?J$4.TY!<PSL:#L5JC2=W?`O?HU"I8"C8=%T!U
+MNZ^=>AM,91.'-8&+V,D\5P]8HR_B`IS=F!RN[U]SM4F6#_(;M?3<;N>P&*SM
+M=TZ8SN?JO;8^\0_#`M;:)ZM+ at D?K-+R*VN_YY4V!&ZM]1J&\Y_+1!%N?SO6Q
+M0C!.QV at -E`$Q65_V0?L"-)1$!>`WO:L=JB[RW8=/IWM"':@,>M>N16,P<OA6
+M[ZRS.O1A&RQ?P!U_5LP`EDD!'YP.$3SYP5/^CML%B:")R!7.!S&TJYN$`:+A
+M0 at 8Y@AP<*FLJ!0=J7`&4*@P'RVD;A,;KO>9K;EP;"OQIERG at 9XW<\":Z8Y\W
+MJ2FK!:\V`C_:GZ\&M(6*#FUF07R*AZY74)\&RU66J4W at JN=/^].0V\3TU)55
+MH"\\Q*L(GT\-.E!PQ=6Y3PJNN^.WA6R*Z+:_'F!+X7FAFTSUA!!"""&$$$((
+8(8000@@AA!!"""'$"_@!MPFYS0`H```*
+`
+end
=== modified file 'debian/changelog'
--- a/debian/changelog 2007-08-05 06:43:51 +0000
+++ b/debian/changelog 2007-08-17 13:03:32 +0000
@@ -1,3 +1,13 @@
+python-debian (0.1.5) UNRELEASED; urgency=low
+
+ [ Stefano Zacchiroli ]
+ * debfile.py
+ - do not fail if extra ar members exist in a .deb, according to deb(5)
+ extra ar members should be ignored (closes: #438486). Also add the
+ corresponding regression test to test_debfile.py
+
+ -- Stefano Zacchiroli <zack at debian.org> Fri, 17 Aug 2007 14:59:34 +0200
+
python-debian (0.1.4) unstable; urgency=low
[ James Westby ]
=== modified file 'debian_bundle/debfile.py'
--- a/debian_bundle/debfile.py 2007-07-18 14:50:22 +0000
+++ b/debian_bundle/debfile.py 2007-08-17 13:03:32 +0000
@@ -16,6 +16,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import gzip
+import string
import tarfile
import zlib
@@ -147,8 +148,12 @@
def __init__(self, filename=None, mode='r', fileobj=None):
ArFile.__init__(self, filename, mode, fileobj)
- if set(self.getnames()) != set([INFO_PART, CTRL_PART, DATA_PART]):
- raise DebError('unexpected .deb content')
+ required_names = set([INFO_PART, CTRL_PART, DATA_PART])
+ actual_names = set(self.getnames())
+ if not (required_names <= actual_names):
+ raise DebError(
+ "the following required .deb members are missing: " \
+ + string.join(required_names - actual_names))
self.__parts = {}
self.__parts[CTRL_PART] = DebControl(self.getmember(CTRL_PART))
=== modified file 'debian_bundle/test_debfile.py'
--- a/debian_bundle/test_debfile.py 2007-07-15 10:20:32 +0000
+++ b/debian_bundle/test_debfile.py 2007-08-17 13:03:32 +0000
@@ -98,6 +98,18 @@
class TestDebFile(unittest.TestCase):
def setUp(self):
+ def uudecode(infile, outfile):
+ uu_deb = open(infile, 'r')
+ bin_deb = open(outfile, 'w')
+ uu.decode(uu_deb, bin_deb)
+ uu_deb.close()
+ bin_deb.close()
+
+ self.debname = 'test.deb'
+ self.broken_debname = 'test-broken.deb'
+ uudecode('test.deb.uu', self.debname)
+ uudecode('test-broken.deb.uu', self.broken_debname)
+
self.debname = 'test.deb'
uu_deb = open('test.deb.uu', 'r')
bin_deb = open(self.debname, 'w')
@@ -108,6 +120,11 @@
def tearDown(self):
os.unlink(self.debname)
+ os.unlink(self.broken_debname)
+
+ def test_missing_members(self):
+ self.assertRaises(debfile.DebError,
+ lambda _: debfile.DebFile(self.broken_debname), None)
def test_data_names(self):
""" test for file list equality """
More information about the pkg-python-debian-commits
mailing list