From 635000b7fc8d5063ae200243d41aed0841ad2521 Mon Sep 17 00:00:00 2001 From: rzaitov Date: Mon, 11 Nov 2013 16:24:14 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=80=D0=B0=D0=B7=D1=80=D0=B5=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BC=D0=B0=D0=BA=D1=80=D0=BE=D1=81=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=B2=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA?= =?UTF-8?q?=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Core/BuildConfigProviderBase.py | 6 +++ .../Tests/ManualTests/resolve_settings.py | 44 +++++++++++++++++++ scripts/TouchinBuild/run_manual_tests.py | 3 +- scripts/TouchinBuild/taskRunner.py | 15 ++++--- .../BuildConfigProvider.py | 7 ++- .../ResolvedBuildConfigProvider.py | 22 ++++++++++ .../utils/BuildConfigProvider/__init__.py | 1 + 7 files changed, 90 insertions(+), 8 deletions(-) create mode 100644 scripts/TouchinBuild/Core/BuildConfigProviderBase.py create mode 100644 scripts/TouchinBuild/Tests/ManualTests/resolve_settings.py rename scripts/TouchinBuild/utils/{ => BuildConfigProvider}/BuildConfigProvider.py (89%) create mode 100644 scripts/TouchinBuild/utils/BuildConfigProvider/ResolvedBuildConfigProvider.py create mode 100644 scripts/TouchinBuild/utils/BuildConfigProvider/__init__.py diff --git a/scripts/TouchinBuild/Core/BuildConfigProviderBase.py b/scripts/TouchinBuild/Core/BuildConfigProviderBase.py new file mode 100644 index 0000000..b874565 --- /dev/null +++ b/scripts/TouchinBuild/Core/BuildConfigProviderBase.py @@ -0,0 +1,6 @@ +class BuildConfigProviderBase: + def __init__(self): + pass + + def getConfigs(self, rootConfig): + pass \ No newline at end of file diff --git a/scripts/TouchinBuild/Tests/ManualTests/resolve_settings.py b/scripts/TouchinBuild/Tests/ManualTests/resolve_settings.py new file mode 100644 index 0000000..9bf097a --- /dev/null +++ b/scripts/TouchinBuild/Tests/ManualTests/resolve_settings.py @@ -0,0 +1,44 @@ +from Core.ContentProviderBase import ContentProviderBase +from Tests.Common.SettingsProviderStub import SettingsProviderStub +from taskRunner import TaskRunner +from utils.BuildConfigProvider.BuildConfigProvider import BuildConfigProvider +from utils.BuildConfigProvider.ResolvedBuildConfigProvider import ResolvedBuildConfigProvider + +settingsText = """ +build_tool = '/Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool' +major_minor = '1.2' +build = '345' + +configs = 'config1, config2' +steps = 'main_steps' + +config1.version = '{@major_minor}' +config2.version = '{@major_minor}.{@build}' +""" + +stepsFileContent = """ +sh echo {@version} +""" + +class ContentProviderMock(ContentProviderBase): + def __init__(self): + ContentProviderBase.__init__(self) + + def fetchContent(self, key): + if key == 'main_steps': + return stepsFileContent + else: + raise Exception(key) + + +settingsProvider = SettingsProviderStub(settingsText) + +buildConfigProvider = BuildConfigProvider() +resolvedBuildConfigProvider = ResolvedBuildConfigProvider(buildConfigProvider) + +contentProvider = ContentProviderMock() + +taskRunner = TaskRunner(settingsProvider, contentProvider, resolvedBuildConfigProvider) + +taskRunner.run() + diff --git a/scripts/TouchinBuild/run_manual_tests.py b/scripts/TouchinBuild/run_manual_tests.py index e3aaf88..bee8872 100644 --- a/scripts/TouchinBuild/run_manual_tests.py +++ b/scripts/TouchinBuild/run_manual_tests.py @@ -20,5 +20,6 @@ os.chdir(baseDir) #import ManualTests.clean_test #import Tests.ManualTests.testflight_test #import Tests.ManualTests.install_profile +#import Tests.ManualTests.macros_include_test -import Tests.ManualTests.macros_include_test \ No newline at end of file +import Tests.ManualTests.resolve_settings \ No newline at end of file diff --git a/scripts/TouchinBuild/taskRunner.py b/scripts/TouchinBuild/taskRunner.py index 8650cfe..8fdbf27 100755 --- a/scripts/TouchinBuild/taskRunner.py +++ b/scripts/TouchinBuild/taskRunner.py @@ -8,7 +8,8 @@ from Core.LineConveyor.MacroResolver import MacroResolver from Core.LineConveyor.Stripper import Stripper from Core.LineConveyor.TextInclude import TextInclude from commands.ValueProvider import ValueProvider -from utils.BuildConfigProvider import BuildConfigProvider +from utils.BuildConfigProvider.BuildConfigProvider import BuildConfigProvider +from utils.BuildConfigProvider.ResolvedBuildConfigProvider import ResolvedBuildConfigProvider from utils.IncludeProcessor import IncludeProcessor from utils.MacroProcessor import MacroProcessor from utils.SettingsProvider.CmdArgsOverriderSettingsProvider import CmdArgsOverriderSettingsProvider @@ -23,15 +24,15 @@ from Core.StepsRunner import StepsRunner #os.chdir(baseDir) - class TaskRunner: - def __init__(self, settingsProvider, fileContentProvider): + def __init__(self, settingsProvider, fileContentProvider, buildConfigProvider): assert settingsProvider is not None assert fileContentProvider is not None + assert buildConfigProvider is not None self.settingsProvider = settingsProvider self.fileContentProvider = fileContentProvider - self.configsProvider = BuildConfigProvider() + self.configsProvider = buildConfigProvider lineStripper = Stripper() commentRemover = CommentRemover() @@ -84,8 +85,12 @@ if __name__ == "__main__": # TODO: перенести в корень комапановки fromFileSettingsProvider = FromFileSettingsProvider() overrideWithCmdSetProvider = CmdArgsOverriderSettingsProvider(fromFileSettingsProvider, overrideArgs) + #resolvedSettingsProvider = ResolvedSettingsProvider(CmdArgsOverriderSettingsProvider) fContentProvider = FileContentProvider() - runner = TaskRunner(overrideWithCmdSetProvider, fContentProvider) + buildConfigProvider = BuildConfigProvider() + resolvedBuildConfigProvider = ResolvedBuildConfigProvider(buildConfigProvider) + + runner = TaskRunner(overrideWithCmdSetProvider, fContentProvider, resolvedBuildConfigProvider) runner.run() \ No newline at end of file diff --git a/scripts/TouchinBuild/utils/BuildConfigProvider.py b/scripts/TouchinBuild/utils/BuildConfigProvider/BuildConfigProvider.py similarity index 89% rename from scripts/TouchinBuild/utils/BuildConfigProvider.py rename to scripts/TouchinBuild/utils/BuildConfigProvider/BuildConfigProvider.py index 4a37303..fb5ecd0 100644 --- a/scripts/TouchinBuild/utils/BuildConfigProvider.py +++ b/scripts/TouchinBuild/utils/BuildConfigProvider/BuildConfigProvider.py @@ -1,6 +1,9 @@ -class BuildConfigProvider: +from Core.BuildConfigProviderBase import BuildConfigProviderBase + + +class BuildConfigProvider(BuildConfigProviderBase): def __init__(self): - pass + BuildConfigProviderBase.__init__(self) def getConfigs(self, rootConfig): buildReadyConfigNames = self.fetchBuildReadyConfigNames(rootConfig) diff --git a/scripts/TouchinBuild/utils/BuildConfigProvider/ResolvedBuildConfigProvider.py b/scripts/TouchinBuild/utils/BuildConfigProvider/ResolvedBuildConfigProvider.py new file mode 100644 index 0000000..3202ccb --- /dev/null +++ b/scripts/TouchinBuild/utils/BuildConfigProvider/ResolvedBuildConfigProvider.py @@ -0,0 +1,22 @@ +from Core.BuildConfigProviderBase import BuildConfigProviderBase +from Core.DependencyResolver.SettingsResolver import SettingsResolver + + +class ResolvedBuildConfigProvider(BuildConfigProviderBase): + def __init__(self, buildConfigProvider): + BuildConfigProviderBase.__init__(self) + assert buildConfigProvider is not None + + self.inner = buildConfigProvider + + def getConfigs(self, rootConfig): + unresolvedBuildConfigs = self.inner.getConfigs(rootConfig) + resolvedBuildConfigs = [] + + for bc in unresolvedBuildConfigs: + resolver = SettingsResolver(bc) + resolvedBuildConfig = resolver.resolveSettings() + + resolvedBuildConfigs.append(resolvedBuildConfig) + + return resolvedBuildConfigs \ No newline at end of file diff --git a/scripts/TouchinBuild/utils/BuildConfigProvider/__init__.py b/scripts/TouchinBuild/utils/BuildConfigProvider/__init__.py new file mode 100644 index 0000000..cc31abc --- /dev/null +++ b/scripts/TouchinBuild/utils/BuildConfigProvider/__init__.py @@ -0,0 +1 @@ +__author__ = 'rzaitov'