예제 #1
0
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)
예제 #3
0
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)