Improve tests for split cases
authorPaul Nasrat <pnasrat@redhat.com>
Thu, 20 Jul 2006 22:22:31 +0000 (22:22 +0000)
committerPaul Nasrat <pnasrat@redhat.com>
Thu, 20 Jul 2006 22:22:31 +0000 (22:22 +0000)
test/testSplitMetaDataGenerator.py

index 6e5ed5d8533240ad5877d09e49fb3bf1ed49e378..d509a3b4e5c744459f4729b43e77636dbb82c455 100644 (file)
@@ -13,129 +13,100 @@ from genpkgmetadata import SplitMetaDataGenerator
 class SplitMetaDataGeneratorTestCase(unittest.TestCase):
 
     def setUp(self):
-        self.tempdir = tempfile.mkdtemp(prefix="generate")
+        self.basepath = tempfile.mkdtemp(prefix="generate")
+        self.directories = []
+        for i in range(0,3):
+            mydir = tempfile.mkdtemp(prefix="split", suffix=str(i))
+            self.directories.append(mydir)
         self.mdgen = SplitMetaDataGenerator({})
-        self.basepath = os.path.dirname(self.tempdir)
-        self.directory = os.path.basename(self.tempdir)
         self.files = {}
 
     def __addFile(self, dir, ext):
         f = tempfile.NamedTemporaryFile(suffix=ext, dir=dir)
         self.files[f.name] = f
+        return f.name
 
     def tearDown(self):
         self.mdgen = None
         for fname, fobj in self.files.items():
             fobj.close()
             del(self.files[fname])
-        if self.tempdir:
-            shutil.rmtree(self.tempdir)
+        if self.basepath:
+            shutil.rmtree(self.basepath)
 
     def testNoFiles(self):
-        """Test when target directory empty of files"""
-        results = self.mdgen.getFileList(self.basepath, self.directory, ".test")
-        self.assertEquals(results, [], msg="Expected no files")
+        """Test when target directories empty of files"""
+        results = []
+        for splitdir in self.directories:
+            results = self.mdgen.getFileList(self.basepath, self.directories[0], ".test")
+            self.assertEquals(results, [], msg="Expected no files")
 
-    def testMatch(self):
+    def testMatchPrimaryDir(self):
         """Test single file matching extension"""
-        self.__addFile(self.tempdir, ".test")
-        results = self.mdgen.getFileList(self.basepath, self.directory, ".test")
-        self.assertEquals(len(results), 1, msg="Expected one file")
 
-    def testMatches(self):
-        """Test right number of files returned with both matches and non"""
-        self.__addFile(self.tempdir, ".test")
-        self.__addFile(self.tempdir, ".test")
-        self.__addFile(self.tempdir, ".notme")
-        results = self.mdgen.getFileList(self.basepath, self.directory, ".test")
-        self.assertEquals(len(results), 2, msg="Expected one file")
-
-    def testNoMatches(self):
-        """Test single file not matching extension"""
-        self.__addFile(self.tempdir, ".notme")
-        results = self.mdgen.getFileList(self.basepath, self.directory, ".test")
-        self.assertEquals(results, [], msg="Expected no matching files")
-
-    def testReturnPath(self):
-        """Test matching file referenced by directory passed in"""
-        self.__addFile(self.tempdir, ".test")
-        results = self.mdgen.getFileList(self.basepath, self.directory, ".test")
-        filedir = os.path.dirname(results[0])
-        self.assertEquals(filedir, self.directory, msg="Returned directory "
-                          "should be passed in directory")
-
-    def testCurrentDirectoryNoMatches(self):
-        """Test when target directory child of cwd no matches"""
-        oldwd = os.getcwd()
-        os.chdir(self.basepath)
-        results = self.mdgen.getFileList(".", self.directory, ".test")
-        os.chdir(oldwd)
-        self.assertEquals(results, [], msg="Expected no files")
-
-    def testCurrentDirectoryMatches(self):
-        """Test when target directory child of cwd matches"""
-        self.__addFile(self.tempdir, ".test")
-        oldwd = os.getcwd()
-        os.chdir(self.basepath)
-        results = self.mdgen.getFileList(".", self.directory, ".test")
-        os.chdir(oldwd)
+        tempdir = os.path.join(self.basepath, self.directories[0])
+        self.__addFile(tempdir, ".test")
+        results = self.mdgen.getFileList(self.basepath, 
+                                         self.directories[0], ".test")
         self.assertEquals(len(results), 1, msg="Expected one file")
 
