def setUp(self):
     """Build directory with test data
     """
     self.dir1 = ExampleDirLanguages()
     self.dir1.create_directory()
     self.dir2 = ExampleDirLanguages()
     self.dir2.create_directory()
Пример #2
0
 def setUp(self):
     """Build directory with test data
     """
     self.dir1 = ExampleDirLanguages()
     self.dir1.create_directory()
     self.dir2 = ExampleDirLanguages()
     self.dir2.create_directory()
Пример #3
0
class TestYieldFilepairs(unittest.TestCase):
    def setUp(self):
        # Create example directory structure which
        # includes files and links
        self.d = ExampleDirLanguages()
        self.d.create_directory()
    def tearDown(self):
        # Delete example directory structure
        self.d.delete_directory()
    def test_yield_filepairs(self):
        """yield_filepairs returns correct set of files and links
        """
        # Get all files, links and directories in the example directory
        expected = self.d.filelist(include_links=True,include_dirs=True)
        # Remove any (non-link) directories from the expected list
        expected = filter(lambda x: os.path.islink(x) or not os.path.isdir(x),
                          expected)
        print "Expected = %s" % expected
        # Get all file pairs from the example dir and a
        # dummy target directory name
        for pair in yield_filepairs(self.d.dirn,'/dummy/dir'):
            p1,p2 = pair
            self.assertTrue(p1 in expected,"%s not expected" % p1)
            # Remove from the list
            expected.remove(p1)
            # Check target file is as expected
            p2_expected = os.path.join('/dummy/dir',
                                       os.path.relpath(p1,self.d.dirn))
            self.assertEqual(p2,p2_expected,
                             "Expected '%s', got '%s'" % (p2,p2_expected))
        # List should be empty at the end
        self.assertEqual(len(expected),0,
                         "Some paths not returned: %s" % expected)
Пример #4
0
 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()
Пример #5
0
class TestMd5CheckerWalk(unittest.TestCase):
    """Tests for the 'walk' method of the Md5Checker class

    """
    def setUp(self):
        """Build directory with test data
        """
        self.example_dir = ExampleDirLanguages()
        self.dirn = self.example_dir.create_directory()

    def tearDown(self):
        """Remove directory with test data
        """
        self.example_dir.delete_directory()

    def test_walk(self):
        """Md5Checker.walk yields all files
        """
        # Walk the example directory and check all yielded files
        # are in the list of created files
        file_list = self.example_dir.filelist(include_links=True)
        print(str(file_list))
        for f in Md5Checker.walk(self.dirn):
            print("Check for %s" % f)
            self.assertTrue(f in file_list, "%s not in files or links?" % f)
            file_list.remove(f)
        # Check that no files were missed
        self.assertTrue(
            len(file_list) == 0, "Some files not yielded: %s" % file_list)

    def test_walk_ignore_links(self):
        """Md5Checker.walk ignores links
        """
        # Walk the example directory and check all yielded files
        # are in the list of created files
        file_list = self.example_dir.filelist(include_links=False)
        for f in Md5Checker.walk(self.dirn, links=Md5Checker.IGNORE_LINKS):
            self.assertTrue(f in file_list, "%s not in files?" % f)
            file_list.remove(f)
        # Check that no files were missed
        self.assertTrue(
            len(file_list) == 0, "Some files not yielded: %s" % file_list)

    def test_walk_yields_broken_links(self):
        """Md5Checker.walk yields broken links
        """
        # Add broken link
        self.example_dir.add_link("broken.txt", "missing.txt")
        # Walk the example directory and check all yielded files
        # are in the list of created files
        file_list = self.example_dir.filelist(include_links=False)
        for f in Md5Checker.walk(self.dirn, links=Md5Checker.IGNORE_LINKS):
            self.assertTrue(f in file_list, "%s not in files?" % f)
            file_list.remove(f)
        # Check that no files were missed
        self.assertTrue(
            len(file_list) == 0, "Some files not yielded: %s" % file_list)
