def testPrefixMultilineString(self): """lp.archiveuploader.utils.prefix_multi_line_string should work""" from lp.archiveuploader.utils import prefix_multi_line_string self.assertEquals("A:foo\nA:bar", prefix_multi_line_string("foo\nbar", "A:")) self.assertEquals("A:foo\nA:bar", prefix_multi_line_string("foo\n\nbar", "A:")) self.assertEquals("A:foo\nA:\nA:bar", prefix_multi_line_string("foo\n\nbar", "A:", 1))
def testPrefixMultilineString(self): """lp.archiveuploader.utils.prefix_multi_line_string should work""" from lp.archiveuploader.utils import prefix_multi_line_string self.assertEqual("A:foo\nA:bar", prefix_multi_line_string("foo\nbar", "A:")) self.assertEqual("A:foo\nA:bar", prefix_multi_line_string("foo\n\nbar", "A:")) self.assertEqual("A:foo\nA:\nA:bar", prefix_multi_line_string("foo\n\nbar", "A:", 1))
def verifyFormat(self): """Check if the DEB format is sane. Debian packages are in fact 'ar' files. Thus we run '/usr/bin/ar' to look at the contents of the deb files to confirm they make sense. """ ar_process = subprocess.Popen(["/usr/bin/ar", "t", self.filepath], stdout=subprocess.PIPE) output = ar_process.stdout.read() result = ar_process.wait() if result != 0: yield UploadError("%s: 'ar t' invocation failed." % self.filename) yield UploadError( prefix_multi_line_string(output, " [ar output:] ")) chunks = output.strip().split("\n") if len(chunks) != 3: yield UploadError("%s: found %d chunks, expecting 3. %r" % (self.filename, len(chunks), chunks)) debian_binary, control_tar, data_tar = chunks if debian_binary != "debian-binary": yield UploadError( "%s: first chunk is %s, expected debian-binary." % (self.filename, debian_binary)) if control_tar != "control.tar.gz": yield UploadError( "%s: second chunk is %s, expected control.tar.gz." % (self.filename, control_tar)) if data_tar not in ("data.tar.gz", "data.tar.bz2", "data.tar.lzma", "data.tar.xz"): yield UploadError("%s: third chunk is %s, expected data.tar.gz, " "data.tar.bz2, data.tar.lzma or data.tar.xz." % (self.filename, data_tar))
def verifyFormat(self): """Check if the DEB format is sane. Debian packages are in fact 'ar' files. Thus we run '/usr/bin/ar' to look at the contents of the deb files to confirm they make sense. """ ar_process = subprocess.Popen( ["/usr/bin/ar", "t", self.filepath], stdout=subprocess.PIPE) output = ar_process.stdout.read() result = ar_process.wait() if result != 0: yield UploadError( "%s: 'ar t' invocation failed." % self.filename) yield UploadError( prefix_multi_line_string(output, " [ar output:] ")) chunks = output.strip().split("\n") if len(chunks) != 3: yield UploadError( "%s: found %d chunks, expecting 3. %r" % ( self.filename, len(chunks), chunks)) debian_binary, control_tar, data_tar = chunks if debian_binary != "debian-binary": yield UploadError( "%s: first chunk is %s, expected debian-binary." % ( self.filename, debian_binary)) if control_tar != "control.tar.gz": yield UploadError( "%s: second chunk is %s, expected control.tar.gz." % ( self.filename, control_tar)) if data_tar not in ("data.tar.gz", "data.tar.bz2", "data.tar.lzma", "data.tar.xz"): yield UploadError( "%s: third chunk is %s, expected data.tar.gz, " "data.tar.bz2, data.tar.lzma or data.tar.xz." % (self.filename, data_tar))