Esempio n. 1
0
    def dump(self, fn, compression_type=deltarepo.XZ, stat=None):
        """Dump data to a file.

        :param fn: path to a file
        :type fn: str
        :param compression_type: Type of compression
        :type compression_type: int
        :param stat: Stat object
        :type stat: cr.ContentStat or None
        :returns: Final path (the used basename with compression suffix)
        :rtype: str
        """
        if (compression_type is None
                or compression_type == cr.UNKNOWN_COMPRESSION
                or compression_type == cr.AUTO_DETECT_COMPRESSION):
            raise DeltaRepoError("Bad compression type: "
                                 "{0}".format(compression_type))

        suffix = cr.compression_suffix(compression_type)
        if suffix and not fn.endswith(suffix):
            fn += suffix

        content = self.dumps()
        f = cr.CrFile(fn, cr.MODE_WRITE, compression_type)
        f.write(content)
        f.close()
        return fn
Esempio n. 2
0
    def test_crfile_no_compression(self):
        path = os.path.join(self.tmpdir, "foo")
        f = cr.CrFile(path, cr.MODE_WRITE, cr.NO_COMPRESSION)
        self.assertTrue(f)
        self.assertTrue(os.path.isfile(path))
        f.write("foobar")
        f.close()

        with open(path) as foo:
            self.assertEqual(foo.read(), "foobar")
Esempio n. 3
0
    def test_crfile_gz_compression(self):
        path = os.path.join(self.tmpdir, "foo.gz")
        f = cr.CrFile(path, cr.MODE_WRITE, cr.GZ_COMPRESSION)
        self.assertTrue(f)
        self.assertTrue(os.path.isfile(path))
        f.write("foobar")
        f.close()

        import gzip
        with gzip.open(path) as foo_gz:
            self.assertEqual(foo_gz.read().decode('utf-8'), "foobar")
Esempio n. 4
0
    def test_crfile_bz2_compression(self):
        path = os.path.join(self.tmpdir, "foo.bz2")
        f = cr.CrFile(path, cr.MODE_WRITE, cr.BZ2_COMPRESSION)
        self.assertTrue(f)
        self.assertTrue(os.path.isfile(path))
        f.write("foobar")
        f.close()

        import bz2
        content = bz2.decompress(open(path, 'rb').read()).decode('utf-8')
        self.assertEqual(content, "foobar")
Esempio n. 5
0
    def test_crfile_operations_on_closed_file(self):
        # Already closed file
        path = os.path.join(self.tmpdir, "primary.xml.gz")
        f = cr.CrFile(path, cr.MODE_WRITE, cr.GZ_COMPRESSION)
        self.assertTrue(f)
        self.assertTrue(os.path.isfile(path))
        f.close()

        self.assertRaises(cr.CreaterepoCError, f.write, "foobar")
        f.close()  # No error should be raised
        del (f)  # No error should be raised
Esempio n. 6
0
    def test_crfile_gz_compression(self):
        path = os.path.join(self.tmpdir, "foo.gz")
        f = cr.CrFile(path, cr.MODE_WRITE, cr.GZ_COMPRESSION)
        self.assertTrue(f)
        self.assertTrue(os.path.isfile(path))
        f.write("foobar")
        f.close()

        import gzip
        content = gzip.open(path).read()
        self.assertEqual(content, "foobar")
Esempio n. 7
0
    def test_crfile_xz_compression(self):
        path = os.path.join(self.tmpdir, "foo.xz")
        f = cr.CrFile(path, cr.MODE_WRITE, cr.XZ_COMPRESSION)
        self.assertTrue(f)
        self.assertTrue(os.path.isfile(path))
        f.write("foobar")
        f.close()

        import subprocess
        p = subprocess.Popen(["unxz", "--stdout", path],
                             stdout=subprocess.PIPE)
        content = p.stdout.read().decode('utf-8')
        self.assertEqual(content, "foobar")
Esempio n. 8
0
    def test_crfile_zck_compression(self):
        if cr.HAS_ZCK == 0:
            return

        path = os.path.join(self.tmpdir, "foo.zck")
        f = cr.CrFile(path, cr.MODE_WRITE, cr.ZCK_COMPRESSION)
        self.assertTrue(f)
        self.assertTrue(os.path.isfile(path))
        f.write("foobar")
        f.close()

        import subprocess
        with subprocess.Popen(["unzck", "--stdout", path],
                              stdout=subprocess.PIPE,
                              close_fds=False) as p:
            content = p.stdout.read().decode('utf-8')
            self.assertEqual(content, "foobar")
Esempio n. 9
0
    def test_contentstat_ref_in_crfile(self):
        """Test if reference is saved properly"""

        cs = cr.ContentStat(cr.SHA256)
        self.assertEqual(cs.size, 0)
        self.assertEqual(cs.checksum_type, cr.SHA256)
        self.assertEqual(cs.checksum, None)

        path = os.path.join(self.tmpdir, "foofile.gz")
        f = cr.CrFile(path, cr.MODE_WRITE, cr.GZ_COMPRESSION, cs)
        self.assertTrue(f)
        self.assertTrue(os.path.isfile(path))
        del cs
        f.write("foobar")
        f.close()

        self.assertTrue(os.path.isfile(path))
Esempio n. 10
0
 def test_crfile_basic_operations(self):
     f = cr.CrFile(self.tmpdir + "/foo.gz", cr.MODE_WRITE,
                   cr.GZ_COMPRESSION, None)
     self.assertTrue(f)
     self.assertTrue(os.path.isfile(self.tmpdir + "/foo.gz"))