class TestMd5CheckerWalk(unittest.TestCase):
    """Tests for the 'walk' method of the Md5Checker class

    """
    def setUp(self):
        """Build directory with test data
        """
        self.example_dir = ExampleDirLanguages()
        self.dirn = self.example_dir.create_directory()

    def tearDown(self):
        """Remove directory with test data
        """
        self.example_dir.delete_directory()

    def test_walk(self):
        """Md5Checker.walk yields all files
        """
        # Walk the example directory and check all yielded files
        # are in the list of created files
        file_list = self.example_dir.filelist(include_links=True)
        print str(file_list)
        for f in Md5Checker.walk(self.dirn):
            print "Check for %s" % f
            self.assertTrue(f in file_list,"%s not in files or links?" % f)
            file_list.remove(f)
        # Check that no files were missed
        self.assertTrue(len(file_list) == 0,
                        "Some files not yielded: %s" % file_list)

    def test_walk_ignore_links(self):
        """Md5Checker.walk ignores links
        """
        # Walk the example directory and check all yielded files
        # are in the list of created files
        file_list = self.example_dir.filelist(include_links=False)
        for f in Md5Checker.walk(self.dirn,links=Md5Checker.IGNORE_LINKS):
            self.assertTrue(f in file_list,"%s not in files?" % f)
            file_list.remove(f)
        # Check that no files were missed
        self.assertTrue(len(file_list) == 0,
                        "Some files not yielded: %s" % file_list)

    def test_walk_yields_broken_links(self):
        """Md5Checker.walk yields broken links
        """
        # Add broken link
        self.example_dir.add_link("broken.txt","missing.txt")
        # Walk the example directory and check all yielded files
        # are in the list of created files
        file_list = self.example_dir.filelist(include_links=False)
        for f in Md5Checker.walk(self.dirn,links=Md5Checker.IGNORE_LINKS):
            self.assertTrue(f in file_list,"%s not in files?" % f)
            file_list.remove(f)
        # Check that no files were missed
        self.assertTrue(len(file_list) == 0,
                        "Some files not yielded: %s" % file_list)
Пример #7
0
class TestMd5CheckerVerifyMd5sms(unittest.TestCase):
    """Tests for the 'verify_md5sums' method of the Md5Checker class

    """
    def setUp(self):
        self.example_dir = ExampleDirLanguages()
        self.example_dir.create_directory()

    def tearDown(self):
        self.example_dir.delete_directory()

    def test_verify_md5sums(self):
        """Md5Checker.verify_md5sums checks 'md5sum'-format file

        """
        # Create MD5sum 'file'
        md5sums = []
        for f in self.example_dir.filelist(full_path=True):
            md5sums.append(u"%s  %s" % (md5sum(f), f))
        md5sums = '\n'.join(md5sums)
        fp = io.StringIO(md5sums)
        # Run verification
        files = self.example_dir.filelist(full_path=True)
        self.assertNotEqual(len(files), 0)
        for f, status in Md5Checker.verify_md5sums(fp=fp):
            self.assertTrue(f in files, "%s not in %s" % (f, files))
            self.assertEqual(status, Md5Checker.MD5_OK)
            files.remove(f)
        # Check no files were missed
        self.assertEqual(len(files), 0)
class TestMd5CheckerVerifyMd5sms(unittest.TestCase):
    """Tests for the 'verify_md5sums' method of the Md5Checker class

    """
    def setUp(self):
        self.example_dir = ExampleDirLanguages()
        self.example_dir.create_directory()

    def tearDown(self):
        self.example_dir.delete_directory()

    def test_verify_md5sums(self):
        """Md5Checker.verify_md5sums checks 'md5sum'-format file

        """
        # Create MD5sum 'file'
        md5sums = []
        for f in self.example_dir.filelist(full_path=True):
            md5sums.append("%s  %s" % (md5sum(f),f))
        md5sums = '\n'.join(md5sums)
        fp = cStringIO.StringIO(md5sums)
        # Run verification
        files = self.example_dir.filelist(full_path=True)
        self.assertNotEqual(len(files),0)
        for f,status in Md5Checker.verify_md5sums(fp=fp):
            self.assertTrue(f in files,"%s not in %s" % (f,files))
            self.assertEqual(status,Md5Checker.MD5_OK)
            files.remove(f)
        # Check no files were missed
        self.assertEqual(len(files),0)
Пример #9
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)
Пример #10
0
 def setUp(self):
     self.example_dir = ExampleDirLanguages()
     self.example_dir.create_directory()
