def setUp(self): config = { 'key1': 'hello world', 'some_name': 'another name', 'version': '1.2.3' } macroProcessor = MacroProcessor() valueProvider = ValueProvider() valueProvider.setConfig(config) self.macroResolver = MacroResolver(macroProcessor, valueProvider)
class TaskRunner: def __init__(self, settingsProvider, fileContentProvider, buildConfigProvider, linePreprocessor, defaults): assert settingsProvider is not None assert fileContentProvider is not None assert buildConfigProvider is not None assert linePreprocessor is not None assert defaults is not None self.settingsProvider = settingsProvider self.fileContentProvider = fileContentProvider self.configsProvider = buildConfigProvider self.linePreprocessor = linePreprocessor self.defaults = defaults macroProcessor = MacroProcessor() self.valueProvider = ValueProvider() macroResolver = MacroResolver(macroProcessor, self.valueProvider) includeProcessor = IncludeProcessor() textInclude = TextInclude(includeProcessor, self.fileContentProvider) # последовательность важна! # Сначала резолвим макросы, потом делаем включение файлов # Это позволяет использовать макросы в include выражениях self.textPreprocessor = TextConveyorPreprocessor() self.textPreprocessor.addProcessor(macroResolver) self.textPreprocessor.addProcessor(textInclude) def run(self): rawSettings = self.settingsProvider.fetchSettings() buildReadyConfigs = self.configsProvider.getConfigs(rawSettings) for bc in buildReadyConfigs: self.valueProvider.setConfig(bc) self.runConfig(bc) def runConfig(self, config): content = self.getStepsContent(config) stepsRunner = StepsRunner(config, self.linePreprocessor, self.valueProvider) stepsRunner.run(content) def getStepsContent(self, config): pathToSteps = config.get('steps', self.defaults['steps']) content = self.fileContentProvider.fetchContent(pathToSteps) content = self.textPreprocessor.processText(content, self.textPreprocessor) return content
class TestCase(unittest.TestCase): def setUp(self): self.__config = { 'key1': 'value1', 'key2': 'value2' } self.__provider = ValueProvider() self.__provider.setConfig(self.__config) def test_provideByLink(self): value1 = self.__provider.getValueFor('@key1') value2 = self.__provider.getValueFor('@key2') self.assertEqual(value1, 'value1') self.assertEqual(value2, 'value2')
def __init__(self, settingsProvider, fileContentProvider, buildConfigProvider, linePreprocessor, defaults): assert settingsProvider is not None assert fileContentProvider is not None assert buildConfigProvider is not None assert linePreprocessor is not None assert defaults is not None self.settingsProvider = settingsProvider self.fileContentProvider = fileContentProvider self.configsProvider = buildConfigProvider self.linePreprocessor = linePreprocessor self.defaults = defaults macroProcessor = MacroProcessor() self.valueProvider = ValueProvider() macroResolver = MacroResolver(macroProcessor, self.valueProvider) includeProcessor = IncludeProcessor() textInclude = TextInclude(includeProcessor, self.fileContentProvider) # последовательность важна! # Сначала резолвим макросы, потом делаем включение файлов # Это позволяет использовать макросы в include выражениях self.textPreprocessor = TextConveyorPreprocessor() self.textPreprocessor.addProcessor(macroResolver) self.textPreprocessor.addProcessor(textInclude)
def setUp(self): self.__config = { 'key1': 'value1', 'key2': 'value2' } self.__provider = ValueProvider() self.__provider.setConfig(self.__config)
from CommandBuilders.PatchInfoplistCommandBuilder import PatchInfoplistCommandBuilder from commands.ValueProvider import ValueProvider config = { 'version': '0.1.2', 'app_name': 'TestAppName', # patch_info_plist 'plist app:CoolApp rel_path': 'BuildSample/Info.plist', 'plist app:CoolApp key:CFBundleVersion': '@version', # set CFBundleVersion 'plist app:CoolApp key:CFBundleDisplayName': '@app_name', # set CFBundleDisplayName } line = "inside 'BuildSample/BuildSample/Info.plist' set CFBundleDisplayName to 'MyCoolApp'" value_provider = ValueProvider() value_provider.setConfig(config) builder = PatchInfoplistCommandBuilder(value_provider) command = builder.getCommandFor(line) command.execute()