def test_create_archive_excludes_two_directories(self): fill_directory_tree(self.srcDir) self.excludeList = ['./dir2', './dir0'] create_archive(self.srcPath, self.archivePath, self.excludeList) tf = tarfile.open(self.archivePath, mode='r') def getExcludedMember(name): tarinfo = tf.getmember(name) if tarinfo: pass for root, dirs, files in os.walk(self.srcPath): relativeRoot = os.path.relpath(root, self.srcPath) dirs_to_remove = [] if relativeRoot != '.': relativeRoot = ''.join(['./', relativeRoot]) for file in files: relfile = os.path.join(relativeRoot, file) if relfile in self.excludeList: print('Checking file is excluded:', root, file, relfile) self.assertRaises(KeyError, getExcludedMember, relfile) else: print('Checking file is included:', root, file, relfile) self.assertNotEqual(None, tf.getmember(relfile)) for dir in dirs: reldir = os.path.join(relativeRoot, dir) if reldir in self.excludeList: print('Checking dir is excluded:', root, dir, reldir) self.assertRaises(KeyError, getExcludedMember, reldir) subTreePath = os.path.join(root, dir) print('checking subtree', subTreePath) for root2, dirs2, files2 in os.walk(subTreePath): print('element subtree', root2, dirs2, files2) relativeRoot2 = os.path.relpath(root2, self.srcPath) if relativeRoot2 != '.': relativeRoot2 = ''.join(['./', relativeRoot2]) for file2 in files2: relfile2 = os.path.join(relativeRoot2, file2) print('Checking file is excluded:', root2, file2, relfile2) self.assertRaises(KeyError, getExcludedMember, relfile2) for dir2 in dirs2: reldir2 = os.path.join(relativeRoot2, dir2) print('Checking dir is excluded:', root2, dir2, reldir2) self.assertRaises(KeyError, getExcludedMember, reldir2) dirs_to_remove.append(dir) else: print('Checking dir is included:', root, dir, reldir) self.assertNotEqual(None, tf.getmember(reldir)) for d in dirs_to_remove: dirs.remove(d)
def test_create_archive_excludes_directory(self): fill_directory_tree(self.srcDir) self.excludeList = ['./dir2'] create_archive(self.srcPath, self.archivePath, self.excludeList) tf = tarfile.open(self.archivePath, mode='r') def getExcludedMember(name): tarinfo = tf.getmember(name) if tarinfo: pass self.assertRaises(KeyError, getExcludedMember, './dir2')
def test_archive_represtantative_tree(self): fill_directory_tree(self.srcDir) create_archive(self.srcPath, self.archivePath) # compare tree to archive extract_archive(self.archivePath, self.extractPath) dcmp = filecmp.dircmp(self.srcPath, self.extractPath) dcmp.report_full_closure() self.assertTrue(dcmp.common) self.assertFalse(dcmp.left_only) self.assertFalse(dcmp.right_only) self.assertFalse(dcmp.diff_files) self.assertFalse(dcmp.funny_files)
def setUp(self): create_valid_source_and_destination_paths(self) create_invalid_source_and_destination_paths(self) fill_directory_tree(self.srcDir) create_archive(self.srcPath, self.archivePath)