From 65266b523d06b452c343c1df1cda081cb0eef31c Mon Sep 17 00:00:00 2001 From: rzaitov Date: Fri, 1 Nov 2013 16:32:48 +0400 Subject: [PATCH 1/6] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=B4?= =?UTF-8?q?=D0=B5=D0=B1=D0=B0=D0=B6=D0=BD=D1=8B=D0=B9=20=D0=B2=D1=8B=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/parser/InsideParser/InsideSetParser.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/parser/InsideParser/InsideSetParser.py b/scripts/parser/InsideParser/InsideSetParser.py index 46710cc..5aec1c4 100644 --- a/scripts/parser/InsideParser/InsideSetParser.py +++ b/scripts/parser/InsideParser/InsideSetParser.py @@ -29,7 +29,6 @@ class InsideSetParser(LineParser): def isValidLine(self, line): regexpSrc = r"inside\s+'[./ a-zA-Z]+\.{0}'\s+set".format(self.__extension) - print regexpSrc regexp = re.compile(regexpSrc, re.UNICODE) match = regexp.match(line) From 2f2dc3c6985510745f562b35dbe0aed6cfb8e9d5 Mon Sep 17 00:00:00 2001 From: rzaitov Date: Fri, 1 Nov 2013 17:48:35 +0400 Subject: [PATCH 2/6] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BD=D0=B5=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83?= =?UTF-8?q?=D0=B5=D0=BC=D1=8B=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CleanBuildCommandBuilder.py | 2 +- .../CleanBuildParser/test_cleanBuildParser.py | 2 +- scripts/commands/TestflightCommand.py | 9 ++++ scripts/commands/build_command.py | 44 ------------------- scripts/commands/testflight_command.py | 10 ----- scripts/parser/AttributeNameParser.py | 8 ---- .../CleanBuildParser.py | 0 scripts/parser/CleanBuildParser/__init__.py | 1 - scripts/parser/InfoplistParser/__init__.py | 1 - scripts/parser/StringValueParser.py | 10 ----- scripts/parser/token.py | 4 -- ...blisher_base.py => TestflightPublisher.py} | 2 +- .../utils/testflight/testflight_publisher.py | 22 ---------- 13 files changed, 12 insertions(+), 103 deletions(-) create mode 100644 scripts/commands/TestflightCommand.py delete mode 100644 scripts/commands/build_command.py delete mode 100644 scripts/commands/testflight_command.py delete mode 100644 scripts/parser/AttributeNameParser.py rename scripts/parser/{CleanBuildParser => }/CleanBuildParser.py (100%) delete mode 100644 scripts/parser/CleanBuildParser/__init__.py delete mode 100644 scripts/parser/InfoplistParser/__init__.py delete mode 100644 scripts/parser/StringValueParser.py delete mode 100644 scripts/parser/token.py rename scripts/utils/testflight/{testflight_publisher_base.py => TestflightPublisher.py} (91%) delete mode 100644 scripts/utils/testflight/testflight_publisher.py diff --git a/scripts/CommandBuilders/CleanBuildCommandBuilder.py b/scripts/CommandBuilders/CleanBuildCommandBuilder.py index ab47d24..cd8639f 100644 --- a/scripts/CommandBuilders/CleanBuildCommandBuilder.py +++ b/scripts/CommandBuilders/CleanBuildCommandBuilder.py @@ -1,6 +1,6 @@ from commands.CleanBuildCommands.BuildCommand import BuildCommand from commands.CleanBuildCommands.CleanCommand import CleanCommand -from parser.CleanBuildParser.CleanBuildParser import CleanBuildParser +from parser import CleanBuildParser class CleanBuildCommandBuilder: diff --git a/scripts/UnitTests/CleanBuildParser/test_cleanBuildParser.py b/scripts/UnitTests/CleanBuildParser/test_cleanBuildParser.py index cf0f49d..48c3bcc 100644 --- a/scripts/UnitTests/CleanBuildParser/test_cleanBuildParser.py +++ b/scripts/UnitTests/CleanBuildParser/test_cleanBuildParser.py @@ -1,5 +1,5 @@ import unittest -from parser.CleanBuildParser.CleanBuildParser import CleanBuildParser +from parser import CleanBuildParser class TestCleanBuildParser(unittest.TestCase): diff --git a/scripts/commands/TestflightCommand.py b/scripts/commands/TestflightCommand.py new file mode 100644 index 0000000..6f2e4e2 --- /dev/null +++ b/scripts/commands/TestflightCommand.py @@ -0,0 +1,9 @@ +from utils.testflight.TestflightPublisher import TestFlightPublisher + + +class PublishToTestFlightCommand: + def __init__(self, api_token, team_token, notes): + self._publisher = TestFlightPublisher(api_token, team_token, notes) + + def execute(self): + self._publisher.Publish() \ No newline at end of file diff --git a/scripts/commands/build_command.py b/scripts/commands/build_command.py deleted file mode 100644 index 3eb1db0..0000000 --- a/scripts/commands/build_command.py +++ /dev/null @@ -1,44 +0,0 @@ - - -class BuildCommand: - def SetCommandPrefix(self, value): - self._command_prefix = value - self._cmd_prefix_len = len(self._command_prefix) - - self._prefix_name= 'prefix' - self._app_name= 'app' - self._key_name = 'key' - - def __init__(self, config, cmd_prefix, separator=' '): - self._separator = separator - self._config = config - self.SetCommandPrefix(cmd_prefix) - - - def _parseConfig(self): - return None - - - def FetchAllKeysFromConfig(self): - all_keys = [] - - for k in self._config: - if k.startswith(self._command_prefix): - all_keys.append(k) - - print all_keys - return all_keys - - - def ParseValueFromToken(self, value_token): - value = value_token - - if value_token.startswith('@'): - key = value_token[1:] - value = self._config[key] - - return value - - - def execute(self): - return None diff --git a/scripts/commands/testflight_command.py b/scripts/commands/testflight_command.py deleted file mode 100644 index eb6f20d..0000000 --- a/scripts/commands/testflight_command.py +++ /dev/null @@ -1,10 +0,0 @@ -import commands.build_command as bcmd -import utils.testflight.testflight_publisher as tf - - -class PublishToTestFlightCommand(bcmd.BuildCommand): - def __init__(self, api_token, team_token, notes): - self._publisher = tf.TestFlightPublisherBase(api_token, team_token, notes) - - def execute(self): - self._publisher.Publish() \ No newline at end of file diff --git a/scripts/parser/AttributeNameParser.py b/scripts/parser/AttributeNameParser.py deleted file mode 100644 index c49226b..0000000 --- a/scripts/parser/AttributeNameParser.py +++ /dev/null @@ -1,8 +0,0 @@ -import parser.StringValueParser as parser - -class AttributeNameParser(parser.StringValueParser): - def __init__(self, attribute_name, model): - parser.StringValueParser.__init__(self, attribute_name, model) - - def ProcessToken(self, token): - self._model.rel_path = '' diff --git a/scripts/parser/CleanBuildParser/CleanBuildParser.py b/scripts/parser/CleanBuildParser.py similarity index 100% rename from scripts/parser/CleanBuildParser/CleanBuildParser.py rename to scripts/parser/CleanBuildParser.py diff --git a/scripts/parser/CleanBuildParser/__init__.py b/scripts/parser/CleanBuildParser/__init__.py deleted file mode 100644 index cc31abc..0000000 --- a/scripts/parser/CleanBuildParser/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__author__ = 'rzaitov' diff --git a/scripts/parser/InfoplistParser/__init__.py b/scripts/parser/InfoplistParser/__init__.py deleted file mode 100644 index cc31abc..0000000 --- a/scripts/parser/InfoplistParser/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__author__ = 'rzaitov' diff --git a/scripts/parser/StringValueParser.py b/scripts/parser/StringValueParser.py deleted file mode 100644 index 135e3b9..0000000 --- a/scripts/parser/StringValueParser.py +++ /dev/null @@ -1,10 +0,0 @@ -class StringValueParser: - def __init__(self, valid_string, model): - self._valid_string = valid_string - self._model = model - - def IsTokenValid(self, token): - return token == self._valid_string - - def ProcessToken(self, token): - pass diff --git a/scripts/parser/token.py b/scripts/parser/token.py deleted file mode 100644 index 6d9eacd..0000000 --- a/scripts/parser/token.py +++ /dev/null @@ -1,4 +0,0 @@ -class Token(): - def __init__(self, content, type): - self.content = content - self.type = type diff --git a/scripts/utils/testflight/testflight_publisher_base.py b/scripts/utils/testflight/TestflightPublisher.py similarity index 91% rename from scripts/utils/testflight/testflight_publisher_base.py rename to scripts/utils/testflight/TestflightPublisher.py index 7a74568..5450571 100644 --- a/scripts/utils/testflight/testflight_publisher_base.py +++ b/scripts/utils/testflight/TestflightPublisher.py @@ -1,7 +1,7 @@ from subprocess import call -class TestFlightPublisherBase: +class TestFlightPublisher: DefaultNotes = 'This build was uploaded via the upload API' def __init__(self, api_token, team_token, notes=DefaultNotes): diff --git a/scripts/utils/testflight/testflight_publisher.py b/scripts/utils/testflight/testflight_publisher.py deleted file mode 100644 index 0e5ac12..0000000 --- a/scripts/utils/testflight/testflight_publisher.py +++ /dev/null @@ -1,22 +0,0 @@ -import os -from utils import testflight as tf - - -class TestFlightPublisher(tf.TestFlightPublisherBase): - def __init__(self, config): - self._config = config - - api_token = config['tf_api_token'] - team_token = config['tf_team_token'] - notes = config.get('ft_notes', None) - - tf.TestFlightPublisherBase.__init__(self, api_token, team_token, notes) - - def Publish(self): - sln_path = self._config['sln_path'] - sln_dir = os.path.dirname(sln_path) - - ipa_rel_path = 'BuildSample/bin/iPhone/Release/BuildSample-{0}.ipa'.format(self._config['version']) - ipa_abs_path = os.path.join(sln_dir, ipa_rel_path) - - return tf.TestFlightPublisherBase.Publish(self, ipa_abs_path) \ No newline at end of file From 0758b2e43646925c09f81ea5464eb15c312168d9 Mon Sep 17 00:00:00 2001 From: rzaitov Date: Fri, 1 Nov 2013 17:52:41 +0400 Subject: [PATCH 3/6] =?UTF-8?q?=D0=BE=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20import?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/SettingsProvider/FromFileSettingsProvider.py | 1 - scripts/build.py | 3 ++- scripts/parser/BackupParser/CreateBackupParser.py | 4 +++- scripts/parser/BackupParser/DeleteBackupParser.py | 4 +++- scripts/parser/BackupParser/RestoreBackupParser.py | 3 ++- scripts/parser/CopyParser/CopyLineParser.py | 4 +++- scripts/parser/InsideParser/InsideRemoveParser.py | 3 ++- scripts/parser/InsideParser/InsideSetParser.py | 4 +++- scripts/parser/MakeDirsParser.py | 4 +++- scripts/parser/SettingsParser/SettingsLineParser.py | 3 ++- scripts/parser/ShParser.py | 4 +++- scripts/run_manual_tests.py | 1 - scripts/utils/PathConverter/path_converter.py | 3 ++- 13 files changed, 28 insertions(+), 13 deletions(-) diff --git a/scripts/SettingsProvider/FromFileSettingsProvider.py b/scripts/SettingsProvider/FromFileSettingsProvider.py index 295b173..65ad292 100644 --- a/scripts/SettingsProvider/FromFileSettingsProvider.py +++ b/scripts/SettingsProvider/FromFileSettingsProvider.py @@ -1,4 +1,3 @@ -import os from parser.SettingsParser.SettingsParser import SettingsParser diff --git a/scripts/build.py b/scripts/build.py index a80dd2e..fe8828a 100644 --- a/scripts/build.py +++ b/scripts/build.py @@ -1,9 +1,10 @@ import os import imp +import argparse import settings import instruments -import argparse + keys = instruments.GetConfigKeys(settings.build_ready_configs) diff --git a/scripts/parser/BackupParser/CreateBackupParser.py b/scripts/parser/BackupParser/CreateBackupParser.py index 2e897f6..e45cc5e 100644 --- a/scripts/parser/BackupParser/CreateBackupParser.py +++ b/scripts/parser/BackupParser/CreateBackupParser.py @@ -1,6 +1,8 @@ +import re + from parser.BackupParser.CreateBackupArguments import CreateBackupArguments from parser.LineParser import LineParser -import re + class CreateBackupParser(LineParser): def __init__(self): diff --git a/scripts/parser/BackupParser/DeleteBackupParser.py b/scripts/parser/BackupParser/DeleteBackupParser.py index cf92e91..830a9ef 100644 --- a/scripts/parser/BackupParser/DeleteBackupParser.py +++ b/scripts/parser/BackupParser/DeleteBackupParser.py @@ -1,6 +1,8 @@ -from parser.LineParser import LineParser import re +from parser.LineParser import LineParser + + class DeleteBackupParser(LineParser): def parseLine(self, line): assert line is not None diff --git a/scripts/parser/BackupParser/RestoreBackupParser.py b/scripts/parser/BackupParser/RestoreBackupParser.py index 52ac72b..fe0b3ef 100644 --- a/scripts/parser/BackupParser/RestoreBackupParser.py +++ b/scripts/parser/BackupParser/RestoreBackupParser.py @@ -1,6 +1,7 @@ -from parser.LineParser import LineParser import re +from parser.LineParser import LineParser + class RestoreBackupParser(LineParser): def parseLine(self, line): diff --git a/scripts/parser/CopyParser/CopyLineParser.py b/scripts/parser/CopyParser/CopyLineParser.py index 6166b2f..729f4f2 100644 --- a/scripts/parser/CopyParser/CopyLineParser.py +++ b/scripts/parser/CopyParser/CopyLineParser.py @@ -1,6 +1,8 @@ +import re + from parser.CopyParser.CopyArguments import CopyArguments from parser.LineParser import LineParser -import re + class CopyLineParser(LineParser): def __init__(self): diff --git a/scripts/parser/InsideParser/InsideRemoveParser.py b/scripts/parser/InsideParser/InsideRemoveParser.py index a132ae3..77b7534 100644 --- a/scripts/parser/InsideParser/InsideRemoveParser.py +++ b/scripts/parser/InsideParser/InsideRemoveParser.py @@ -1,6 +1,7 @@ -from parser.LineParser import LineParser import re +from parser.LineParser import LineParser + class InsideRemoveParser(LineParser): def __init__(self, fileExt): diff --git a/scripts/parser/InsideParser/InsideSetParser.py b/scripts/parser/InsideParser/InsideSetParser.py index 5aec1c4..a5ac3ff 100644 --- a/scripts/parser/InsideParser/InsideSetParser.py +++ b/scripts/parser/InsideParser/InsideSetParser.py @@ -1,6 +1,8 @@ -from parser.LineParser import LineParser import re +from parser.LineParser import LineParser + + class InsideSetParser(LineParser): def __init__(self, value_provider, fileExt): assert value_provider is not None diff --git a/scripts/parser/MakeDirsParser.py b/scripts/parser/MakeDirsParser.py index 1366866..cd68c4d 100644 --- a/scripts/parser/MakeDirsParser.py +++ b/scripts/parser/MakeDirsParser.py @@ -1,6 +1,8 @@ -from parser.LineParser import LineParser import re +from parser.LineParser import LineParser + + class MakeDirsParser(LineParser): def parseLine(self, line): pathRegexp = r"'(?P[^']+)'$" diff --git a/scripts/parser/SettingsParser/SettingsLineParser.py b/scripts/parser/SettingsParser/SettingsLineParser.py index b75da52..aaaa872 100644 --- a/scripts/parser/SettingsParser/SettingsLineParser.py +++ b/scripts/parser/SettingsParser/SettingsLineParser.py @@ -1,5 +1,6 @@ -from parser.LineParser import LineParser import re + +from parser.LineParser import LineParser from parser.SettingsParser.PathParser import PathParser diff --git a/scripts/parser/ShParser.py b/scripts/parser/ShParser.py index 0613f21..b284d8c 100644 --- a/scripts/parser/ShParser.py +++ b/scripts/parser/ShParser.py @@ -1,6 +1,8 @@ -from parser.LineParser import LineParser import re +from parser.LineParser import LineParser + + class ShParser(LineParser): def parseLine(self, line): assert line diff --git a/scripts/run_manual_tests.py b/scripts/run_manual_tests.py index 58ccd16..b287fcb 100644 --- a/scripts/run_manual_tests.py +++ b/scripts/run_manual_tests.py @@ -19,4 +19,3 @@ os.chdir(baseDir) #import ManualTests.infoplist_test #import ManualTests.clean_test -import ManualTests.build_test \ No newline at end of file diff --git a/scripts/utils/PathConverter/path_converter.py b/scripts/utils/PathConverter/path_converter.py index d7397cd..36927e4 100644 --- a/scripts/utils/PathConverter/path_converter.py +++ b/scripts/utils/PathConverter/path_converter.py @@ -1,6 +1,7 @@ -import utils.PathConverter.converter_base as cB import os +import utils.PathConverter.converter_base as cB + class PathConverter(cB.ConverterBase): def __init__(self, sln_path): From e18bebeae56f8ec64fb2bc634878add15b3c143b Mon Sep 17 00:00:00 2001 From: rzaitov Date: Fri, 1 Nov 2013 18:09:31 +0400 Subject: [PATCH 4/6] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BD=D0=B5=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83?= =?UTF-8?q?=D0=B5=D0=BC=D1=8B=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CleanBuildCommandBuilder.py | 2 - .../CleanBuildParser/test_cleanBuildParser.py | 2 +- .../ProjectParser/test_projectParser.py | 8 +- .../SettingsParser/test_SettingsParser.py | 17 --- scripts/UnitTests/SolutionToolkit/__init__.py | 1 - .../test_remove_project_sections.py | 44 ------- scripts/build.py | 56 --------- scripts/commands/DeleteBackupCommand.py | 4 +- scripts/commands/PatchCsprojCommand.py | 6 +- scripts/commands/PatchInfoPlistCommand.py | 6 +- scripts/commands/RemoveProjectCommand.py | 2 +- scripts/instruments.py | 119 ------------------ scripts/parser/CleanBuildParser.py | 4 +- .../parser/SettingsParser/SettingsMerger.py | 6 +- scripts/parser/ShParser.py | 2 +- scripts/patch.py | 39 ------ scripts/settings.py | 3 - scripts/utils/PathConverter/__init__.py | 1 - scripts/utils/PathConverter/converter_base.py | 6 - scripts/utils/PathConverter/path_converter.py | 11 -- 20 files changed, 21 insertions(+), 318 deletions(-) delete mode 100644 scripts/UnitTests/SolutionToolkit/__init__.py delete mode 100644 scripts/UnitTests/SolutionToolkit/test_remove_project_sections.py delete mode 100644 scripts/build.py delete mode 100644 scripts/instruments.py delete mode 100644 scripts/patch.py delete mode 100644 scripts/utils/PathConverter/__init__.py delete mode 100644 scripts/utils/PathConverter/converter_base.py delete mode 100644 scripts/utils/PathConverter/path_converter.py diff --git a/scripts/CommandBuilders/CleanBuildCommandBuilder.py b/scripts/CommandBuilders/CleanBuildCommandBuilder.py index cd8639f..a4740b4 100644 --- a/scripts/CommandBuilders/CleanBuildCommandBuilder.py +++ b/scripts/CommandBuilders/CleanBuildCommandBuilder.py @@ -32,8 +32,6 @@ class CleanBuildCommandBuilder: return command def __getCommandByToken(self, slnPath, slnConfig): - command = None - if self.__commandToken == 'clean': command = CleanCommand(self.__pathToBuildUtil, slnPath, slnConfig) elif self.__commandToken == 'build': diff --git a/scripts/UnitTests/CleanBuildParser/test_cleanBuildParser.py b/scripts/UnitTests/CleanBuildParser/test_cleanBuildParser.py index 48c3bcc..18c6065 100644 --- a/scripts/UnitTests/CleanBuildParser/test_cleanBuildParser.py +++ b/scripts/UnitTests/CleanBuildParser/test_cleanBuildParser.py @@ -1,5 +1,5 @@ import unittest -from parser import CleanBuildParser +from parser.CleanBuildParser import CleanBuildParser class TestCleanBuildParser(unittest.TestCase): diff --git a/scripts/UnitTests/ProjectParser/test_projectParser.py b/scripts/UnitTests/ProjectParser/test_projectParser.py index e86ff30..d3dc1f2 100644 --- a/scripts/UnitTests/ProjectParser/test_projectParser.py +++ b/scripts/UnitTests/ProjectParser/test_projectParser.py @@ -25,8 +25,8 @@ class TestCsprojParser(unittest.TestCase): def test_parse(self): line = "inside 'Dir/../Some Folder/CoolApp.csproj' set OutputPath to 'Output'" - tuple = self.parser.parseLine(line) + result = self.parser.parseLine(line) - self.assertEqual('Dir/../Some Folder/CoolApp.csproj', tuple[0]) - self.assertEqual('OutputPath', tuple[1]) - self.assertEqual('Output', tuple[2]) \ No newline at end of file + 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 diff --git a/scripts/UnitTests/SettingsParser/test_SettingsParser.py b/scripts/UnitTests/SettingsParser/test_SettingsParser.py index 2ad2ad4..b391cc3 100644 --- a/scripts/UnitTests/SettingsParser/test_SettingsParser.py +++ b/scripts/UnitTests/SettingsParser/test_SettingsParser.py @@ -7,23 +7,6 @@ class TestSettingsParser(unittest.TestCase): def setUp(self): self.parser = SettingsParser() - def test_getSettingsDictByPath(self): - - len0 = len(self.parser.settings) - self.assertEqual(0, len0) - - self.parser.getSettingsDictByPath(['one']) - len1 = len(self.parser.settings) - self.assertEqual(1, len1) - - self.parser.getSettingsDictByPath(['one', 'two']) - len1 = len(self.parser.settings) - self.assertEqual(1, len1) - - self.parser.getSettingsDictByPath(['another', 'two']) - len2 = len(self.parser.settings) - self.assertEqual(2, len2) - def test_processLine(self): line1 = "x.y.name1 = 'value1'" line2 = "x.y.name2 = 'value2'" diff --git a/scripts/UnitTests/SolutionToolkit/__init__.py b/scripts/UnitTests/SolutionToolkit/__init__.py deleted file mode 100644 index cc31abc..0000000 --- a/scripts/UnitTests/SolutionToolkit/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__author__ = 'rzaitov' diff --git a/scripts/UnitTests/SolutionToolkit/test_remove_project_sections.py b/scripts/UnitTests/SolutionToolkit/test_remove_project_sections.py deleted file mode 100644 index 3a3cc14..0000000 --- a/scripts/UnitTests/SolutionToolkit/test_remove_project_sections.py +++ /dev/null @@ -1,44 +0,0 @@ -import unittest -from utils.sln import sln_toolkit_base as sln - - -class TestRemoveProjectSections(unittest.TestCase): - - def test_RemoveProjectSections(self): - toolkit = sln.SolutionToolkitBase() - patched_content = toolkit.RemoveProjectSectionsFrom(TestRemoveProjectSections.sln_content_original, ['NotCompileApp']) - self.assertEqual(TestRemoveProjectSections.sln_content_patched, patched_content) - - sln_content_original = r""" -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CoolApp", "BuildSample\CoolApp.csproj", "{E7393DD4-5E5F-456A-89AB-000EC63BD901}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NotCompileApp", "NotCompileApp\NotCompileApp.csproj", "{3DE4FDFA-1502-44CF-9B73-78B6D730C59F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Domain", "Domain\Domain.csproj", "{BD5EC0A1-EDC9-4D90-BACF-AE54F26148C1}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|iPhoneSimulator = Debug|iPhoneSimulator - Release|iPhoneSimulator = Release|iPhoneSimulator - Debug|iPhone = Debug|iPhone - Release|iPhone = Release|iPhone - EndGlobalSection -""" - - sln_content_patched = r""" -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CoolApp", "BuildSample\CoolApp.csproj", "{E7393DD4-5E5F-456A-89AB-000EC63BD901}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Domain", "Domain\Domain.csproj", "{BD5EC0A1-EDC9-4D90-BACF-AE54F26148C1}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|iPhoneSimulator = Debug|iPhoneSimulator - Release|iPhoneSimulator = Release|iPhoneSimulator - Debug|iPhone = Debug|iPhone - Release|iPhone = Release|iPhone - EndGlobalSection -""" \ No newline at end of file diff --git a/scripts/build.py b/scripts/build.py deleted file mode 100644 index fe8828a..0000000 --- a/scripts/build.py +++ /dev/null @@ -1,56 +0,0 @@ -import os -import imp -import argparse - -import settings -import instruments - - -keys = instruments.GetConfigKeys(settings.build_ready_configs) - -parser = argparse.ArgumentParser() -for key in keys: - arg = "--{0}".format(key) - parser.add_argument(arg) - -args = parser.parse_args() -cmd_args = vars(args) - -# remove unset key-values pairs -for k in cmd_args.keys(): - if cmd_args[k] is None: - del cmd_args[k] - -print cmd_args - -build_ready_configs = instruments.GetUnionConfigs(settings.build_ready_configs, cmd_args) - -for bc in build_ready_configs: - print bc['name'] - - sln_path = bc['sln_path'] - sln_dir = os.path.dirname(sln_path) - - instruments.CreateOrRestoreFromBackup(sln_dir, bc['files_for_backup']) - instruments.RemoveProjectFromSolution(sln_path, bc['projects_to_exclude']) - - # try patch source code files - path_function = bc['patch'] - if path_function is not None: - path_function(bc) - - if bc['action'] == 'build': - instruments.CleanSolution(bc['mdtool'], sln_path, bc['sln_config']) - instruments.BuildSolution(bc['mdtool'], sln_path, bc['sln_config']) - - instruments.CreateOrRestoreFromBackup(sln_dir, bc['files_for_backup']) - instruments.DeleteBackups(sln_dir, bc['files_for_backup']) - - if 'post_build_file' in bc and 'post_build_actions' in bc: - path_to_script = bc['post_build_file'] - module_name = os.path.splitext(os.path.basename(path_to_script))[0] - post_build = imp.load_source(module_name, path_to_script) - - for func_name in bc['post_build_actions']: - func = getattr(post_build, func_name) - func(bc) \ No newline at end of file diff --git a/scripts/commands/DeleteBackupCommand.py b/scripts/commands/DeleteBackupCommand.py index c34add1..5246d1a 100644 --- a/scripts/commands/DeleteBackupCommand.py +++ b/scripts/commands/DeleteBackupCommand.py @@ -4,5 +4,5 @@ import shutil class DeleteBackupCommand: def execute(self): dirs = [name for name in os.listdir('.') if os.path.isdir(os.path.join('.', name)) & name.startswith('backup.')] - for dir in dirs: - shutil.rmtree(dir) \ No newline at end of file + for d in dirs: + shutil.rmtree(d) \ No newline at end of file diff --git a/scripts/commands/PatchCsprojCommand.py b/scripts/commands/PatchCsprojCommand.py index ef9ccb0..b801d11 100644 --- a/scripts/commands/PatchCsprojCommand.py +++ b/scripts/commands/PatchCsprojCommand.py @@ -1,4 +1,4 @@ -import utils.csproj.patcher as csproj +import utils.csproj.Patcher as csproj class PatchCsprojCommand(): def __init__(self, csprojAbsPath, key, value, slnConfig): @@ -15,5 +15,5 @@ class PatchCsprojCommand(): def execute(self): patcher = csproj.Patcher(self.__csprojAbsPath) - dict = { self.__key : self.__value } - patcher.AddOrReplace(dict, self.__slnConfig) \ No newline at end of file + dictionary = { self.__key : self.__value } + patcher.AddOrReplace(dictionary, self.__slnConfig) \ No newline at end of file diff --git a/scripts/commands/PatchInfoPlistCommand.py b/scripts/commands/PatchInfoPlistCommand.py index fbd97b0..d85cb00 100644 --- a/scripts/commands/PatchInfoPlistCommand.py +++ b/scripts/commands/PatchInfoPlistCommand.py @@ -1,4 +1,4 @@ -from utils.infoplist.patcher import Patcher +from utils.infoplist.Patcher import Patcher class PatchInfoPlistCommand(): @@ -14,5 +14,5 @@ class PatchInfoPlistCommand(): def execute(self): patcher = Patcher(self.__pathToPlist) - dict = { self.__key : self.__value } - patcher.AddOrReplace(dict) + dictionary = { self.__key : self.__value } + patcher.AddOrReplace(dictionary) diff --git a/scripts/commands/RemoveProjectCommand.py b/scripts/commands/RemoveProjectCommand.py index d29082c..3bdb943 100644 --- a/scripts/commands/RemoveProjectCommand.py +++ b/scripts/commands/RemoveProjectCommand.py @@ -1,4 +1,4 @@ -from utils.sln.patcher import Patcher +from utils.sln.Patcher import Patcher class RemoveProjectCommand: diff --git a/scripts/instruments.py b/scripts/instruments.py deleted file mode 100644 index 357a700..0000000 --- a/scripts/instruments.py +++ /dev/null @@ -1,119 +0,0 @@ -from subprocess import call -import shutil -import os -from utils.sln import patcher as sln - - -def MapToBackupName(origin_path): - - backup_path = "{0}.build_backup".format(origin_path) - return backup_path - -def FetchAbsOriginBackupInfo(base_dir, rel_path_to_origin_files): - - abs_path_to_origin_files = [os.path.join(base_dir, rel) for rel in rel_path_to_origin_files] - abs_origin_backup_infos = [{'origin': p, 'backup': MapToBackupName(p)} for p in abs_path_to_origin_files] - - return abs_origin_backup_infos - -def CreateOrRestoreFromBackup(base_dir, relative_path_to_files): - - abs_origin_backup_infos = FetchAbsOriginBackupInfo(base_dir, relative_path_to_files) - - for aobi in abs_origin_backup_infos: - - abs_original = aobi['origin'] - abs_backup = aobi['backup'] - - if os.path.exists(abs_backup): - # restore from backup - shutil.copyfile(abs_backup, abs_original) - else: - # create backup - shutil.copyfile(abs_original, abs_backup) - - return None - -def DeleteBackups(base_dir, relative_path_to_files): - - abs_origin_backup_infos = FetchAbsOriginBackupInfo(base_dir, relative_path_to_files) - - for aobi in abs_origin_backup_infos: - - abs_backup = aobi['backup'] - - if os.path.exists(abs_backup): - os.remove(abs_backup) - - return None - -def ResetDirectory(base_dir, relative_path_to_files): - - CreateOrRestoreFromBackup(base_dir, relative_path_to_files) - DeleteBackups(base_dir, relative_path_to_files) - - return None - -def RemoveProjectFromSolution(abs_path_to_sln, project_names): - toolkit = sln.Patcher(abs_path_to_sln) - toolkit.removeProjects(project_names) - -def CleanSolution(mdtool, abs_path_to_sln, config): - - clean_cmd_pattern = '{0} -v build "--configuration:{1}" "--target:Clean" {2}' - clean_cmd_text = clean_cmd_pattern.format(mdtool, config, abs_path_to_sln) - - print(clean_cmd_text) - ret_code = call(clean_cmd_text, shell=True) - print('finished with return code: {0}'.format(ret_code)) - -def BuildSolution(mdtool, abs_path_to_sln, config): - - build_cmd_pattern = '{0} -v build "--configuration:{1}" "--target:Build" {2}' - build_cmd_text = build_cmd_pattern.format(mdtool, config, abs_path_to_sln) - - print(build_cmd_text) - ret_code = call(build_cmd_text, shell=True) - print('finished with return code: {0}'.format(ret_code)) - -def GetUnionConfigs(configs_lst, cmd_args=None): - - union_configs = [] - for c_dict in configs_lst: - - ancestors = GetAncestorsFromRootTo(c_dict) - if cmd_args is not None: - ancestors.append(cmd_args) - - union_config = {} - for a in ancestors: - union_config.update(a) - - union_configs.append(union_config) - - return union_configs - -def GetConfigKeys(configs_lst): - union_configs = GetUnionConfigs(configs_lst) - - keys = []; - for config in union_configs: - for key in config.keys(): - keys.append(key) - - # remove duplicates - keys = list(set(keys)) - - return keys - -def GetAncestorsFromRootTo(config): - - ancestors = [] - c = config - - while c is not None: - ancestors.append(c) - c = c['parent'] - - ancestors.reverse() - return ancestors \ No newline at end of file diff --git a/scripts/parser/CleanBuildParser.py b/scripts/parser/CleanBuildParser.py index 78c08bb..d0461a0 100644 --- a/scripts/parser/CleanBuildParser.py +++ b/scripts/parser/CleanBuildParser.py @@ -1,6 +1,8 @@ -from parser.LineParser import LineParser import re +from parser.LineParser import LineParser + + class CleanBuildParser(LineParser): def __init__(self, commandToken): assert commandToken is not None diff --git a/scripts/parser/SettingsParser/SettingsMerger.py b/scripts/parser/SettingsParser/SettingsMerger.py index 366f971..c3cd2f8 100644 --- a/scripts/parser/SettingsParser/SettingsMerger.py +++ b/scripts/parser/SettingsParser/SettingsMerger.py @@ -23,10 +23,10 @@ class SettingsMerger: return settingsDict - def overrideGuard(self, dict, key, path): - if key in dict: + def overrideGuard(self, dictionary, key, path): + if key in dictionary: pathStr = '.'.joun(path) - msg = 'settings with name {0} by path {1} already exists with value {3}'.format(key, dict[key], pathStr) + msg = 'settings with name {0} by path {1} already exists with value {3}'.format(key, dictionary[key], pathStr) raise Exception(msg) diff --git a/scripts/parser/ShParser.py b/scripts/parser/ShParser.py index b284d8c..0067883 100644 --- a/scripts/parser/ShParser.py +++ b/scripts/parser/ShParser.py @@ -21,4 +21,4 @@ class ShParser(LineParser): def isValidLine(self, line): assert line is not None - return line.startswith('sh ') \ No newline at end of file + return line.startswith('sh ') diff --git a/scripts/patch.py b/scripts/patch.py deleted file mode 100644 index 07e5465..0000000 --- a/scripts/patch.py +++ /dev/null @@ -1,39 +0,0 @@ -import re -import os -import utils.infoplist.patcher as plist - -def RewriteFile(file_to_rewrite, content): - file_to_rewrite.seek(0) - file_to_rewrite.write(content) - file_to_rewrite.truncate() - file_to_rewrite.close() - - -def PatchSlnForIos(build_config): - - sln_file = open(build_config['sln_path'], 'r+') - content = sln_file.read() - - condesign_key_patt = r'.*?' - condesign_key_node = r'{0}'.format(build_config['codesign_key']) - content = re.sub(condesign_key_patt, condesign_key_node, content) - - RewriteFile(sln_file, content) - -def PatchInfoPlist(build_config): - - sln_dir = os.path.dirname(build_config['sln_path']) - abs_info_plist_path = os.path.join(sln_dir, build_config['info_plist_rel_path']) - - key_values = {'CFBundleVersion' : build_config['version']} - patcher = plist.Patcher(abs_info_plist_path) - patcher.AddOrReplace(key_values) - -def PathcIos(build_config): - - PatchSlnForIos(build_config) - PatchInfoPlist(build_config) - -def PathcAndroid(build_config): - print('start patch ios') - diff --git a/scripts/settings.py b/scripts/settings.py index d448715..0ebec86 100644 --- a/scripts/settings.py +++ b/scripts/settings.py @@ -1,6 +1,4 @@ # -*- coding: utf-8 -*- -import patch - build_root = { 'mdtool': '/Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool', 'version': '0.0.0', @@ -58,7 +56,6 @@ ios_development_root = { 'std_cmd.py testflight', ], - 'patch': patch.PathcIos, 'parent': ios_root } diff --git a/scripts/utils/PathConverter/__init__.py b/scripts/utils/PathConverter/__init__.py deleted file mode 100644 index cc31abc..0000000 --- a/scripts/utils/PathConverter/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__author__ = 'rzaitov' diff --git a/scripts/utils/PathConverter/converter_base.py b/scripts/utils/PathConverter/converter_base.py deleted file mode 100644 index f070b93..0000000 --- a/scripts/utils/PathConverter/converter_base.py +++ /dev/null @@ -1,6 +0,0 @@ - - -class ConverterBase: - - def Convert(self, rel_path): - return None diff --git a/scripts/utils/PathConverter/path_converter.py b/scripts/utils/PathConverter/path_converter.py deleted file mode 100644 index 36927e4..0000000 --- a/scripts/utils/PathConverter/path_converter.py +++ /dev/null @@ -1,11 +0,0 @@ -import os - -import utils.PathConverter.converter_base as cB - - -class PathConverter(cB.ConverterBase): - def __init__(self, sln_path): - self._sln_dir = os.path.dirname(sln_path) - - def Convert(self, rel_path): - return os.path.join(self._sln_dir, rel_path) \ No newline at end of file From 131c8abe7b95f2aa96e2b284b39d83160d095fd0 Mon Sep 17 00:00:00 2001 From: rzaitov Date: Fri, 1 Nov 2013 18:24:12 +0400 Subject: [PATCH 5/6] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B8=D0=BB=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/{ => Tests}/ManualTests/__init__.py | 0 scripts/{ => Tests}/ManualTests/build_test.py | 0 scripts/{ => Tests}/ManualTests/clean_test.py | 0 scripts/{ => Tests}/ManualTests/copy_test.py | 2 +- .../ManualTests/create_backup_test.py | 2 +- .../{ => Tests}/ManualTests/csproj_test.py | 2 +- .../ManualTests/delete_backup_test.py | 2 +- .../{ => Tests}/ManualTests/infoplist_test.py | 0 scripts/{ => Tests}/ManualTests/make_dirs.py | 0 .../{ => Tests}/ManualTests/path_provider.py | 0 .../{ => Tests}/ManualTests/remove_project.py | 0 .../ManualTests/restore_backup_test.py | 2 +- .../{ => Tests}/ManualTests/run_sh_command.py | 0 .../BuildConfigProvider}/__init__.py | 0 .../test_BuildConfigProvider.py | 3 ++- .../UnitTests/CleanBuildParser}/__init__.py | 0 .../CleanBuildParser/test_cleanBuildParser.py | 0 .../UnitTests/CopyParser}/__init__.py | 0 .../CopyParser/test_copyArguments.py | 0 .../UnitTests/CopyParser/test_copyParser.py | 0 .../UnitTests/MakeDirsParser}/__init__.py | 0 .../MakeDirsParser/test_makeDirsParser.py | 0 .../UnitTests/ProjectParser}/__init__.py | 0 .../ProjectParser/test_projectParser.py | 4 ++-- .../UnitTests/SettingsParser}/__init__.py | 0 .../SettingsParser/test_PathParser.py | 0 .../SettingsParser/test_SettingsLineParser.py | 0 .../SettingsParser/test_SettingsParser.py | 0 .../UnitTests/ShParser}/__init__.py | 0 .../UnitTests/ShParser/test_shPareser.py | 0 .../UnitTests/ValueProvider}/__init__.py | 0 .../ValueProvider/test_valueProvider.py | 0 .../ShParser => Tests/UnitTests}/__init__.py | 0 scripts/Tests/UnitTests/readme.txt | 5 ++++ .../ValueProvider => Tests}/__init__.py | 0 .../BackupParser/test_createBackupParser.py | 13 ----------- .../BackupParser/test_deleteBackupParser.py | 23 ------------------- .../BackupParser/test_restoreBackupParser.py | 11 --------- .../UnitTests/ProjectParser/ValueProvider.py | 3 --- scripts/UnitTests/__init__.py | 1 - scripts/UnitTests/readme.txt | 5 ---- scripts/commands/PatchCsprojCommand.py | 4 ++-- scripts/commands/PatchInfoPlistCommand.py | 4 ++-- scripts/commands/RemoveProjectCommand.py | 4 ++-- scripts/commands/TestflightCommand.py | 2 +- scripts/taskRunner.py | 5 ++-- .../{configs => }/BuildConfigProvider.py | 0 .../{csproj/patcher.py => CsprojPatcher.py} | 2 +- .../FromFileSettingsProvider.py | 0 .../patcher.py => InfoPlistPatcher.py} | 2 +- .../utils/{sln/patcher.py => SlnPatcher.py} | 2 +- .../{testflight => }/TestflightPublisher.py | 0 scripts/utils/configs/__init__.py | 1 - scripts/utils/csproj/__init__.py | 1 - scripts/utils/infoplist/__init__.py | 1 - scripts/utils/sln/__init__.py | 1 - scripts/utils/testflight/__init__.py | 1 - 57 files changed, 27 insertions(+), 81 deletions(-) rename scripts/{ => Tests}/ManualTests/__init__.py (100%) rename scripts/{ => Tests}/ManualTests/build_test.py (100%) rename scripts/{ => Tests}/ManualTests/clean_test.py (100%) rename scripts/{ => Tests}/ManualTests/copy_test.py (91%) rename scripts/{ => Tests}/ManualTests/create_backup_test.py (78%) rename scripts/{ => Tests}/ManualTests/csproj_test.py (86%) rename scripts/{ => Tests}/ManualTests/delete_backup_test.py (77%) rename scripts/{ => Tests}/ManualTests/infoplist_test.py (100%) rename scripts/{ => Tests}/ManualTests/make_dirs.py (100%) rename scripts/{ => Tests}/ManualTests/path_provider.py (100%) rename scripts/{ => Tests}/ManualTests/remove_project.py (100%) rename scripts/{ => Tests}/ManualTests/restore_backup_test.py (83%) rename scripts/{ => Tests}/ManualTests/run_sh_command.py (100%) rename scripts/{SettingsProvider => Tests/UnitTests/BuildConfigProvider}/__init__.py (100%) rename scripts/{ => Tests}/UnitTests/BuildConfigProvider/test_BuildConfigProvider.py (91%) rename scripts/{UnitTests/BackupParser => Tests/UnitTests/CleanBuildParser}/__init__.py (100%) rename scripts/{ => Tests}/UnitTests/CleanBuildParser/test_cleanBuildParser.py (100%) rename scripts/{UnitTests/BuildConfigProvider => Tests/UnitTests/CopyParser}/__init__.py (100%) rename scripts/{ => Tests}/UnitTests/CopyParser/test_copyArguments.py (100%) rename scripts/{ => Tests}/UnitTests/CopyParser/test_copyParser.py (100%) rename scripts/{UnitTests/CleanBuildParser => Tests/UnitTests/MakeDirsParser}/__init__.py (100%) rename scripts/{ => Tests}/UnitTests/MakeDirsParser/test_makeDirsParser.py (100%) rename scripts/{UnitTests/CopyParser => Tests/UnitTests/ProjectParser}/__init__.py (100%) rename scripts/{ => Tests}/UnitTests/ProjectParser/test_projectParser.py (85%) rename scripts/{UnitTests/MakeDirsParser => Tests/UnitTests/SettingsParser}/__init__.py (100%) rename scripts/{ => Tests}/UnitTests/SettingsParser/test_PathParser.py (100%) rename scripts/{ => Tests}/UnitTests/SettingsParser/test_SettingsLineParser.py (100%) rename scripts/{ => Tests}/UnitTests/SettingsParser/test_SettingsParser.py (100%) rename scripts/{UnitTests/ProjectParser => Tests/UnitTests/ShParser}/__init__.py (100%) rename scripts/{ => Tests}/UnitTests/ShParser/test_shPareser.py (100%) rename scripts/{UnitTests/SettingsParser => Tests/UnitTests/ValueProvider}/__init__.py (100%) rename scripts/{ => Tests}/UnitTests/ValueProvider/test_valueProvider.py (100%) rename scripts/{UnitTests/ShParser => Tests/UnitTests}/__init__.py (100%) create mode 100644 scripts/Tests/UnitTests/readme.txt rename scripts/{UnitTests/ValueProvider => Tests}/__init__.py (100%) delete mode 100644 scripts/UnitTests/BackupParser/test_createBackupParser.py delete mode 100644 scripts/UnitTests/BackupParser/test_deleteBackupParser.py delete mode 100644 scripts/UnitTests/BackupParser/test_restoreBackupParser.py delete mode 100644 scripts/UnitTests/ProjectParser/ValueProvider.py delete mode 100644 scripts/UnitTests/__init__.py delete mode 100644 scripts/UnitTests/readme.txt rename scripts/utils/{configs => }/BuildConfigProvider.py (100%) rename scripts/utils/{csproj/patcher.py => CsprojPatcher.py} (98%) rename scripts/{SettingsProvider => utils}/FromFileSettingsProvider.py (100%) rename scripts/utils/{infoplist/patcher.py => InfoPlistPatcher.py} (98%) rename scripts/utils/{sln/patcher.py => SlnPatcher.py} (98%) rename scripts/utils/{testflight => }/TestflightPublisher.py (100%) delete mode 100644 scripts/utils/configs/__init__.py delete mode 100644 scripts/utils/csproj/__init__.py delete mode 100644 scripts/utils/infoplist/__init__.py delete mode 100644 scripts/utils/sln/__init__.py delete mode 100644 scripts/utils/testflight/__init__.py diff --git a/scripts/ManualTests/__init__.py b/scripts/Tests/ManualTests/__init__.py similarity index 100% rename from scripts/ManualTests/__init__.py rename to scripts/Tests/ManualTests/__init__.py diff --git a/scripts/ManualTests/build_test.py b/scripts/Tests/ManualTests/build_test.py similarity index 100% rename from scripts/ManualTests/build_test.py rename to scripts/Tests/ManualTests/build_test.py diff --git a/scripts/ManualTests/clean_test.py b/scripts/Tests/ManualTests/clean_test.py similarity index 100% rename from scripts/ManualTests/clean_test.py rename to scripts/Tests/ManualTests/clean_test.py diff --git a/scripts/ManualTests/copy_test.py b/scripts/Tests/ManualTests/copy_test.py similarity index 91% rename from scripts/ManualTests/copy_test.py rename to scripts/Tests/ManualTests/copy_test.py index 91a8085..dd547eb 100644 --- a/scripts/ManualTests/copy_test.py +++ b/scripts/Tests/ManualTests/copy_test.py @@ -1,5 +1,5 @@ from CommandBuilders.CopyCommandBuilder import CopyCommandBuilder -from ManualTests.path_provider import PathProvider +from Tests.ManualTests.path_provider import PathProvider line1 = "copy 'BuildSample/BuildSample.sln' to 'BuildSample/BuildSample.txt'" line2 = "copy 'BuildSample/BuildSample/Profiles/8F606DAE-F9C9-4A19-8EFF-34B990D76C28.mobileprovision' to '~/Library/MobileDevice/Provisioning Profiles/BuildScript.mobileprovision'" diff --git a/scripts/ManualTests/create_backup_test.py b/scripts/Tests/ManualTests/create_backup_test.py similarity index 78% rename from scripts/ManualTests/create_backup_test.py rename to scripts/Tests/ManualTests/create_backup_test.py index 8362787..4761f7c 100644 --- a/scripts/ManualTests/create_backup_test.py +++ b/scripts/Tests/ManualTests/create_backup_test.py @@ -1,5 +1,5 @@ from CommandBuilders.CreateBackupCommandBuilder import CreateBackupCommandBuilder -from ManualTests.path_provider import PathProvider +from Tests.ManualTests.path_provider import PathProvider line = "create backup for 'BuildSample'" diff --git a/scripts/ManualTests/csproj_test.py b/scripts/Tests/ManualTests/csproj_test.py similarity index 86% rename from scripts/ManualTests/csproj_test.py rename to scripts/Tests/ManualTests/csproj_test.py index ec8d68d..30bdfbe 100644 --- a/scripts/ManualTests/csproj_test.py +++ b/scripts/Tests/ManualTests/csproj_test.py @@ -1,5 +1,5 @@ from CommandBuilders.PatchCsprojCommandBuilder import PatchCsprojCommandBuilder -from ManualTests.path_provider import PathProvider +from Tests.ManualTests.path_provider import PathProvider from commands.ValueProvider import ValueProvider config = {'sln_config' : 'Release|iPhone'} diff --git a/scripts/ManualTests/delete_backup_test.py b/scripts/Tests/ManualTests/delete_backup_test.py similarity index 77% rename from scripts/ManualTests/delete_backup_test.py rename to scripts/Tests/ManualTests/delete_backup_test.py index 7ac8044..e922c55 100644 --- a/scripts/ManualTests/delete_backup_test.py +++ b/scripts/Tests/ManualTests/delete_backup_test.py @@ -1,5 +1,5 @@ from CommandBuilders.DeleteBackupCommandBuilder import DeleteBackupCommandBuilder -from ManualTests.path_provider import PathProvider +from Tests.ManualTests.path_provider import PathProvider line = "delete backup" diff --git a/scripts/ManualTests/infoplist_test.py b/scripts/Tests/ManualTests/infoplist_test.py similarity index 100% rename from scripts/ManualTests/infoplist_test.py rename to scripts/Tests/ManualTests/infoplist_test.py diff --git a/scripts/ManualTests/make_dirs.py b/scripts/Tests/ManualTests/make_dirs.py similarity index 100% rename from scripts/ManualTests/make_dirs.py rename to scripts/Tests/ManualTests/make_dirs.py diff --git a/scripts/ManualTests/path_provider.py b/scripts/Tests/ManualTests/path_provider.py similarity index 100% rename from scripts/ManualTests/path_provider.py rename to scripts/Tests/ManualTests/path_provider.py diff --git a/scripts/ManualTests/remove_project.py b/scripts/Tests/ManualTests/remove_project.py similarity index 100% rename from scripts/ManualTests/remove_project.py rename to scripts/Tests/ManualTests/remove_project.py diff --git a/scripts/ManualTests/restore_backup_test.py b/scripts/Tests/ManualTests/restore_backup_test.py similarity index 83% rename from scripts/ManualTests/restore_backup_test.py rename to scripts/Tests/ManualTests/restore_backup_test.py index 8bbd378..7ad5520 100644 --- a/scripts/ManualTests/restore_backup_test.py +++ b/scripts/Tests/ManualTests/restore_backup_test.py @@ -1,5 +1,5 @@ from CommandBuilders.RestoreBackupCommandBuilder import RestoreBackupCommandBuilder -from ManualTests.path_provider import PathProvider +from Tests.ManualTests.path_provider import PathProvider line = "restore from backup" diff --git a/scripts/ManualTests/run_sh_command.py b/scripts/Tests/ManualTests/run_sh_command.py similarity index 100% rename from scripts/ManualTests/run_sh_command.py rename to scripts/Tests/ManualTests/run_sh_command.py diff --git a/scripts/SettingsProvider/__init__.py b/scripts/Tests/UnitTests/BuildConfigProvider/__init__.py similarity index 100% rename from scripts/SettingsProvider/__init__.py rename to scripts/Tests/UnitTests/BuildConfigProvider/__init__.py diff --git a/scripts/UnitTests/BuildConfigProvider/test_BuildConfigProvider.py b/scripts/Tests/UnitTests/BuildConfigProvider/test_BuildConfigProvider.py similarity index 91% rename from scripts/UnitTests/BuildConfigProvider/test_BuildConfigProvider.py rename to scripts/Tests/UnitTests/BuildConfigProvider/test_BuildConfigProvider.py index 7508361..5c0556e 100644 --- a/scripts/UnitTests/BuildConfigProvider/test_BuildConfigProvider.py +++ b/scripts/Tests/UnitTests/BuildConfigProvider/test_BuildConfigProvider.py @@ -1,5 +1,6 @@ import unittest -from utils.configs.BuildConfigProvider import BuildConfigProvider +from utils import BuildConfigProvider +from utils.BuildConfigProvider import BuildConfigProvider class TestBuildConfigProvider(unittest.TestCase): diff --git a/scripts/UnitTests/BackupParser/__init__.py b/scripts/Tests/UnitTests/CleanBuildParser/__init__.py similarity index 100% rename from scripts/UnitTests/BackupParser/__init__.py rename to scripts/Tests/UnitTests/CleanBuildParser/__init__.py diff --git a/scripts/UnitTests/CleanBuildParser/test_cleanBuildParser.py b/scripts/Tests/UnitTests/CleanBuildParser/test_cleanBuildParser.py similarity index 100% rename from scripts/UnitTests/CleanBuildParser/test_cleanBuildParser.py rename to scripts/Tests/UnitTests/CleanBuildParser/test_cleanBuildParser.py diff --git a/scripts/UnitTests/BuildConfigProvider/__init__.py b/scripts/Tests/UnitTests/CopyParser/__init__.py similarity index 100% rename from scripts/UnitTests/BuildConfigProvider/__init__.py rename to scripts/Tests/UnitTests/CopyParser/__init__.py diff --git a/scripts/UnitTests/CopyParser/test_copyArguments.py b/scripts/Tests/UnitTests/CopyParser/test_copyArguments.py similarity index 100% rename from scripts/UnitTests/CopyParser/test_copyArguments.py rename to scripts/Tests/UnitTests/CopyParser/test_copyArguments.py diff --git a/scripts/UnitTests/CopyParser/test_copyParser.py b/scripts/Tests/UnitTests/CopyParser/test_copyParser.py similarity index 100% rename from scripts/UnitTests/CopyParser/test_copyParser.py rename to scripts/Tests/UnitTests/CopyParser/test_copyParser.py diff --git a/scripts/UnitTests/CleanBuildParser/__init__.py b/scripts/Tests/UnitTests/MakeDirsParser/__init__.py similarity index 100% rename from scripts/UnitTests/CleanBuildParser/__init__.py rename to scripts/Tests/UnitTests/MakeDirsParser/__init__.py diff --git a/scripts/UnitTests/MakeDirsParser/test_makeDirsParser.py b/scripts/Tests/UnitTests/MakeDirsParser/test_makeDirsParser.py similarity index 100% rename from scripts/UnitTests/MakeDirsParser/test_makeDirsParser.py rename to scripts/Tests/UnitTests/MakeDirsParser/test_makeDirsParser.py diff --git a/scripts/UnitTests/CopyParser/__init__.py b/scripts/Tests/UnitTests/ProjectParser/__init__.py similarity index 100% rename from scripts/UnitTests/CopyParser/__init__.py rename to scripts/Tests/UnitTests/ProjectParser/__init__.py diff --git a/scripts/UnitTests/ProjectParser/test_projectParser.py b/scripts/Tests/UnitTests/ProjectParser/test_projectParser.py similarity index 85% rename from scripts/UnitTests/ProjectParser/test_projectParser.py rename to scripts/Tests/UnitTests/ProjectParser/test_projectParser.py index d3dc1f2..33c6307 100644 --- a/scripts/UnitTests/ProjectParser/test_projectParser.py +++ b/scripts/Tests/UnitTests/ProjectParser/test_projectParser.py @@ -1,13 +1,13 @@ # -*- coding: utf-8 -*- import unittest -from UnitTests.ProjectParser.ValueProvider import ValueProvider +from commands.ValueProvider import ValueProvider from parser.InsideParser.InsideSetParser import InsideSetParser class TestCsprojParser(unittest.TestCase): def setUp(self): - value_provider = ValueProvider() + value_provider = ValueProvider({}) self.parser = InsideSetParser(value_provider, 'csproj') diff --git a/scripts/UnitTests/MakeDirsParser/__init__.py b/scripts/Tests/UnitTests/SettingsParser/__init__.py similarity index 100% rename from scripts/UnitTests/MakeDirsParser/__init__.py rename to scripts/Tests/UnitTests/SettingsParser/__init__.py diff --git a/scripts/UnitTests/SettingsParser/test_PathParser.py b/scripts/Tests/UnitTests/SettingsParser/test_PathParser.py similarity index 100% rename from scripts/UnitTests/SettingsParser/test_PathParser.py rename to scripts/Tests/UnitTests/SettingsParser/test_PathParser.py diff --git a/scripts/UnitTests/SettingsParser/test_SettingsLineParser.py b/scripts/Tests/UnitTests/SettingsParser/test_SettingsLineParser.py similarity index 100% rename from scripts/UnitTests/SettingsParser/test_SettingsLineParser.py rename to scripts/Tests/UnitTests/SettingsParser/test_SettingsLineParser.py diff --git a/scripts/UnitTests/SettingsParser/test_SettingsParser.py b/scripts/Tests/UnitTests/SettingsParser/test_SettingsParser.py similarity index 100% rename from scripts/UnitTests/SettingsParser/test_SettingsParser.py rename to scripts/Tests/UnitTests/SettingsParser/test_SettingsParser.py diff --git a/scripts/UnitTests/ProjectParser/__init__.py b/scripts/Tests/UnitTests/ShParser/__init__.py similarity index 100% rename from scripts/UnitTests/ProjectParser/__init__.py rename to scripts/Tests/UnitTests/ShParser/__init__.py diff --git a/scripts/UnitTests/ShParser/test_shPareser.py b/scripts/Tests/UnitTests/ShParser/test_shPareser.py similarity index 100% rename from scripts/UnitTests/ShParser/test_shPareser.py rename to scripts/Tests/UnitTests/ShParser/test_shPareser.py diff --git a/scripts/UnitTests/SettingsParser/__init__.py b/scripts/Tests/UnitTests/ValueProvider/__init__.py similarity index 100% rename from scripts/UnitTests/SettingsParser/__init__.py rename to scripts/Tests/UnitTests/ValueProvider/__init__.py diff --git a/scripts/UnitTests/ValueProvider/test_valueProvider.py b/scripts/Tests/UnitTests/ValueProvider/test_valueProvider.py similarity index 100% rename from scripts/UnitTests/ValueProvider/test_valueProvider.py rename to scripts/Tests/UnitTests/ValueProvider/test_valueProvider.py diff --git a/scripts/UnitTests/ShParser/__init__.py b/scripts/Tests/UnitTests/__init__.py similarity index 100% rename from scripts/UnitTests/ShParser/__init__.py rename to scripts/Tests/UnitTests/__init__.py diff --git a/scripts/Tests/UnitTests/readme.txt b/scripts/Tests/UnitTests/readme.txt new file mode 100644 index 0000000..8ee3a1e --- /dev/null +++ b/scripts/Tests/UnitTests/readme.txt @@ -0,0 +1,5 @@ +Запуск всех тестов +python -m unittest discover -s Tests/UnitTests/ + +Запуск части тестов +python -m unittest discover -s Tests/UnitTests/CopyParser/ \ No newline at end of file diff --git a/scripts/UnitTests/ValueProvider/__init__.py b/scripts/Tests/__init__.py similarity index 100% rename from scripts/UnitTests/ValueProvider/__init__.py rename to scripts/Tests/__init__.py diff --git a/scripts/UnitTests/BackupParser/test_createBackupParser.py b/scripts/UnitTests/BackupParser/test_createBackupParser.py deleted file mode 100644 index 8b5b199..0000000 --- a/scripts/UnitTests/BackupParser/test_createBackupParser.py +++ /dev/null @@ -1,13 +0,0 @@ -import unittest -from parser.BackupParser.CreateBackupParser import CreateBackupParser - - -class TestCreateBackupParser(unittest.TestCase): - def setUp(self): - self.__parser = CreateBackupParser() - - def test_validInput(self): - line = "create backup for 'SomeFolder'" - createBackupArgs = self.__parser.parseLine(line) - - self.assertEqual('SomeFolder', createBackupArgs.folderName) \ No newline at end of file diff --git a/scripts/UnitTests/BackupParser/test_deleteBackupParser.py b/scripts/UnitTests/BackupParser/test_deleteBackupParser.py deleted file mode 100644 index fbe91a7..0000000 --- a/scripts/UnitTests/BackupParser/test_deleteBackupParser.py +++ /dev/null @@ -1,23 +0,0 @@ -import unittest -from parser.BackupParser.DeleteBackupParser import DeleteBackupParser - - -class TestDeleteBackupParser(unittest.TestCase): - def setUp(self): - self.__parser = DeleteBackupParser() - - def test_isValid(self): - line = 'delete backup' - isValid = self.__parser.isValidLine(line) - - self.assertEqual(True, isValid) - - def test_isNotValid(self): - line = 'bla backup' - isValid = self.__parser.isValidLine(line) - - self.assertEqual(False, isValid) - - def test_validInput(self): - line = 'delete backup' - self.__parser.parseLine(line) \ No newline at end of file diff --git a/scripts/UnitTests/BackupParser/test_restoreBackupParser.py b/scripts/UnitTests/BackupParser/test_restoreBackupParser.py deleted file mode 100644 index 2168d78..0000000 --- a/scripts/UnitTests/BackupParser/test_restoreBackupParser.py +++ /dev/null @@ -1,11 +0,0 @@ -import unittest -from parser.BackupParser.RestoreBackupParser import RestoreBackupParser - - -class TestRestoreBackupParser(unittest.TestCase): - def setUp(self): - self.__parser = RestoreBackupParser() - - def test_ValidInput(self): - line = 'restore from backup' - self.__parser.parseLine(line) \ No newline at end of file diff --git a/scripts/UnitTests/ProjectParser/ValueProvider.py b/scripts/UnitTests/ProjectParser/ValueProvider.py deleted file mode 100644 index 646266d..0000000 --- a/scripts/UnitTests/ProjectParser/ValueProvider.py +++ /dev/null @@ -1,3 +0,0 @@ -class ValueProvider: - def getValueFor(self, link): - return link diff --git a/scripts/UnitTests/__init__.py b/scripts/UnitTests/__init__.py deleted file mode 100644 index cc31abc..0000000 --- a/scripts/UnitTests/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__author__ = 'rzaitov' diff --git a/scripts/UnitTests/readme.txt b/scripts/UnitTests/readme.txt deleted file mode 100644 index 44b8579..0000000 --- a/scripts/UnitTests/readme.txt +++ /dev/null @@ -1,5 +0,0 @@ -Запуск всех тестов -python -m unittest discover -s UnitTests/ - -Запуск части тестов -python -m unittest discover -s UnitTests/CopyParser/ \ No newline at end of file diff --git a/scripts/commands/PatchCsprojCommand.py b/scripts/commands/PatchCsprojCommand.py index b801d11..68007eb 100644 --- a/scripts/commands/PatchCsprojCommand.py +++ b/scripts/commands/PatchCsprojCommand.py @@ -1,4 +1,4 @@ -import utils.csproj.Patcher as csproj +import utils.CsprojPatcher as csproj class PatchCsprojCommand(): def __init__(self, csprojAbsPath, key, value, slnConfig): @@ -13,7 +13,7 @@ class PatchCsprojCommand(): self.__slnConfig = slnConfig def execute(self): - patcher = csproj.Patcher(self.__csprojAbsPath) + patcher = csproj.CsprojPatcher(self.__csprojAbsPath) dictionary = { self.__key : self.__value } patcher.AddOrReplace(dictionary, self.__slnConfig) \ No newline at end of file diff --git a/scripts/commands/PatchInfoPlistCommand.py b/scripts/commands/PatchInfoPlistCommand.py index d85cb00..f75a4e2 100644 --- a/scripts/commands/PatchInfoPlistCommand.py +++ b/scripts/commands/PatchInfoPlistCommand.py @@ -1,4 +1,4 @@ -from utils.infoplist.Patcher import Patcher +from utils import InfoPlistPatcher class PatchInfoPlistCommand(): @@ -12,7 +12,7 @@ class PatchInfoPlistCommand(): self.__value = value def execute(self): - patcher = Patcher(self.__pathToPlist) + patcher = InfoPlistPatcher(self.__pathToPlist) dictionary = { self.__key : self.__value } patcher.AddOrReplace(dictionary) diff --git a/scripts/commands/RemoveProjectCommand.py b/scripts/commands/RemoveProjectCommand.py index 3bdb943..7177673 100644 --- a/scripts/commands/RemoveProjectCommand.py +++ b/scripts/commands/RemoveProjectCommand.py @@ -1,4 +1,4 @@ -from utils.sln.Patcher import Patcher +from utils import SlnPatcher class RemoveProjectCommand: @@ -10,5 +10,5 @@ class RemoveProjectCommand: self.__projectName = projectName def execute(self): - patcher = Patcher(self.__slnPath) + patcher = SlnPatcher(self.__slnPath) patcher.removeProjects([self.__projectName]) diff --git a/scripts/commands/TestflightCommand.py b/scripts/commands/TestflightCommand.py index 6f2e4e2..6f1e86f 100644 --- a/scripts/commands/TestflightCommand.py +++ b/scripts/commands/TestflightCommand.py @@ -1,4 +1,4 @@ -from utils.testflight.TestflightPublisher import TestFlightPublisher +from utils.TestflightPublisher import TestFlightPublisher class PublishToTestFlightCommand: diff --git a/scripts/taskRunner.py b/scripts/taskRunner.py index 1da1d76..7c148f5 100644 --- a/scripts/taskRunner.py +++ b/scripts/taskRunner.py @@ -1,4 +1,6 @@ import os +from utils import BuildConfigProvider, FromFileSettingsProvider + scriptFilePath = os.path.abspath(__file__) scriptDir = os.path.dirname(scriptFilePath) @@ -6,9 +8,8 @@ baseDir = os.path.join(scriptDir, os.pardir) os.chdir(baseDir) -from SettingsProvider.FromFileSettingsProvider import FromFileSettingsProvider from StepRunner.StepsRunner import StepsRunner -from utils.configs.BuildConfigProvider import BuildConfigProvider + class TaskRunner: def run(self): diff --git a/scripts/utils/configs/BuildConfigProvider.py b/scripts/utils/BuildConfigProvider.py similarity index 100% rename from scripts/utils/configs/BuildConfigProvider.py rename to scripts/utils/BuildConfigProvider.py diff --git a/scripts/utils/csproj/patcher.py b/scripts/utils/CsprojPatcher.py similarity index 98% rename from scripts/utils/csproj/patcher.py rename to scripts/utils/CsprojPatcher.py index d41d1e5..4f25b9d 100644 --- a/scripts/utils/csproj/patcher.py +++ b/scripts/utils/CsprojPatcher.py @@ -1,7 +1,7 @@ import xml.etree.ElementTree as eT eT.register_namespace('', "http://schemas.microsoft.com/developer/msbuild/2003") -class Patcher: +class CsprojPatcher: def __init__(self, csproj_abs_path): self._csproj_abs_path = csproj_abs_path self._tree = None diff --git a/scripts/SettingsProvider/FromFileSettingsProvider.py b/scripts/utils/FromFileSettingsProvider.py similarity index 100% rename from scripts/SettingsProvider/FromFileSettingsProvider.py rename to scripts/utils/FromFileSettingsProvider.py diff --git a/scripts/utils/infoplist/patcher.py b/scripts/utils/InfoPlistPatcher.py similarity index 98% rename from scripts/utils/infoplist/patcher.py rename to scripts/utils/InfoPlistPatcher.py index 3d349d0..3dc15f6 100644 --- a/scripts/utils/infoplist/patcher.py +++ b/scripts/utils/InfoPlistPatcher.py @@ -1,7 +1,7 @@ import xml.etree.ElementTree as eT -class Patcher(): +class InfoPlistPatcher(): def __init__(self, infoPlistPath): self.__infoPlistPath = infoPlistPath diff --git a/scripts/utils/sln/patcher.py b/scripts/utils/SlnPatcher.py similarity index 98% rename from scripts/utils/sln/patcher.py rename to scripts/utils/SlnPatcher.py index 1d01eaa..9442eb6 100644 --- a/scripts/utils/sln/patcher.py +++ b/scripts/utils/SlnPatcher.py @@ -1,7 +1,7 @@ import re -class Patcher: +class SlnPatcher: def __init__(self, pathToSlnFile): self._sln_path = pathToSlnFile self._sln_file = None diff --git a/scripts/utils/testflight/TestflightPublisher.py b/scripts/utils/TestflightPublisher.py similarity index 100% rename from scripts/utils/testflight/TestflightPublisher.py rename to scripts/utils/TestflightPublisher.py diff --git a/scripts/utils/configs/__init__.py b/scripts/utils/configs/__init__.py deleted file mode 100644 index cc31abc..0000000 --- a/scripts/utils/configs/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__author__ = 'rzaitov' diff --git a/scripts/utils/csproj/__init__.py b/scripts/utils/csproj/__init__.py deleted file mode 100644 index cc31abc..0000000 --- a/scripts/utils/csproj/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__author__ = 'rzaitov' diff --git a/scripts/utils/infoplist/__init__.py b/scripts/utils/infoplist/__init__.py deleted file mode 100644 index cc31abc..0000000 --- a/scripts/utils/infoplist/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__author__ = 'rzaitov' diff --git a/scripts/utils/sln/__init__.py b/scripts/utils/sln/__init__.py deleted file mode 100644 index cc31abc..0000000 --- a/scripts/utils/sln/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__author__ = 'rzaitov' diff --git a/scripts/utils/testflight/__init__.py b/scripts/utils/testflight/__init__.py deleted file mode 100644 index cc31abc..0000000 --- a/scripts/utils/testflight/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__author__ = 'rzaitov' From e18212094df1f780c3f877484a513c335a1e801f Mon Sep 17 00:00:00 2001 From: rzaitov Date: Fri, 1 Nov 2013 18:46:35 +0400 Subject: [PATCH 6/6] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D1=80=D0=B5=D0=B4=D1=83=D0=BF=D1=80=D0=B5=D0=B6?= =?UTF-8?q?=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D1=82=D1=83=D0=B4=D0=B8?= =?UTF-8?q?=D0=B8=20=D1=80=D0=B0=D0=B7=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/CommandBuilders/CleanBuildCommandBuilder.py | 2 +- scripts/CommandBuilders/CopyCommandBuilder.py | 3 +++ scripts/CommandBuilders/CreateBackupCommandBuilder.py | 3 +++ scripts/CommandBuilders/DeleteBackupCommandBuilder.py | 3 +++ scripts/CommandBuilders/MakeDirsCommandBuilder.py | 3 +++ scripts/CommandBuilders/RemoveProjectCommandBuilder.py | 3 +++ scripts/CommandBuilders/RestoreBackupCommandBuilder.py | 3 +++ scripts/CommandBuilders/ShCommandBuilder.py | 3 +++ scripts/Tests/ManualTests/copy_test.py | 6 +----- scripts/Tests/ManualTests/create_backup_test.py | 6 +----- scripts/Tests/ManualTests/csproj_test.py | 5 +---- scripts/Tests/ManualTests/delete_backup_test.py | 6 +----- scripts/Tests/ManualTests/restore_backup_test.py | 6 +----- .../BuildConfigProvider/test_BuildConfigProvider.py | 1 - .../UnitTests/SettingsParser/test_SettingsParser.py | 1 + .../commands/CleanBuildCommands/CleanBuildCommandBase.py | 2 +- scripts/commands/DeleteBackupCommand.py | 3 +++ scripts/commands/PatchInfoPlistCommand.py | 2 +- scripts/commands/RemoveProjectCommand.py | 2 +- scripts/commands/RestoreBackupCommand.py | 3 +++ scripts/commands/TestflightCommand.py | 9 ++++++--- scripts/parser/BackupParser/CreateBackupParser.py | 1 + scripts/parser/BackupParser/DeleteBackupParser.py | 3 +++ scripts/parser/BackupParser/RestoreBackupParser.py | 3 +++ scripts/parser/CleanBuildParser.py | 3 ++- scripts/parser/CopyParser/CopyLineParser.py | 3 ++- scripts/parser/InsideParser/InsideRemoveParser.py | 3 ++- scripts/parser/InsideParser/InsideSetParser.py | 3 ++- scripts/parser/LineParser.py | 3 +++ scripts/parser/MakeDirsParser.py | 3 +++ scripts/parser/SettingsParser/PathParser.py | 3 +++ scripts/parser/SettingsParser/SettingsLineParser.py | 5 ++++- scripts/parser/SettingsParser/SettingsMerger.py | 5 ++++- scripts/parser/ShParser.py | 3 +++ scripts/taskRunner.py | 6 +++++- scripts/utils/BuildConfigProvider.py | 3 +++ scripts/utils/FromFileSettingsProvider.py | 3 +++ 37 files changed, 89 insertions(+), 39 deletions(-) diff --git a/scripts/CommandBuilders/CleanBuildCommandBuilder.py b/scripts/CommandBuilders/CleanBuildCommandBuilder.py index a4740b4..545c61f 100644 --- a/scripts/CommandBuilders/CleanBuildCommandBuilder.py +++ b/scripts/CommandBuilders/CleanBuildCommandBuilder.py @@ -1,6 +1,6 @@ from commands.CleanBuildCommands.BuildCommand import BuildCommand from commands.CleanBuildCommands.CleanCommand import CleanCommand -from parser import CleanBuildParser +from parser.CleanBuildParser import CleanBuildParser class CleanBuildCommandBuilder: diff --git a/scripts/CommandBuilders/CopyCommandBuilder.py b/scripts/CommandBuilders/CopyCommandBuilder.py index 297557f..f4e735b 100644 --- a/scripts/CommandBuilders/CopyCommandBuilder.py +++ b/scripts/CommandBuilders/CopyCommandBuilder.py @@ -3,6 +3,9 @@ from parser.CopyParser.CopyLineParser import CopyLineParser class CopyCommandBuilder: + def __init__(self): + pass + def isCopy(self, line): assert line is not None diff --git a/scripts/CommandBuilders/CreateBackupCommandBuilder.py b/scripts/CommandBuilders/CreateBackupCommandBuilder.py index 79b7cbb..74688b5 100644 --- a/scripts/CommandBuilders/CreateBackupCommandBuilder.py +++ b/scripts/CommandBuilders/CreateBackupCommandBuilder.py @@ -3,6 +3,9 @@ from parser.BackupParser.CreateBackupParser import CreateBackupParser class CreateBackupCommandBuilder: + def __init__(self): + pass + def isCreateBackup(self, line): assert line is not None diff --git a/scripts/CommandBuilders/DeleteBackupCommandBuilder.py b/scripts/CommandBuilders/DeleteBackupCommandBuilder.py index 49b8259..04f869b 100644 --- a/scripts/CommandBuilders/DeleteBackupCommandBuilder.py +++ b/scripts/CommandBuilders/DeleteBackupCommandBuilder.py @@ -3,6 +3,9 @@ from parser.BackupParser.DeleteBackupParser import DeleteBackupParser class DeleteBackupCommandBuilder: + def __init__(self): + pass + def isDeleteBackup(self, line): assert line is not None diff --git a/scripts/CommandBuilders/MakeDirsCommandBuilder.py b/scripts/CommandBuilders/MakeDirsCommandBuilder.py index f523e9f..d589888 100644 --- a/scripts/CommandBuilders/MakeDirsCommandBuilder.py +++ b/scripts/CommandBuilders/MakeDirsCommandBuilder.py @@ -3,6 +3,9 @@ from parser.MakeDirsParser import MakeDirsParser class MakeDirsCommandBuilder: + def __init__(self): + pass + def isMakeDirsCommand(self, line): assert line is not None diff --git a/scripts/CommandBuilders/RemoveProjectCommandBuilder.py b/scripts/CommandBuilders/RemoveProjectCommandBuilder.py index 5451b30..9288aa6 100644 --- a/scripts/CommandBuilders/RemoveProjectCommandBuilder.py +++ b/scripts/CommandBuilders/RemoveProjectCommandBuilder.py @@ -3,6 +3,9 @@ from parser.InsideParser.InsideRemoveParser import InsideRemoveParser class RemoveProjectCommandBuilder: + def __init__(self): + pass + def isRemoveProject(self, line): assert line is not None diff --git a/scripts/CommandBuilders/RestoreBackupCommandBuilder.py b/scripts/CommandBuilders/RestoreBackupCommandBuilder.py index 5dbdb34..59768d9 100644 --- a/scripts/CommandBuilders/RestoreBackupCommandBuilder.py +++ b/scripts/CommandBuilders/RestoreBackupCommandBuilder.py @@ -3,6 +3,9 @@ from parser.BackupParser.RestoreBackupParser import RestoreBackupParser class RestoreBackupCommandBuilder: + def __init__(self): + pass + def isRestoreBackup(self, line): assert line is not None diff --git a/scripts/CommandBuilders/ShCommandBuilder.py b/scripts/CommandBuilders/ShCommandBuilder.py index edcf924..8301a32 100644 --- a/scripts/CommandBuilders/ShCommandBuilder.py +++ b/scripts/CommandBuilders/ShCommandBuilder.py @@ -3,6 +3,9 @@ from parser.ShParser import ShParser class ShCommandBuilder: + def __init__(self): + pass + def isShCommand(self, line): assert line is not None diff --git a/scripts/Tests/ManualTests/copy_test.py b/scripts/Tests/ManualTests/copy_test.py index dd547eb..08680b3 100644 --- a/scripts/Tests/ManualTests/copy_test.py +++ b/scripts/Tests/ManualTests/copy_test.py @@ -1,13 +1,9 @@ from CommandBuilders.CopyCommandBuilder import CopyCommandBuilder -from Tests.ManualTests.path_provider import PathProvider line1 = "copy 'BuildSample/BuildSample.sln' to 'BuildSample/BuildSample.txt'" line2 = "copy 'BuildSample/BuildSample/Profiles/8F606DAE-F9C9-4A19-8EFF-34B990D76C28.mobileprovision' to '~/Library/MobileDevice/Provisioning Profiles/BuildScript.mobileprovision'" -baseDir = '../' -path_provider = PathProvider(baseDir) - -copyCmdBuilder = CopyCommandBuilder(path_provider) +copyCmdBuilder = CopyCommandBuilder() #copyCmdToRel = copyCmdBuilder.getCommandFor(line1) #copyCmdToRel.execute() diff --git a/scripts/Tests/ManualTests/create_backup_test.py b/scripts/Tests/ManualTests/create_backup_test.py index 4761f7c..48bc235 100644 --- a/scripts/Tests/ManualTests/create_backup_test.py +++ b/scripts/Tests/ManualTests/create_backup_test.py @@ -1,12 +1,8 @@ from CommandBuilders.CreateBackupCommandBuilder import CreateBackupCommandBuilder -from Tests.ManualTests.path_provider import PathProvider line = "create backup for 'BuildSample'" -baseDir = '../' -path_provider = PathProvider(baseDir) - -cmdBuilder = CreateBackupCommandBuilder(path_provider) +cmdBuilder = CreateBackupCommandBuilder() command = cmdBuilder.getCommandFor(line) command.execute() \ No newline at end of file diff --git a/scripts/Tests/ManualTests/csproj_test.py b/scripts/Tests/ManualTests/csproj_test.py index 30bdfbe..c307d0a 100644 --- a/scripts/Tests/ManualTests/csproj_test.py +++ b/scripts/Tests/ManualTests/csproj_test.py @@ -1,14 +1,11 @@ from CommandBuilders.PatchCsprojCommandBuilder import PatchCsprojCommandBuilder -from Tests.ManualTests.path_provider import PathProvider from commands.ValueProvider import ValueProvider config = {'sln_config' : 'Release|iPhone'} line = "inside 'BuildSample/BuildSample/CoolApp.csproj' set OutputPath to 'Output'" -base_dir = '../' -path_provider = PathProvider(base_dir) value_provider = ValueProvider(config) -builder = PatchCsprojCommandBuilder(config, path_provider, value_provider) +builder = PatchCsprojCommandBuilder(config, value_provider) command = builder.getCommandFor(line) command.execute() \ No newline at end of file diff --git a/scripts/Tests/ManualTests/delete_backup_test.py b/scripts/Tests/ManualTests/delete_backup_test.py index e922c55..4c312c4 100644 --- a/scripts/Tests/ManualTests/delete_backup_test.py +++ b/scripts/Tests/ManualTests/delete_backup_test.py @@ -1,12 +1,8 @@ from CommandBuilders.DeleteBackupCommandBuilder import DeleteBackupCommandBuilder -from Tests.ManualTests.path_provider import PathProvider line = "delete backup" -baseDir = '../' -path_provider = PathProvider(baseDir) - -cmdBuilder = DeleteBackupCommandBuilder(path_provider) +cmdBuilder = DeleteBackupCommandBuilder() command = cmdBuilder.getCommandFor(line) command.execute() \ No newline at end of file diff --git a/scripts/Tests/ManualTests/restore_backup_test.py b/scripts/Tests/ManualTests/restore_backup_test.py index 7ad5520..a61e390 100644 --- a/scripts/Tests/ManualTests/restore_backup_test.py +++ b/scripts/Tests/ManualTests/restore_backup_test.py @@ -1,12 +1,8 @@ from CommandBuilders.RestoreBackupCommandBuilder import RestoreBackupCommandBuilder -from Tests.ManualTests.path_provider import PathProvider line = "restore from backup" -baseDir = '../' -path_provider = PathProvider(baseDir) - -builder = RestoreBackupCommandBuilder(path_provider) +builder = RestoreBackupCommandBuilder() command = builder.getCommandFor(line) command.execute() diff --git a/scripts/Tests/UnitTests/BuildConfigProvider/test_BuildConfigProvider.py b/scripts/Tests/UnitTests/BuildConfigProvider/test_BuildConfigProvider.py index 5c0556e..66fff02 100644 --- a/scripts/Tests/UnitTests/BuildConfigProvider/test_BuildConfigProvider.py +++ b/scripts/Tests/UnitTests/BuildConfigProvider/test_BuildConfigProvider.py @@ -1,5 +1,4 @@ import unittest -from utils import BuildConfigProvider from utils.BuildConfigProvider import BuildConfigProvider diff --git a/scripts/Tests/UnitTests/SettingsParser/test_SettingsParser.py b/scripts/Tests/UnitTests/SettingsParser/test_SettingsParser.py index b391cc3..23af627 100644 --- a/scripts/Tests/UnitTests/SettingsParser/test_SettingsParser.py +++ b/scripts/Tests/UnitTests/SettingsParser/test_SettingsParser.py @@ -40,6 +40,7 @@ class TestSettingsParser(unittest.TestCase): def test_emptyLinesAndComments(self): class PartialSettingsParser(SettingsParser): def __init__(self): + SettingsParser.__init__(self) self.processLineCall = 0 def processLine(self, line): diff --git a/scripts/commands/CleanBuildCommands/CleanBuildCommandBase.py b/scripts/commands/CleanBuildCommands/CleanBuildCommandBase.py index 60fc025..8bed240 100644 --- a/scripts/commands/CleanBuildCommands/CleanBuildCommandBase.py +++ b/scripts/commands/CleanBuildCommands/CleanBuildCommandBase.py @@ -15,4 +15,4 @@ class CleanBuildCommandBase: def execute(self): cmdText = self.__commandPattern.format(self.__pathToBuildUtil, self.__slnConfig, self.__slnPath) - returnCode = call(cmdText, shell=True) + call(cmdText, shell=True) diff --git a/scripts/commands/DeleteBackupCommand.py b/scripts/commands/DeleteBackupCommand.py index 5246d1a..ac5dddc 100644 --- a/scripts/commands/DeleteBackupCommand.py +++ b/scripts/commands/DeleteBackupCommand.py @@ -2,6 +2,9 @@ import os import shutil class DeleteBackupCommand: + def __init__(self): + pass + def execute(self): dirs = [name for name in os.listdir('.') if os.path.isdir(os.path.join('.', name)) & name.startswith('backup.')] for d in dirs: diff --git a/scripts/commands/PatchInfoPlistCommand.py b/scripts/commands/PatchInfoPlistCommand.py index f75a4e2..c16987b 100644 --- a/scripts/commands/PatchInfoPlistCommand.py +++ b/scripts/commands/PatchInfoPlistCommand.py @@ -1,4 +1,4 @@ -from utils import InfoPlistPatcher +from utils.InfoPlistPatcher import InfoPlistPatcher class PatchInfoPlistCommand(): diff --git a/scripts/commands/RemoveProjectCommand.py b/scripts/commands/RemoveProjectCommand.py index 7177673..858d205 100644 --- a/scripts/commands/RemoveProjectCommand.py +++ b/scripts/commands/RemoveProjectCommand.py @@ -1,4 +1,4 @@ -from utils import SlnPatcher +from utils.SlnPatcher import SlnPatcher class RemoveProjectCommand: diff --git a/scripts/commands/RestoreBackupCommand.py b/scripts/commands/RestoreBackupCommand.py index f92362a..dfb9247 100644 --- a/scripts/commands/RestoreBackupCommand.py +++ b/scripts/commands/RestoreBackupCommand.py @@ -3,6 +3,9 @@ import shutil class RestoreBackupCommand: + def __init__(self): + pass + def execute(self): dirPairs = [(name, "backup.{0}".format(name)) for name in os.listdir('.') if os.path.isdir(name) and not name.startswith('backup.')] diff --git a/scripts/commands/TestflightCommand.py b/scripts/commands/TestflightCommand.py index 6f1e86f..1780ab4 100644 --- a/scripts/commands/TestflightCommand.py +++ b/scripts/commands/TestflightCommand.py @@ -2,8 +2,11 @@ from utils.TestflightPublisher import TestFlightPublisher class PublishToTestFlightCommand: - def __init__(self, api_token, team_token, notes): - self._publisher = TestFlightPublisher(api_token, team_token, notes) + def __init__(self, pathToFile, api_token, team_token, notes): + assert pathToFile is not None + + self.__pathToFile = pathToFile + self.__publisher = TestFlightPublisher(api_token, team_token, notes) def execute(self): - self._publisher.Publish() \ No newline at end of file + self.__publisher.Publish(self.__pathToFile) diff --git a/scripts/parser/BackupParser/CreateBackupParser.py b/scripts/parser/BackupParser/CreateBackupParser.py index e45cc5e..c1c10ba 100644 --- a/scripts/parser/BackupParser/CreateBackupParser.py +++ b/scripts/parser/BackupParser/CreateBackupParser.py @@ -6,6 +6,7 @@ from parser.LineParser import LineParser class CreateBackupParser(LineParser): def __init__(self): + LineParser.__init__(self) self.__createBackupArguments = CreateBackupArguments() def parseLine(self, line): diff --git a/scripts/parser/BackupParser/DeleteBackupParser.py b/scripts/parser/BackupParser/DeleteBackupParser.py index 830a9ef..381a694 100644 --- a/scripts/parser/BackupParser/DeleteBackupParser.py +++ b/scripts/parser/BackupParser/DeleteBackupParser.py @@ -4,6 +4,9 @@ from parser.LineParser import LineParser class DeleteBackupParser(LineParser): + def __init__(self): + LineParser.__init__(self) + def parseLine(self, line): assert line is not None diff --git a/scripts/parser/BackupParser/RestoreBackupParser.py b/scripts/parser/BackupParser/RestoreBackupParser.py index fe0b3ef..6dc834a 100644 --- a/scripts/parser/BackupParser/RestoreBackupParser.py +++ b/scripts/parser/BackupParser/RestoreBackupParser.py @@ -4,6 +4,9 @@ from parser.LineParser import LineParser class RestoreBackupParser(LineParser): + def __init__(self): + LineParser.__init__(self) + def parseLine(self, line): assert line is not None diff --git a/scripts/parser/CleanBuildParser.py b/scripts/parser/CleanBuildParser.py index d0461a0..3499d92 100644 --- a/scripts/parser/CleanBuildParser.py +++ b/scripts/parser/CleanBuildParser.py @@ -5,6 +5,7 @@ from parser.LineParser import LineParser class CleanBuildParser(LineParser): def __init__(self, commandToken): + LineParser.__init__(self) assert commandToken is not None self.__commandToken = commandToken @@ -24,7 +25,7 @@ class CleanBuildParser(LineParser): path = match.group('path') slnConfig = match.group('config') - return (path, slnConfig) + return path, slnConfig def isValidLine(self, line): assert line is not None diff --git a/scripts/parser/CopyParser/CopyLineParser.py b/scripts/parser/CopyParser/CopyLineParser.py index 729f4f2..7aa179a 100644 --- a/scripts/parser/CopyParser/CopyLineParser.py +++ b/scripts/parser/CopyParser/CopyLineParser.py @@ -6,6 +6,7 @@ from parser.LineParser import LineParser class CopyLineParser(LineParser): def __init__(self): + LineParser.__init__(self) self.__copyArguments = CopyArguments() def parseLine(self, line): @@ -29,5 +30,5 @@ class CopyLineParser(LineParser): def isValidLine(self, line): assert line is not None - isValid = line.startswith("copy"); + isValid = line.startswith("copy") return isValid \ No newline at end of file diff --git a/scripts/parser/InsideParser/InsideRemoveParser.py b/scripts/parser/InsideParser/InsideRemoveParser.py index 77b7534..97b0a73 100644 --- a/scripts/parser/InsideParser/InsideRemoveParser.py +++ b/scripts/parser/InsideParser/InsideRemoveParser.py @@ -5,6 +5,7 @@ from parser.LineParser import LineParser class InsideRemoveParser(LineParser): def __init__(self, fileExt): + LineParser.__init__(self) assert fileExt is not None self.__extension = fileExt @@ -24,7 +25,7 @@ class InsideRemoveParser(LineParser): filePath = match.group('file') projectName = match.group('project') - return (filePath, projectName) + return filePath, projectName def isValidLine(self, line): regexpSrc = r"inside\s+'[./ a-zA-Z]+\.{0}'\s+remove".format(self.__extension) diff --git a/scripts/parser/InsideParser/InsideSetParser.py b/scripts/parser/InsideParser/InsideSetParser.py index a5ac3ff..c184137 100644 --- a/scripts/parser/InsideParser/InsideSetParser.py +++ b/scripts/parser/InsideParser/InsideSetParser.py @@ -5,6 +5,7 @@ from parser.LineParser import LineParser class InsideSetParser(LineParser): def __init__(self, value_provider, fileExt): + LineParser.__init__(self) assert value_provider is not None self.__value_provider = value_provider @@ -27,7 +28,7 @@ class InsideSetParser(LineParser): key = match.group('key') value = match.group('value') - return (filePath, key, value) + return filePath, key, value def isValidLine(self, line): regexpSrc = r"inside\s+'[./ a-zA-Z]+\.{0}'\s+set".format(self.__extension) diff --git a/scripts/parser/LineParser.py b/scripts/parser/LineParser.py index ef5e2cb..d68196a 100644 --- a/scripts/parser/LineParser.py +++ b/scripts/parser/LineParser.py @@ -1,4 +1,7 @@ class LineParser: + def __init__(self): + pass + def parseLine(self, line): assert line is not None pass diff --git a/scripts/parser/MakeDirsParser.py b/scripts/parser/MakeDirsParser.py index cd68c4d..1886c31 100644 --- a/scripts/parser/MakeDirsParser.py +++ b/scripts/parser/MakeDirsParser.py @@ -4,6 +4,9 @@ from parser.LineParser import LineParser class MakeDirsParser(LineParser): + def __init__(self): + LineParser.__init__(self) + def parseLine(self, line): pathRegexp = r"'(?P[^']+)'$" diff --git a/scripts/parser/SettingsParser/PathParser.py b/scripts/parser/SettingsParser/PathParser.py index 6ac3a6b..f0852fa 100644 --- a/scripts/parser/SettingsParser/PathParser.py +++ b/scripts/parser/SettingsParser/PathParser.py @@ -1,4 +1,7 @@ class PathParser: + def __init__(self): + pass + def parse(self, line): assert line is not None diff --git a/scripts/parser/SettingsParser/SettingsLineParser.py b/scripts/parser/SettingsParser/SettingsLineParser.py index aaaa872..bef23b6 100644 --- a/scripts/parser/SettingsParser/SettingsLineParser.py +++ b/scripts/parser/SettingsParser/SettingsLineParser.py @@ -5,6 +5,9 @@ from parser.SettingsParser.PathParser import PathParser class SettingsLineParser(LineParser): + def __init__(self): + LineParser.__init__(self) + def parseLine(self, line): assert line is not None @@ -37,4 +40,4 @@ class SettingsLineParser(LineParser): propPath = match.group('prop_path') value = match.group('value') - return (propPath, value) \ No newline at end of file + return propPath, value \ No newline at end of file diff --git a/scripts/parser/SettingsParser/SettingsMerger.py b/scripts/parser/SettingsParser/SettingsMerger.py index c3cd2f8..755e6ff 100644 --- a/scripts/parser/SettingsParser/SettingsMerger.py +++ b/scripts/parser/SettingsParser/SettingsMerger.py @@ -1,4 +1,7 @@ class SettingsMerger: + def __init__(self): + pass + def merge(self, globalSettings, settingDescription): value = settingDescription['value'] segments = settingDescription['segments'] @@ -25,7 +28,7 @@ class SettingsMerger: def overrideGuard(self, dictionary, key, path): if key in dictionary: - pathStr = '.'.joun(path) + pathStr = '.'.join(path) msg = 'settings with name {0} by path {1} already exists with value {3}'.format(key, dictionary[key], pathStr) raise Exception(msg) diff --git a/scripts/parser/ShParser.py b/scripts/parser/ShParser.py index 0067883..4ef3050 100644 --- a/scripts/parser/ShParser.py +++ b/scripts/parser/ShParser.py @@ -4,6 +4,9 @@ from parser.LineParser import LineParser class ShParser(LineParser): + def __init__(self): + LineParser.__init__(self) + def parseLine(self, line): assert line diff --git a/scripts/taskRunner.py b/scripts/taskRunner.py index 7c148f5..f9f73a3 100644 --- a/scripts/taskRunner.py +++ b/scripts/taskRunner.py @@ -1,5 +1,6 @@ import os -from utils import BuildConfigProvider, FromFileSettingsProvider +from utils.BuildConfigProvider import BuildConfigProvider +from utils.FromFileSettingsProvider import FromFileSettingsProvider scriptFilePath = os.path.abspath(__file__) @@ -12,6 +13,9 @@ from StepRunner.StepsRunner import StepsRunner class TaskRunner: + def __init__(self): + pass + def run(self): settingsProvider = FromFileSettingsProvider() settings = settingsProvider.fetchSettings() diff --git a/scripts/utils/BuildConfigProvider.py b/scripts/utils/BuildConfigProvider.py index bdc1af7..e65edd0 100644 --- a/scripts/utils/BuildConfigProvider.py +++ b/scripts/utils/BuildConfigProvider.py @@ -1,4 +1,7 @@ class BuildConfigProvider: + def __init__(self): + pass + def getConfigs(self, rootConfig): leafs = [] self.traverseDict(None, rootConfig, leafs) diff --git a/scripts/utils/FromFileSettingsProvider.py b/scripts/utils/FromFileSettingsProvider.py index 65ad292..7164d9f 100644 --- a/scripts/utils/FromFileSettingsProvider.py +++ b/scripts/utils/FromFileSettingsProvider.py @@ -2,6 +2,9 @@ from parser.SettingsParser.SettingsParser import SettingsParser class FromFileSettingsProvider: + def __init__(self): + pass + def fetchSettings(self): settingsFile = open('scripts/settings.txt') content = settingsFile.read()