Esempio n. 1
0
 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))
Esempio n. 2
0
 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))