class TestCmpDirs(unittest.TestCase): def setUp(self): # Create reference example directory structure which # includes files and links self.dref = ExampleDirLanguages() self.dref.create_directory() # Create copy of reference dir self.dcpy = ExampleDirLanguages() self.dcpy.create_directory() def tearDown(self): # Delete example directory structures self.dref.delete_directory() self.dcpy.delete_directory() def test_cmp_dirs_identical_dirs(self): """cmp_dirs works for identical directories """ # Compare dirs count = cmp_dirs(self.dref.dirn, self.dcpy.dirn) self.assertEqual(count[Md5Checker.MD5_OK], 7) self.assertEqual(count[Md5Checker.LINKS_SAME], 6) def test_cmp_dirs_different_dirs(self): """cmp_dirs works for different directories """ # Add more files and links to reference self.dref.add_file("extra", "Additional file") self.dref.add_link("destination", "place/you/want/to/go") # Add differing files and links self.dref.add_file("more", "Yet another file") self.dcpy.add_file("more", "Yet another file, again") self.dref.add_link("where_to", "somewhere") self.dcpy.add_link("where_to", "somewhere/else") # Compare dirs count = cmp_dirs(self.dref.dirn, self.dcpy.dirn) self.assertEqual(count[Md5Checker.MD5_OK], 7) self.assertEqual(count[Md5Checker.LINKS_SAME], 6) self.assertEqual(count[Md5Checker.MD5_FAILED], 1) self.assertEqual(count[Md5Checker.LINKS_DIFFER], 1)
class TestCmpDirs(unittest.TestCase): def setUp(self): # Create reference example directory structure which # includes files and links self.dref = ExampleDirLanguages() self.dref.create_directory() # Create copy of reference dir self.dcpy = ExampleDirLanguages() self.dcpy.create_directory() def tearDown(self): # Delete example directory structures self.dref.delete_directory() self.dcpy.delete_directory() def test_cmp_dirs_identical_dirs(self): """cmp_dirs works for identical directories """ # Compare dirs count = cmp_dirs(self.dref.dirn,self.dcpy.dirn) self.assertEqual(count[Md5Checker.MD5_OK],7) self.assertEqual(count[Md5Checker.LINKS_SAME],6) def test_cmp_dirs_different_dirs(self): """cmp_dirs works for different directories """ # Add more files and links to reference self.dref.add_file("extra","Additional file") self.dref.add_link("destination","place/you/want/to/go") # Add differing files and links self.dref.add_file("more","Yet another file") self.dcpy.add_file("more","Yet another file, again") self.dref.add_link("where_to","somewhere") self.dcpy.add_link("where_to","somewhere/else") # Compare dirs count = cmp_dirs(self.dref.dirn,self.dcpy.dirn) self.assertEqual(count[Md5Checker.MD5_OK],7) self.assertEqual(count[Md5Checker.LINKS_SAME],6) self.assertEqual(count[Md5Checker.MD5_FAILED],1) self.assertEqual(count[Md5Checker.LINKS_DIFFER],1)
class TestMd5CheckerMd5cmpDirs(unittest.TestCase): """Tests for the 'md5cmp_dirs' method of the Md5Checker class """ def setUp(self): """Build directory with test data """ self.dir1 = ExampleDirLanguages() self.dir1.create_directory() self.dir2 = ExampleDirLanguages() self.dir2.create_directory() def tearDown(self): """Remove directory with test data """ self.dir1.delete_directory() self.dir2.delete_directory() def test_cmp_identical_dirs(self): """Md5Checker.md5cmp_dirs with identical directories """ for f, status in Md5Checker.md5cmp_dirs(self.dir1.dirn, self.dir2.dirn): self.assertEqual(Md5Checker.MD5_OK, status, "Failed for %s (status %d)" % (f, status)) def test_cmp_identical_dirs_ignore_links(self): """Md5Checker.md5cmp_dirs with identical directories ignoring links """ for f, status in Md5Checker.md5cmp_dirs(self.dir1.dirn, self.dir2.dirn, links=Md5Checker.IGNORE_LINKS): self.assertFalse(os.path.islink(os.path.join(self.dir1.dirn, f))) self.assertEqual(Md5Checker.MD5_OK, status) def test_cmp_different_dirs_missing_file(self): """Md5Checker.md5cmp_dirs with different directories (missing file) """ # Add an additional file in reference self.dir1.add_file("portuguese/ola", "Hello!") found_missing = False for f, status in Md5Checker.md5cmp_dirs(self.dir1.dirn, self.dir2.dirn): if f == "portuguese/ola": self.assertEqual(Md5Checker.MISSING_TARGET, status) found_missing = True else: self.assertEqual(Md5Checker.MD5_OK, status) self.assertTrue(found_missing, "Didn't pick up extra file in reference?") def test_cmp_different_dirs_extra_file(self): """Md5Checker.md5cmp_dirs with different directories (extra file) """ # Add an additional file in target self.dir2.add_file("portuguese/ola", "Hello!") for f, status in Md5Checker.md5cmp_dirs(self.dir1.dirn, self.dir2.dirn): if os.path.basename(f) == "portuguese/ola": self.assertFaile( "Target file 'portuguese/ola' should not be found") else: self.assertEqual(Md5Checker.MD5_OK, status) def test_cmp_different_dirs_different_file(self): """Md5Checker.md5cmp_dirs with different directories (different file) """ # Replace file in target with different content self.dir2.add_file("goodbye", "Goooooodbyeeee!") for f, status in Md5Checker.md5cmp_dirs(self.dir1.dirn, self.dir2.dirn, links=Md5Checker.IGNORE_LINKS): if os.path.basename(f) == "goodbye": self.assertEqual(Md5Checker.MD5_FAILED, status) else: self.assertEqual(Md5Checker.MD5_OK, status) def test_cmp_different_dirs_file_is_dir(self): """Md5Checker.md5cmp_dirs with different directories ('file' is dir) """ # Make a file in reference which is same as dir in target self.dir1.add_file("portuguese", "This is gonna be trouble") self.dir2.add_dir("portuguese") for f, status in Md5Checker.md5cmp_dirs(self.dir1.dirn, self.dir2.dirn): print("%s: %d" % (f, status)) if os.path.basename(f) == "portuguese": self.assertEqual(Md5Checker.MD5_ERROR, status) else: self.assertEqual(Md5Checker.MD5_OK, status)
class TestMd5CheckerMd5cmpDirs(unittest.TestCase): """Tests for the 'md5cmp_dirs' method of the Md5Checker class """ def setUp(self): """Build directory with test data """ self.dir1 = ExampleDirLanguages() self.dir1.create_directory() self.dir2 = ExampleDirLanguages() self.dir2.create_directory() def tearDown(self): """Remove directory with test data """ self.dir1.delete_directory() self.dir2.delete_directory() def test_cmp_identical_dirs(self): """Md5Checker.md5cmp_dirs with identical directories """ for f,status in Md5Checker.md5cmp_dirs(self.dir1.dirn, self.dir2.dirn): self.assertEqual(Md5Checker.MD5_OK,status, "Failed for %s (status %d)" % (f,status)) def test_cmp_identical_dirs_ignore_links(self): """Md5Checker.md5cmp_dirs with identical directories ignoring links """ for f,status in Md5Checker.md5cmp_dirs(self.dir1.dirn, self.dir2.dirn, links=Md5Checker.IGNORE_LINKS): self.assertFalse(os.path.islink(os.path.join(self.dir1.dirn,f))) self.assertEqual(Md5Checker.MD5_OK,status) def test_cmp_different_dirs_missing_file(self): """Md5Checker.md5cmp_dirs with different directories (missing file) """ # Add an additional file in reference self.dir1.add_file("portuguese/ola","Hello!") found_missing = False for f,status in Md5Checker.md5cmp_dirs(self.dir1.dirn, self.dir2.dirn): if f == "portuguese/ola": self.assertEqual(Md5Checker.MISSING_TARGET,status) found_missing = True else: self.assertEqual(Md5Checker.MD5_OK,status) self.assertTrue(found_missing,"Didn't pick up extra file in reference?") def test_cmp_different_dirs_extra_file(self): """Md5Checker.md5cmp_dirs with different directories (extra file) """ # Add an additional file in target self.dir2.add_file("portuguese/ola","Hello!") for f,status in Md5Checker.md5cmp_dirs(self.dir1.dirn, self.dir2.dirn): if os.path.basename(f) == "portuguese/ola": self.assertFaile("Target file 'portuguese/ola' should not be found") else: self.assertEqual(Md5Checker.MD5_OK,status) def test_cmp_different_dirs_different_file(self): """Md5Checker.md5cmp_dirs with different directories (different file) """ # Replace file in target with different content self.dir2.add_file("goodbye","Goooooodbyeeee!") for f,status in Md5Checker.md5cmp_dirs(self.dir1.dirn, self.dir2.dirn, links=Md5Checker.IGNORE_LINKS): if os.path.basename(f) == "goodbye": self.assertEqual(Md5Checker.MD5_FAILED,status) else: self.assertEqual(Md5Checker.MD5_OK,status) def test_cmp_different_dirs_file_is_dir(self): """Md5Checker.md5cmp_dirs with different directories ('file' is dir) """ # Make a file in reference which is same as dir in target self.dir1.add_file("portuguese","This is gonna be trouble") self.dir2.add_dir("portuguese") for f,status in Md5Checker.md5cmp_dirs(self.dir1.dirn, self.dir2.dirn): print "%s: %d" % (f,status) if os.path.basename(f) == "portuguese": self.assertEqual(Md5Checker.MD5_ERROR,status) else: self.assertEqual(Md5Checker.MD5_OK,status)