Пример #11
0
class TestMd5CheckerComputeMd5sms(unittest.TestCase):
    """Tests for the 'compute_md5sums' method of the Md5Checker class

    """
    def setUp(self):
        self.example_dir = ExampleDirLanguages()
        self.example_dir.create_directory()

    def tearDown(self):
        self.example_dir.delete_directory()

    def test_compute_md5dums(self):
        """Md5Checker.compute_md5sums returns correct md5sums

        """
        files = self.example_dir.filelist(include_links=True, full_path=False)
        for f, md5 in Md5Checker.compute_md5sums(
                self.example_dir.dirn, links=Md5Checker.FOLLOW_LINKS):
            self.assertTrue(f in files)
            self.assertEqual(md5, self.example_dir.checksum_for_file(f))

    def test_compute_md5sums_ignore_links(self):
        """Md5Checker.compute_md5sums ignores links

        """
        files = self.example_dir.filelist(include_links=False, full_path=False)
        for f, md5 in Md5Checker.compute_md5sums(
                self.example_dir.dirn, links=Md5Checker.IGNORE_LINKS):
            self.assertTrue(f in files)
            self.assertEqual(md5, self.example_dir.checksum_for_file(f))

    def test_compute_md5sums_handle_broken_links(self):
        """Md5Checker.compute_md5sums handles broken links

        """
        # Add a broken link
        self.example_dir.add_link("broken", "missing.txt")
        # Get file list including links
        files = self.example_dir.filelist(include_links=True, full_path=False)
        # Check checksums
        for f, md5 in Md5Checker.compute_md5sums(self.example_dir.dirn):
            self.assertTrue(f in files, "%s doesn't appear in file list?" % f)
            self.assertEqual(md5, self.example_dir.checksum_for_file(f))
 def setUp(self):
     """Build directory with test data
     """
     self.example_dir = ExampleDirLanguages()
     self.dirn = self.example_dir.create_directory()
Пример #13
0
 def setUp(self):
     """Build directory with test data
     """
     self.example_dir = ExampleDirLanguages()
     self.dirn = self.example_dir.create_directory()
 def setUp(self):
     self.example_dir = ExampleDirLanguages()
     self.example_dir.create_directory()
class TestMd5CheckerComputeMd5sms(unittest.TestCase):
    """Tests for the 'compute_md5sums' method of the Md5Checker class

    """
    def setUp(self):
        self.example_dir = ExampleDirLanguages()
        self.example_dir.create_directory()

    def tearDown(self):
        self.example_dir.delete_directory()

    def test_compute_md5dums(self):
        """Md5Checker.compute_md5sums returns correct md5sums

        """
        files = self.example_dir.filelist(include_links=True,full_path=False)
        for f,md5 in Md5Checker.compute_md5sums(self.example_dir.dirn,
                                                links=Md5Checker.FOLLOW_LINKS):
            self.assertTrue(f in files)
            self.assertEqual(md5,self.example_dir.checksum_for_file(f))

    def test_compute_md5sums_ignore_links(self):
        """Md5Checker.compute_md5sums ignores links

        """
        files = self.example_dir.filelist(include_links=False,full_path=False)
        for f,md5 in Md5Checker.compute_md5sums(self.example_dir.dirn,
                                                links=Md5Checker.IGNORE_LINKS):
            self.assertTrue(f in files)
            self.assertEqual(md5,self.example_dir.checksum_for_file(f))

    def test_compute_md5sums_handle_broken_links(self):
        """Md5Checker.compute_md5sums handles broken links

        """
        # Add a broken link
        self.example_dir.add_link("broken","missing.txt")
        # Get file list including links
        files = self.example_dir.filelist(include_links=True,full_path=False)
        # Check checksums
        for f,md5 in Md5Checker.compute_md5sums(self.example_dir.dirn):
            self.assertTrue(f in files,"%s doesn't appear in file list?" % f)
            self.assertEqual(md5,self.example_dir.checksum_for_file(f))
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)
Пример #17
0
 def setUp(self):
     # Create example directory structure which
     # includes files and links
     self.d = ExampleDirLanguages()
     self.d.create_directory()
Пример #18
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)