From 97f941ec9a0fe4e745d41d630ae0eecd7b931989 Mon Sep 17 00:00:00 2001 From: rzaitov Date: Wed, 30 Oct 2013 14:56:21 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BF=D0=B0=D1=80=D1=81=D0=B5=D1=80=20=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?-=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectParser/test_projectParser.py | 43 ++++++------------- scripts/parser/ProjectParser/ProjectParser.py | 8 ++-- 2 files changed, 18 insertions(+), 33 deletions(-) diff --git a/scripts/UnitTests/ProjectParser/test_projectParser.py b/scripts/UnitTests/ProjectParser/test_projectParser.py index 704067a..70730b5 100644 --- a/scripts/UnitTests/ProjectParser/test_projectParser.py +++ b/scripts/UnitTests/ProjectParser/test_projectParser.py @@ -10,38 +10,23 @@ class TestCsprojParser(unittest.TestCase): value_provider = ValueProvider() self.parser = ProjectParser(value_provider, 'csproj') - def test_parseAppStatement(self): - statement = "app:SomeAppName" - app_name = self.parser._ProjectLineParser__parseAppStatement(statement) - self.assertEqual(app_name, 'SomeAppName') + def test_isValid(self): + line = "for CoolApp csproj set KEY to 'VALUE'" + isValid = self.parser.isValidLine(line) - def test_parseKeyValueStatement(self): - statement = r"key:myKey 'my value -bla bla'" - setting = self.parser._ProjectLineParser__parseKeyValueStatement(statement) + self.assertEqual(True, isValid) - self.assertEqual(setting.key, 'myKey') - self.assertEqual(setting.value, 'my value -bla bla') + def test_isNotValid(self): + line = "for CoolApp InvalidCmdToken set KEY to 'VALUE'" + isValid = self.parser.isValidLine(line) - def test_parseAttributeStatement(self): - statement = r"rel_path '../some_dir/some_file.txt'" - setting = self.parser._ProjectLineParser__parseAttributeStatement(statement) + self.assertEqual(False, isValid) - self.assertEqual(setting.attribute_name, 'rel_path') - self.assertEqual(setting.attribute_value, r'../some_dir/some_file.txt') + def test_parse(self): + line = "for CoolApp.Touch csproj set OutputPath to 'Output'" + settings = self.parser.parseLine(line) - def test_parse_keyedCsprojLine(self): - statement = r"csproj app:coolApp key:CodesignKey 'iPhone Developer: Рустам Заитов (CTL85FZX6K)'" - setting = self.parser.parseLine(statement) - - self.assertEqual(setting.projectName, 'coolApp') - self.assertEqual(setting.key, 'CodesignKey') - self.assertEqual(setting.value, 'iPhone Developer: Рустам Заитов (CTL85FZX6K)') - - def test_parse_attributedCsprojLine(self): - statement = r"csproj app:coolApp rel_path '../parent_dir/some_file.extension'" - setting = self.parser.parseLine(statement) - - self.assertEqual(setting.projectName, 'coolApp') - self.assertEqual(setting.attribute_name, 'rel_path') - self.assertEqual(setting.attribute_value, '../parent_dir/some_file.extension') \ No newline at end of file + self.assertEqual('CoolApp.Touch', settings.projectName) + self.assertEqual('OutputPath', settings.key) + self.assertEqual('Output', settings.value) \ No newline at end of file diff --git a/scripts/parser/ProjectParser/ProjectParser.py b/scripts/parser/ProjectParser/ProjectParser.py index 1bd8912..30751f4 100644 --- a/scripts/parser/ProjectParser/ProjectParser.py +++ b/scripts/parser/ProjectParser/ProjectParser.py @@ -12,11 +12,11 @@ class ProjectParser(LineParser): def parseLine(self, line): assert line is not None - projectNameRegexp = r"(?P[a-Z0-9.]+)" - keyRegexp = r'(?P[a-Z]+)' + projectNameRegexp = r"(?P[.a-zA-Z]+)" + keyRegexp = r'(?P[a-zA-Z]+)' valueRegexp = r"'(?P[^']+)'" - regexpSource = self.startsWithKeywordToken('for') + projectNameRegexp + self.keywordToken(r'project\s+set') + keyRegexp + self.keywordToken('to') + valueRegexp + regexpSource = self.startsWithKeywordToken('for') + projectNameRegexp + self.keywordToken(self._command_token + r'\s+set') + keyRegexp + self.keywordToken('to') + valueRegexp regexp = re.compile(regexpSource, re.UNICODE) match = regexp.match(line) @@ -32,7 +32,7 @@ class ProjectParser(LineParser): return settings def isValidLine(self, line): - regexpSrc = r'for\s+.*project\s+set' + regexpSrc = r'for\s+.*'+ self._command_token +r'\s+set' regexp = re.compile(regexpSrc, re.UNICODE) match = regexp.match(line)