def setUp(self): """Build directory with test data """ self.dir1 = ExampleDirLanguages() self.dir1.create_directory() self.dir2 = ExampleDirLanguages() self.dir2.create_directory()
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)
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()
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)
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)
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)
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))
def setUp(self): """Build directory with test data """ self.example_dir = ExampleDirLanguages() self.dirn = 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)
def setUp(self): # Create example directory structure which # includes files and links self.d = ExampleDirLanguages() self.d.create_directory()
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)