From ced2f2f3642d3035e1785ad9ac865e7488bfb72c Mon Sep 17 00:00:00 2001 From: rzaitov Date: Fri, 8 Nov 2013 13:10:20 +0400 Subject: [PATCH] =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D0=B8=D1=84=D0=B8=D1=86?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=BF=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D0=BF?= =?UTF-8?q?=D0=B0=D1=82=D1=87=D0=B8=D0=BD=D0=B3=D0=B0=20csproj=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PatchCsprojCommandBuilder.py | 21 ++++++++----------- scripts/TouchinBuild/Core/StepsRunner.py | 2 +- .../Tests/ManualTests/csproj_test.py | 7 ++----- .../ProjectParser/test_projectParser.py | 12 +++++------ .../InsideParser/InsideCsprojSetParser.py | 2 +- 5 files changed, 19 insertions(+), 25 deletions(-) diff --git a/scripts/TouchinBuild/CommandBuilders/PatchCsprojCommandBuilder.py b/scripts/TouchinBuild/CommandBuilders/PatchCsprojCommandBuilder.py index fd728f0..5c04b90 100644 --- a/scripts/TouchinBuild/CommandBuilders/PatchCsprojCommandBuilder.py +++ b/scripts/TouchinBuild/CommandBuilders/PatchCsprojCommandBuilder.py @@ -1,26 +1,21 @@ from commands.PatchCsprojCommand import PatchCsprojCommand -from parsers.InsideParser.InsideSetParser import InsideSetParser +from parsers.InsideParser.InsideCsprojSetParser import InsideCsprojSetParser class PatchCsprojCommandBuilder: - def __init__(self, config, valueProvider): - assert config is not None - assert valueProvider is not None - - self.__config = config - self.__valueProvider = valueProvider + def __init__(self): + pass def getCommandFor(self, line): assert line is not None - parser = InsideSetParser('csproj') + parser = self.getParser() result = parser.parseLine(line) csprojPath = result[0] key = result[1] - value = self.__valueProvider.getValueFor(result[2]) - - slnConfig = self.__config['sln_config'] + value = result[2] + slnConfig = result[3] command = PatchCsprojCommand(csprojPath, key, value, slnConfig) return command @@ -28,8 +23,10 @@ class PatchCsprojCommandBuilder: def isPatchCsproj(self, line): assert line is not None - parser = InsideSetParser('csproj') + parser = self.getParser() isValid = parser.isValidLine(line) return isValid + def getParser(self): + return InsideCsprojSetParser('csproj') \ No newline at end of file diff --git a/scripts/TouchinBuild/Core/StepsRunner.py b/scripts/TouchinBuild/Core/StepsRunner.py index d115eef..4883959 100644 --- a/scripts/TouchinBuild/Core/StepsRunner.py +++ b/scripts/TouchinBuild/Core/StepsRunner.py @@ -27,7 +27,7 @@ class StepsRunner: self.restoreFromBackupBuilder = RestoreBackupCommandBuilder() self.deleteBackupBuilder = DeleteBackupCommandBuilder() self.createDirs = MakeDirsCommandBuilder() - self.patchCsproj = PatchCsprojCommandBuilder(config, self.valueProvider) + self.patchCsproj = PatchCsprojCommandBuilder() self.patchInfoPlist = PatchInfoplistCommandBuilder(self.valueProvider) self.copyBuilder = CopyCommandBuilder() self.testflightBuilder = TestflightCommandBuilder() diff --git a/scripts/TouchinBuild/Tests/ManualTests/csproj_test.py b/scripts/TouchinBuild/Tests/ManualTests/csproj_test.py index c307d0a..6e5a94d 100644 --- a/scripts/TouchinBuild/Tests/ManualTests/csproj_test.py +++ b/scripts/TouchinBuild/Tests/ManualTests/csproj_test.py @@ -1,11 +1,8 @@ from CommandBuilders.PatchCsprojCommandBuilder import PatchCsprojCommandBuilder from commands.ValueProvider import ValueProvider -config = {'sln_config' : 'Release|iPhone'} -line = "inside 'BuildSample/BuildSample/CoolApp.csproj' set OutputPath to 'Output'" +line = "inside 'BuildSample/BuildSample/CoolApp.csproj' set OutputPath to 'Output' for 'Release|iPhone'" -value_provider = ValueProvider(config) - -builder = PatchCsprojCommandBuilder(config, value_provider) +builder = PatchCsprojCommandBuilder() command = builder.getCommandFor(line) command.execute() \ No newline at end of file diff --git a/scripts/TouchinBuild/Tests/UnitTests/ProjectParser/test_projectParser.py b/scripts/TouchinBuild/Tests/UnitTests/ProjectParser/test_projectParser.py index 6253692..c6b9a07 100644 --- a/scripts/TouchinBuild/Tests/UnitTests/ProjectParser/test_projectParser.py +++ b/scripts/TouchinBuild/Tests/UnitTests/ProjectParser/test_projectParser.py @@ -1,17 +1,16 @@ # -*- coding: utf-8 -*- import unittest -from commands.ValueProvider import ValueProvider -from parsers.InsideParser.InsideSetParser import InsideSetParser +from parsers.InsideParser.InsideCsprojSetParser import InsideCsprojSetParser class TestCsprojParser(unittest.TestCase): def setUp(self): - self.parser = InsideSetParser('csproj') + self.parser = InsideCsprojSetParser('csproj') def test_isValid(self): - line = "inside 'CoolApp.csproj' set KEY to 'VALUE'" + line = "inside 'CoolApp.csproj' set KEY to 'VALUE' for 'Sln|Config'" isValid = self.parser.isValidLine(line) self.assertEqual(True, isValid) @@ -23,9 +22,10 @@ class TestCsprojParser(unittest.TestCase): self.assertEqual(False, isValid) def test_parse(self): - line = "inside 'Dir/../Some Folder/CoolApp.csproj' set OutputPath to 'Output'" + line = "inside 'Dir/../Some Folder/CoolApp.csproj' set OutputPath to 'Output' for 'Release|iPhone'" result = self.parser.parseLine(line) self.assertEqual('Dir/../Some Folder/CoolApp.csproj', result[0]) self.assertEqual('OutputPath', result[1]) - self.assertEqual('Output', result[2]) \ No newline at end of file + self.assertEqual('Output', result[2]) + self.assertEqual('Release|iPhone', result[3]) \ No newline at end of file diff --git a/scripts/TouchinBuild/parsers/InsideParser/InsideCsprojSetParser.py b/scripts/TouchinBuild/parsers/InsideParser/InsideCsprojSetParser.py index 9357698..2dcf2e9 100644 --- a/scripts/TouchinBuild/parsers/InsideParser/InsideCsprojSetParser.py +++ b/scripts/TouchinBuild/parsers/InsideParser/InsideCsprojSetParser.py @@ -33,7 +33,7 @@ class InsideCsprojSetParser(LineParser): slnConfigRegexp = r"'(?P[a-zA-Z|]+)'$" regexpSource = self.startsWith('inside') + filePathRegexp + self.keywordToken('set') + keyRegexp + \ - self.keywordToken('to') + valueRegexp + self.than('for') + slnConfigRegexp + self.keywordToken('to') + valueRegexp + self.keywordToken('for') + slnConfigRegexp regexp = re.compile(regexpSource, re.UNICODE) match = regexp.match(line)