From 07b205a6e31e13c7dca5e6cfc239eb9b539de4df Mon Sep 17 00:00:00 2001 From: rzaitov Date: Wed, 30 Oct 2013 19:07:35 +0400 Subject: [PATCH] =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BB=20=D0=BF=D0=BE=D1=81=D1=82=D1=80=D0=BE=D0=B8?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D1=8C=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4?= =?UTF-8?q?=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=B5=D1=80=D0=B5=D0=B2=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=B0=D0=BF=D0=BE=D0=BA=20=D0=B8=20=D1=80=D1=83=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=D0=B9=20=D1=82=D0=B5=D1=81=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CommandBuilders/MakeDirsCommandBuilder.py | 21 ++++++++++++++++ scripts/ManualTests/make_dirs.py | 8 ++++++ scripts/UnitTests/MakeDirsParser/__init__.py | 1 + .../MakeDirsParser/test_makeDirsParser.py | 25 +++++++++++++++++++ scripts/commands/MakeDirsCommand.py | 13 ++++++++++ scripts/parser/MakeDirsParser.py | 19 ++++++++++++++ 6 files changed, 87 insertions(+) create mode 100644 scripts/CommandBuilders/MakeDirsCommandBuilder.py create mode 100644 scripts/ManualTests/make_dirs.py create mode 100644 scripts/UnitTests/MakeDirsParser/__init__.py create mode 100644 scripts/UnitTests/MakeDirsParser/test_makeDirsParser.py create mode 100644 scripts/commands/MakeDirsCommand.py diff --git a/scripts/CommandBuilders/MakeDirsCommandBuilder.py b/scripts/CommandBuilders/MakeDirsCommandBuilder.py new file mode 100644 index 0000000..f523e9f --- /dev/null +++ b/scripts/CommandBuilders/MakeDirsCommandBuilder.py @@ -0,0 +1,21 @@ +from commands.MakeDirsCommand import MakeDirsCommand +from parser.MakeDirsParser import MakeDirsParser + + +class MakeDirsCommandBuilder: + def isMakeDirsCommand(self, line): + assert line is not None + + parser = MakeDirsParser() + isValid = parser.isValidLine(line) + + return isValid + + def getCommandFor(self, line): + assert line is not None + + parser = MakeDirsParser() + path = parser.parseLine(line) + + command = MakeDirsCommand(path) + return command \ No newline at end of file diff --git a/scripts/ManualTests/make_dirs.py b/scripts/ManualTests/make_dirs.py new file mode 100644 index 0000000..68175e5 --- /dev/null +++ b/scripts/ManualTests/make_dirs.py @@ -0,0 +1,8 @@ +from CommandBuilders.MakeDirsCommandBuilder import MakeDirsCommandBuilder + +line = "create dirs '../Output/mySuperConfigName/Artifacts'" + +builder = MakeDirsCommandBuilder() + +command = builder.getCommandFor(line) +command.execute() \ No newline at end of file diff --git a/scripts/UnitTests/MakeDirsParser/__init__.py b/scripts/UnitTests/MakeDirsParser/__init__.py new file mode 100644 index 0000000..cc31abc --- /dev/null +++ b/scripts/UnitTests/MakeDirsParser/__init__.py @@ -0,0 +1 @@ +__author__ = 'rzaitov' diff --git a/scripts/UnitTests/MakeDirsParser/test_makeDirsParser.py b/scripts/UnitTests/MakeDirsParser/test_makeDirsParser.py new file mode 100644 index 0000000..6e1178a --- /dev/null +++ b/scripts/UnitTests/MakeDirsParser/test_makeDirsParser.py @@ -0,0 +1,25 @@ +import unittest +from parser.MakeDirsParser import MakeDirsParser + + +class TestMakeDirsParser(unittest.TestCase): + def setUp(self): + self.parser = MakeDirsParser() + + def test_isValid(self): + line = 'create dirs bla bla' + isValid = self.parser.isValidLine(line) + + self.assertEqual(True, isValid) + + def test_isNotValid(self): + line = 'create dirs bla bla' + isValid = self.parser.isValidLine(line) + + self.assertEqual(False, isValid) + + def test_parse(self): + line = r"create dirs '~/Some dir/../'" + path = self.parser.parseLine(line) + + self.assertEqual('~/Some dir/../', path) diff --git a/scripts/commands/MakeDirsCommand.py b/scripts/commands/MakeDirsCommand.py new file mode 100644 index 0000000..7ba3c22 --- /dev/null +++ b/scripts/commands/MakeDirsCommand.py @@ -0,0 +1,13 @@ +from commands.ShCommand import ShCommand + + +class MakeDirsCommand: + def __init__(self, path): + assert path is not None + + self.__path = path + + def execute(self): + cmdText = "mkdir -p '{0}'".format(self.__path) + innerCommand = ShCommand(cmdText) + innerCommand.execute() diff --git a/scripts/parser/MakeDirsParser.py b/scripts/parser/MakeDirsParser.py index 8b13789..1366866 100644 --- a/scripts/parser/MakeDirsParser.py +++ b/scripts/parser/MakeDirsParser.py @@ -1 +1,20 @@ +from parser.LineParser import LineParser +import re +class MakeDirsParser(LineParser): + def parseLine(self, line): + pathRegexp = r"'(?P[^']+)'$" + + regexpSource = self.startsWithKeywordToken('create dirs') + pathRegexp + regexp = re.compile(regexpSource, re.UNICODE) + + match = regexp.match(line) + self._guardMatch(match, line, regexpSource) + + path = match.group('path') + return path + + def isValidLine(self, line): + assert line is not None + + return line.startswith('create dirs ')