From 82de33764dd23c7ff9735ae14eced58bc33e4a17 Mon Sep 17 00:00:00 2001 From: Eduardo Robles Elvira Date: Mon, 5 Aug 2013 18:38:07 +0200 Subject: [PATCH] improving the empty diff backup unit test --- deltatar/deltatar.py | 14 +++++++++++--- testing/test_deltatar.py | 16 ++++++++++++++-- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/deltatar/deltatar.py b/deltatar/deltatar.py index 5e93a25..e04ab23 100644 --- a/deltatar/deltatar.py +++ b/deltatar/deltatar.py @@ -22,6 +22,7 @@ import logging import datetime import binascii import os +import shutil import re import stat import json @@ -909,9 +910,16 @@ class DeltaTar(object): os.chdir(target_path) def filter(cls, tarinfo): - tarinfo.path = self.unprefixed(tarinfo.path) - tarinfo.name = self.unprefixed(tarinfo.name) - return cls.filter_path(tarinfo.path, '.', tarinfo.isdir()) != NO_MATCH + if tarinfo.path.startswith("snapshot://"): + tarinfo.path = self.unprefixed(tarinfo.path) + tarinfo.name = self.unprefixed(tarinfo.name) + return cls.filter_path(tarinfo.path, '.', tarinfo.isdir()) != NO_MATCH + elif tarinfo.path.startswith("delete://"): + path = self.unprefixed(tarinfo.path) + shutil.rmtree(path) + return False + else: + return False filter = partial(filter, self) tarobj.extractall(filter=filter) diff --git a/testing/test_deltatar.py b/testing/test_deltatar.py index 595d5f3..e31d438 100644 --- a/testing/test_deltatar.py +++ b/testing/test_deltatar.py @@ -804,13 +804,25 @@ class DeltaTarTest(BaseTest): # check index items index_path = os.path.join("backup_dir2", prev_index_filename) index_it = deltatar.iterate_index_path(index_path) + n = 0 for i in index_it: + n += 1 assert i[0]['path'].startswith("list://") - tar_filename = deltatar.volume_name_func('backup_dir', True, 0) - tar_path = os.path.join("backup_dir", tar_filename) + assert n == 7 # check the tar file + assert os.path.exists("backup_dir2") + shutil.rmtree("source_dir") + + tar_filename = deltatar.volume_name_func('backup_dir2', True, 0) + tar_path = os.path.join("backup_dir2", tar_filename) + + # no file restored, because the diff was empty + deltatar.restore_backup(target_path="source_dir", + backup_tar_path=tar_path) + assert len(os.listdir("source_dir")) == 0 + class DeltaTar2Test(DeltaTarTest): ''' -- 1.7.1