-    def testCurrentDirectoryReturnPath(self):
-        self.__addFile(self.tempdir, ".test")
-        oldwd = os.getcwd()
-        os.chdir(self.basepath)
-        results = self.mdgen.getFileList(".", self.directory, ".test")
-        filedir = os.path.dirname(results[0])
-        os.chdir(oldwd)
-        self.assertEquals(filedir, self.directory, msg="Returned directory "
-                          "should be passed in directory")
-
-    def testParallelDirectoryNoMatches(self):
-        """Test when target directory parallel to cwd no matches"""
-        oldwd = os.getcwd()
-        paralleldir = tempfile.mkdtemp(prefix="parallel")
-        os.chdir(paralleldir)
-        results = self.mdgen.getFileList("..", self.directory, ".test")
-        os.chdir(oldwd)
-        self.assertEquals(results, [], msg="Expected no files")
-
-    def testParallelDirectoryMatches(self):
-        """Test when target directory parallel to cwd matches"""
-        self.__addFile(self.tempdir, ".test")
-        oldwd = os.getcwd()
-        paralleldir = tempfile.mkdtemp(prefix="parallel")
-        os.chdir(paralleldir)
-        results = self.mdgen.getFileList("..", self.directory, ".test")
-        os.chdir(oldwd)
-        self.assertEquals(len(results), 1, msg="Expected no files")
-
-    def testParallelDirectoryReturnPath(self):
-        self.__addFile(self.tempdir, ".test")
-        oldwd = os.getcwd()
-        paralleldir = tempfile.mkdtemp(prefix="parallel")
-        os.chdir(paralleldir)
-        results = self.mdgen.getFileList("..", self.directory, ".test")
-        filedir = os.path.dirname(results[0])
-        os.chdir(oldwd)
-        self.assertEquals(filedir, self.directory, msg="Returned directory "
-                          "should be passed in directory")
-
-
+    def testSplitMatches(self):
+        """Test right number of files returned with matches in all dirs"""
+        for splitdir in self.directories:
+            tempdir = os.path.join(self.basepath, splitdir)
+            os.mkdir(tempdir + "/subdir")
+            self.__addFile(tempdir + "/subdir", ".test")
+        total = 0
+        for splitdir in self.directories:
+            results = self.mdgen.getFileList(self.basepath, splitdir, ".test")
+            total += 1
+            self.assertEquals(len(results), 1, msg="Expected one file per dir")
+        self.assertEquals(total, 3, msg="Expected total of 3 files got %d" %(total,))
+
+    def testPrimaryReturnPath(self):
+        """Test matching file referenced from within primary dir"""
+        tempdir = os.path.join(self.basepath, self.directories[0])
+        fname = self.__addFile(tempdir, ".test")
+        results = self.mdgen.getFileList(self.basepath, 
+                                         self.directories[0], ".test")
+        self.assertEquals(results[0], os.path.basename(fname), 
+                          msg="Returned file %s should be created file %s"
+                          % (results[0],os.path.basename(fname)))
+
+    def testPrimaryReturnPathSubdir(self):
+        """Test matching file referenced from within subdir primary dir"""
+        tempdir = os.path.join(self.basepath, self.directories[0], "subdir")
+        os.mkdir(tempdir)
+        fname = self.__addFile(tempdir, ".test")
+
+        results = self.mdgen.getFileList(self.basepath, 
+                                         self.directories[0], ".test")
+        returned_dir = os.path.dirname(results[0])
+        self.assertEquals(returned_dir, "subdir",
+                          msg="Returned dir %s of file %s should be subdir"
+                          % (returned_dir,results[0]))
+
+    def testNonPrimaryReturnPathSubdir(self):
+        """Test matching file referenced from within subdir primary dir"""
+        tempdir = os.path.join(self.basepath, self.directories[1], "subdir")
+        os.mkdir(tempdir)
+        fname = self.__addFile(tempdir, ".test")
+
+        results = self.mdgen.getFileList(self.basepath, 
+                                         self.directories[1], ".test")
+        returned_dir = os.path.dirname(results[0])
+        self.assertEquals(returned_dir, "subdir",
+                          msg="Returned dir %s of file %s should be subdir"
+                          % (returned_dir,results[0]))
 
 def suite():
     suite = unittest.TestSuite()
     suite.addTest(SplitMetaDataGeneratorTestCase("testNoFiles"))
-    suite.addTest(SplitMetaDataGeneratorTestCase("testMatch"))
-    suite.addTest(SplitMetaDataGeneratorTestCase("testNoMatches"))
-    suite.addTest(SplitMetaDataGeneratorTestCase("testMatches"))
-    suite.addTest(SplitMetaDataGeneratorTestCase("testReturnPath"))
-    suite.addTest(SplitMetaDataGeneratorTestCase("testCurrentDirectoryNoMatches"))
-    suite.addTest(SplitMetaDataGeneratorTestCase("testCurrentDirectoryMatches"))
-    suite.addTest(SplitMetaDataGeneratorTestCase("testCurrentDirectoryReturnPath"))
-    suite.addTest(SplitMetaDataGeneratorTestCase("testParallelDirectoryNoMatches"))
-    suite.addTest(SplitMetaDataGeneratorTestCase("testParallelDirectoryMatches"))
-    suite.addTest(SplitMetaDataGeneratorTestCase("testParallelDirectoryReturnPath"))
+    suite.addTest(SplitMetaDataGeneratorTestCase("testMatchPrimaryDir"))
+    suite.addTest(SplitMetaDataGeneratorTestCase("testSplitMatches"))
+    suite.addTest(SplitMetaDataGeneratorTestCase("testPrimaryReturnPath"))
+    suite.addTest(SplitMetaDataGeneratorTestCase("testPrimaryReturnPathSubdir"))
+    suite.addTest(SplitMetaDataGeneratorTestCase("testNonPrimaryReturnPathSubdir"))
     return suite
 
 if __name__ == "__main__":