[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