acceptance_tests: Add tests for --cachedir option
authorTomas Mlcoch <tmlcoch@redhat.com>
Thu, 26 Jun 2014 11:59:48 +0000 (13:59 +0200)
committerTomas Mlcoch <tmlcoch@redhat.com>
Thu, 26 Jun 2014 11:59:48 +0000 (13:59 +0200)
acceptance_tests/tests/base.py
acceptance_tests/tests/test_createrepo_comparative.py

index 2bd4f11..a7c2f2b 100644 (file)
@@ -2,6 +2,7 @@ import os
 import re
 import time
 import shutil
+import filecmp
 import os.path
 import tempfile
 import unittest
@@ -264,3 +265,25 @@ class BaseTestCase(unittest.TestCase):
 
         unused_paterns = [x.pattern for x in (set(compiled_patterns) - set(used_patterns))]
         self.assertEqual(unused_paterns, [])  # Some patterns weren't used
+
+    def assert_same_dir_content(self, a, b):
+        """Not recursive yet"""
+        # TODO: Recursive
+        self.assertTrue(os.path.isdir(a))
+        self.assertTrue(os.path.isdir(b))
+
+        _, logfn = tempfile.mkstemp(prefix="out_dircmp_%s_" % long(time.time()), dir=self.tdir)
+        logfile = open(logfn, "w")
+        logfile.write("A: %s\n" % a)
+        logfile.write("B: %s\n" % b)
+        logfile.write("\n")
+
+        dircmpobj = filecmp.dircmp(a, b)
+        if dircmpobj.left_only or dircmpobj.right_only or dircmpobj.diff_files:
+            logfile.write("A only:\n%s\n\n" % dircmpobj.left_only)
+            logfile.write("B only:\n%s\n\n" % dircmpobj.right_only)
+            logfile.write("Diff files:\n%s\n\n" % dircmpobj.diff_files)
+            logfile.close()
+            self.assertTrue(False)
+        logfile.write("OK\n")
+        logfile.close()
\ No newline at end of file
index 4ea4d8f..dc279aa 100644 (file)
@@ -170,3 +170,41 @@ class TestCaseCreaterepoComparative_repowithbadpackages(BaseTestCase):
     def test_01_createrepo(self):
         """Regular createrepo"""
         self.assert_same_results(self.indir)
+
+
+class TestCaseCreaterepoComparative_cachedir(BaseTestCase):
+    """Repo with 3 packages and cachedir used"""
+
+    def setup(self):
+        self.indir_addpkg(PACKAGES[0])
+        self.indir_addpkg(PACKAGES[1])
+        self.indir_addpkg(PACKAGES[2])
+
+    def test_01_createrepo_owncachedir(self):
+        """Each createrepo has its own cachedir"""
+        # Gen cache
+        self.assert_same_results(self.indir, "--cachedir cache")
+        # Run again and use the cache
+        _, crres, crcres = self.assert_same_results(self.indir, "--cachedir cache")
+
+        # Compare files in the cache files (they should be identical)
+        cr_cache = os.path.join(crres.outdir, "cache")
+        crc_cache = os.path.join(crcres.outdir, "cache")
+        self.assert_same_dir_content(cr_cache, crc_cache)
+
+    def test_02_createrepo_sharedcachedir(self):
+        """Use cache mutually"""
+        cache_cr = os.path.abspath(os.path.join(self.indir, "cache_cr"))
+        cache_crc = os.path.abspath(os.path.join(self.indir, "cache_crc"))
+
+        # Gen cache by the cr then use it by cr_c
+        self.assert_run_cr(self.indir, "--cachedir %s" % cache_cr)
+        self.assert_run_cr(self.indir, "--cachedir %s" % cache_cr, c=True)
+
+        # Gen cache by the cr then use it by cr_c
+        self.assert_run_cr(self.indir, "--cachedir %s" % cache_crc, c=True)
+        self.assert_run_cr(self.indir, "--cachedir %s" % cache_crc)
+
+        # Compare files in the cache files (they should be identical)
+        self.assert_same_dir_content(cache_cr, cache_crc)
+