Создал комманду востановления из бэкапа, ее построитель и ручной тест

This commit is contained in:
Rustam Zaitov 2013-10-29 03:48:08 +04:00
parent 8c0c1d1c43
commit 10a41bf1db
3 changed files with 61 additions and 0 deletions

View File

@ -0,0 +1,25 @@
from commands.RestoreBackupCommand import RestoreBackupCommand
from parser.BackupParser.RestoreBackupParser import RestoreBackupParser
class RestoreBackupCommandBuilder:
def __init__(self, pathProvider):
assert pathProvider is not None
self.__pathProvider = pathProvider
def isRestoreBackup(self, line):
assert line is not None
parser = RestoreBackupParser()
isValid = parser.isValidLine(line)
return isValid
def getCommandFor(self, line):
assert line is not None
parser = RestoreBackupParser()
parser.parseLine(line)
command = RestoreBackupCommand(self.__pathProvider)
return command

View File

@ -0,0 +1,15 @@
from CommandBuilders.RestoreBackupCommandBuilder import RestoreBackupCommandBuilder
from ManualTests.path_provider import PathProvider
line = "restore from backup"
baseDir = '../'
path_provider = PathProvider(baseDir)
builder = RestoreBackupCommandBuilder(path_provider)
command = builder.getCommandFor(line)
command.execute()

View File

@ -0,0 +1,21 @@
import os
import shutil
class RestoreBackupCommand:
def __init__(self, pathProvider):
assert pathProvider is not None
self.__pathProvider = pathProvider
def execute(self):
baseDir = self.__pathProvider.resolveAbsPath('.')
dirPairs = [(name, "backup.{0}".format(name)) for name in os.listdir(baseDir) if os.path.isdir(self.__pathProvider.resolveAbsPath(name)) and not name.startswith('backup.')]
for pair in dirPairs:
if not os.path.exists(pair[1]):
continue
shutil.rmtree(pair[0]) # delete src
shutil.copytree(pair[1], pair[0]) # restore from backup