Merge branch 'BS-30'
This commit is contained in:
commit
5293ab0aab
|
|
@ -0,0 +1,7 @@
|
|||
class ContentProviderBase:
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def fetchContent(self, key):
|
||||
pass
|
||||
|
||||
|
|
@ -1,6 +1,9 @@
|
|||
class FileContentProvider:
|
||||
from Core.ContentProviderBase import ContentProviderBase
|
||||
|
||||
|
||||
class FileContentProvider(ContentProviderBase):
|
||||
def __init__(self):
|
||||
pass
|
||||
ContentProviderBase.__init__(self)
|
||||
|
||||
def fetchContent(self, path):
|
||||
f = open(path)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
class SettingsProviderBase:
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def fetchSettings(self):
|
||||
pass
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
from Core.SettingsProviderBase import SettingsProviderBase
|
||||
from parsers.SettingsParser.SettingsParser import SettingsParser
|
||||
|
||||
|
||||
class SettingsProviderStub(SettingsProviderBase):
|
||||
def __init__(self, settingsText):
|
||||
assert settingsText is not None
|
||||
|
||||
SettingsProviderBase.__init__(self)
|
||||
self.settingsText = settingsText
|
||||
|
||||
def fetchSettings(self):
|
||||
parser = SettingsParser()
|
||||
parser.parse(self.settingsText)
|
||||
|
||||
return parser.settings
|
||||
|
|
@ -0,0 +1 @@
|
|||
__author__ = 'rzaitov'
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
from Core.ContentProviderBase import ContentProviderBase
|
||||
from Tests.Common.SettingsProviderStub import SettingsProviderStub
|
||||
from taskRunner import TaskRunner
|
||||
|
||||
settingsText = """
|
||||
build_tool = '/Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool'
|
||||
version = '0.0.0'
|
||||
configs = 'config1, config2'
|
||||
steps = 'main_steps'
|
||||
|
||||
config1.sub_steps = 'sub_steps1'
|
||||
config2.sub_steps = 'sub_steps2'
|
||||
"""
|
||||
|
||||
stepsFileContent = """
|
||||
<include '{@sub_steps}'>
|
||||
"""
|
||||
|
||||
subSteps1Content = """
|
||||
sh echo One
|
||||
"""
|
||||
|
||||
subSteps2Content = """
|
||||
sh echo Two
|
||||
"""
|
||||
|
||||
class ContentProviderMock(ContentProviderBase):
|
||||
def __init__(self):
|
||||
ContentProviderBase.__init__(self)
|
||||
|
||||
def fetchContent(self, key):
|
||||
if key == 'sub_steps1':
|
||||
return subSteps1Content
|
||||
elif key == 'sub_steps2':
|
||||
return subSteps2Content
|
||||
elif key == 'main_steps':
|
||||
return stepsFileContent
|
||||
else:
|
||||
raise Exception(key)
|
||||
|
||||
|
||||
settingsProvider = SettingsProviderStub(settingsText)
|
||||
contentProvider = ContentProviderMock()
|
||||
|
||||
taskRunner = TaskRunner(settingsProvider, contentProvider)
|
||||
|
||||
taskRunner.run()
|
||||
|
|
@ -15,6 +15,20 @@ class TestMacro(unittest.TestCase):
|
|||
self.assertTrue('@my_macro' in symbols)
|
||||
self.assertTrue('@macro_with_numbers123' in symbols)
|
||||
|
||||
def test_parseMacroInsideInclude(self):
|
||||
line = "<include '{@path_to_file}'>"
|
||||
symbols = self.macroParser.getSymbols(line)
|
||||
|
||||
self.assertTrue('@path_to_file' in symbols)
|
||||
|
||||
def test_parseMacroInsideIncludeWithDirSeparator(self):
|
||||
line = "<include '{@parent_folder}/{@folder}/{@file_name}'>"
|
||||
symbols = self.macroParser.getSymbols(line)
|
||||
|
||||
self.assertTrue('@parent_folder' in symbols)
|
||||
self.assertTrue('@folder' in symbols)
|
||||
self.assertTrue('@file_name' in symbols)
|
||||
|
||||
def test_getName(self):
|
||||
line = '{@macro_name}'
|
||||
name = self.macroParser.getMacroName(line)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ baseDir = os.path.join(scriptDir, os.pardir, os.pardir)
|
|||
|
||||
os.chdir(baseDir)
|
||||
|
||||
import Tests.ManualTests.csproj_test
|
||||
#import Tests.ManualTests.csproj_test
|
||||
#import ManualTests.info_plist_test
|
||||
#import ManualTests.copy_test
|
||||
#import ManualTests.create_backup_test
|
||||
|
|
@ -20,3 +20,5 @@ import Tests.ManualTests.csproj_test
|
|||
#import ManualTests.clean_test
|
||||
#import Tests.ManualTests.testflight_test
|
||||
#import Tests.ManualTests.install_profile
|
||||
|
||||
import Tests.ManualTests.macros_include_test
|
||||
|
|
@ -25,10 +25,12 @@ from Core.StepsRunner import StepsRunner
|
|||
|
||||
|
||||
class TaskRunner:
|
||||
def __init__(self, settingsProvider):
|
||||
def __init__(self, settingsProvider, fileContentProvider):
|
||||
assert settingsProvider is not None
|
||||
assert fileContentProvider is not None
|
||||
|
||||
self.settingsProvider = settingsProvider
|
||||
self.fileContentProvider = fileContentProvider
|
||||
self.configsProvider = BuildConfigProvider()
|
||||
|
||||
lineStripper = Stripper()
|
||||
|
|
@ -39,12 +41,14 @@ class TaskRunner:
|
|||
macroResolver = MacroResolver(macroProcessor, self.valueProvider)
|
||||
|
||||
includeProcessor = IncludeProcessor()
|
||||
self.fileContentProvider = FileContentProvider()
|
||||
textInclude = TextInclude(includeProcessor, self.fileContentProvider)
|
||||
|
||||
# последовательность важна!
|
||||
# Сначала резолвим макросы, потом делаем включение файлов
|
||||
# Это позволяет использовать макросы в include выражениях
|
||||
self.textPreprocessor = TextConveyorPreprocessor()
|
||||
self.textPreprocessor.addProcessor(textInclude)
|
||||
self.textPreprocessor.addProcessor(macroResolver)
|
||||
self.textPreprocessor.addProcessor(textInclude)
|
||||
|
||||
self.linePreprocessor = TextConveyorPreprocessor()
|
||||
self.linePreprocessor.addProcessor(commentRemover)
|
||||
|
|
@ -72,12 +76,16 @@ class TaskRunner:
|
|||
|
||||
return content
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
overrideArgs = parser.parse_known_args()[1]
|
||||
if __name__ == "__main__":
|
||||
|
||||
# TODO: перенести в корень комапановки
|
||||
fromFileSettingsProvider = FromFileSettingsProvider()
|
||||
overrideWithCmdSetProvider = CmdArgsOverriderSettingsProvider(fromFileSettingsProvider, overrideArgs)
|
||||
parser = argparse.ArgumentParser()
|
||||
overrideArgs = parser.parse_known_args()[1]
|
||||
|
||||
runner = TaskRunner(overrideWithCmdSetProvider)
|
||||
runner.run()
|
||||
# TODO: перенести в корень комапановки
|
||||
fromFileSettingsProvider = FromFileSettingsProvider()
|
||||
overrideWithCmdSetProvider = CmdArgsOverriderSettingsProvider(fromFileSettingsProvider, overrideArgs)
|
||||
|
||||
fContentProvider = FileContentProvider()
|
||||
|
||||
runner = TaskRunner(overrideWithCmdSetProvider, fContentProvider)
|
||||
runner.run()
|
||||
|
|
@ -1,8 +1,10 @@
|
|||
from Core.SettingsProviderBase import SettingsProviderBase
|
||||
from parsers.SettingsParser.SettingsParser import SettingsParser
|
||||
|
||||
|
||||
class CmdArgsOverriderSettingsProvider:
|
||||
class CmdArgsOverriderSettingsProvider(SettingsProviderBase):
|
||||
def __init__(self, settingsProvider, settingLines):
|
||||
SettingsProviderBase.__init__(self)
|
||||
assert settingsProvider is not None
|
||||
|
||||
self.inner = settingsProvider
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
from Core.SettingsProviderBase import SettingsProviderBase
|
||||
from parsers.SettingsParser.SettingsParser import SettingsParser
|
||||
|
||||
|
||||
class FromFileSettingsProvider:
|
||||
class FromFileSettingsProvider(SettingsProviderBase):
|
||||
def __init__(self):
|
||||
pass
|
||||
SettingsProviderBase.__init__(self)
|
||||
|
||||
def fetchSettings(self):
|
||||
settingsFile = open('scripts/settings.txt')
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ version = '0.0.0'
|
|||
configs = 'appstore, staging'
|
||||
|
||||
# ios platform settings
|
||||
ios.sln_config = 'Release|iPhone'
|
||||
ios.steps = 'scripts/IosSteps.txt'
|
||||
ios.tf_api_token = '0e6925075d4fc10fed0e7bbf43fa6894_NjQ0OTI2MjAxMi0wOS0yNSAxMTo0MDozNi40OTY5MjU'
|
||||
ios.tf_team_token = 'c5c3cf7a6dae2bea4382dfbd181a2075_Mjc4ODkwMjAxMy0wOS0yOSAxNDowOTo1OC40Mzg5MTY'
|
||||
|
|
@ -13,7 +14,6 @@ ios.tf_team_token = 'c5c3cf7a6dae2bea4382dfbd181a2075_Mjc4ODkwMjAxMy0wOS0yOSAxND
|
|||
|
||||
# config settings
|
||||
ios.appstore.app_name = 'CoolApp'
|
||||
ios.appstore.sln_config = 'Release|iPhone'
|
||||
ios.appstore.author = 'Rustam'
|
||||
|
||||
ios.staging.app_name = 'CoolApp staging'
|
||||
|
|
|
|||
Loading…
Reference in New Issue