Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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')
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)