Beispiel #1
0
    def _create_grammar_manager(merger, content_loader, hooks_runner, rule_config, smrc,
                                mapping_rule_maker, transformers_runner):
        """
        This is where settings should be used to alter the dependency injection being done.
        Setting things to alternate implementations can live here.

        :param merger:
        :param content_loader:
        :param hooks_runner:
        :param rule_config
        :param smrc
        :param mapping_rule_maker
        :param transformers_runner
        :return:
        """

        ccr_toggle = CCRToggle()

        ccr_rule_validator = Nexus._create_ccr_rule_validator()
        details_validator = Nexus._create_details_validator()
        combo_validator = Nexus._create_combo_validator()

        timer = settings.SETTINGS["grammar_reloading"]["reload_timer_seconds"]
        observable = TimerReloadObservable(timer)
        if settings.SETTINGS["grammar_reloading"]["reload_trigger"] == "manual":
            observable = ManualReloadObservable()

        grammars_container = BasicGrammarContainer()

        activator = GrammarActivator(lambda rule: isinstance(rule, MergeRule))

        companion_config = CompanionConfig()

        gm = GrammarManager(rule_config,
                            merger,
                            content_loader,
                            ccr_rule_validator,
                            details_validator,
                            observable,
                            activator,
                            mapping_rule_maker,
                            grammars_container,
                            hooks_runner,
                            ccr_toggle,
                            smrc,
                            transformers_runner,
                            companion_config,
                            combo_validator)
        return gm
    def setUp(self):
        settings_mocking.prevent_initialize()
        settings_mocking.prevent_save()
        from tests.test_util import utilities_mocking
        utilities_mocking.enable_mock_toml_files()
        from castervoice.lib import utilities

        # do most imports here so that nothing imports and initializes settings
        from castervoice.lib.ctrl.mgr.ccr_toggle import CCRToggle
        from castervoice.lib.ctrl.mgr.companion.companion_config import CompanionConfig
        from castervoice.lib.ctrl.mgr.grammar_activator import GrammarActivator
        from castervoice.lib.ctrl.mgr.grammar_manager import GrammarManager
        from castervoice.lib.ctrl.mgr.loading.reload.manual_reload_observable import ManualReloadObservable
        from castervoice.lib.ctrl.mgr.rule_maker.mapping_rule_maker import MappingRuleMaker
        from castervoice.lib.ctrl.mgr.rules_config import RulesConfig
        from castervoice.lib.ctrl.nexus import Nexus
        from castervoice.lib.merge.ccrmerging2.hooks.hooks_config import HooksConfig
        from castervoice.lib.merge.ccrmerging2.hooks.hooks_runner import HooksRunner
        from castervoice.lib.merge.ccrmerging2.transformers.transformers_config import TransformersConfig
        from castervoice.lib.merge.ccrmerging2.transformers.transformers_runner import TransformersRunner
        from castervoice.lib.merge.mergerule import MergeRule
        from castervoice.lib.merge.selfmod.smr_configurer import SelfModRuleConfigurer
        from tests.lib.ctrl.mgr.grammar_container.fake_grammar_container import FakeGrammarContainer

        self._setup_config_file(
            utilities, ["paths", "RULES_CONFIG_PATH"],
            TestGrammarManager._MOCK_PATH_RULES_CONFIG, {
                RulesConfig._ENABLED_ORDERED: [],
                RulesConfig._INTERNAL: [],
                RulesConfig._WHITELISTED: {}
            })
        self._setup_config_file(
            utilities, ["paths", "TRANSFORMERS_CONFIG_PATH"],
            TestGrammarManager._MOCK_PATH_TRANSFORMERS_CONFIG,
            {"TextReplacerTransformer": False})
        self._setup_config_file(utilities, ["paths", "HOOKS_CONFIG_PATH"],
                                TestGrammarManager._MOCK_PATH_HOOKS_CONFIG, {})
        self._setup_config_file(utilities, ["paths", "COMPANION_CONFIG_PATH"],
                                TestGrammarManager._MOCK_PATH_COMPANION_CONFIG,
                                {})
        self._set_setting(["miscellaneous", "max_ccr_repetitions"], 2)
        self._set_setting(["miscellaneous", "ccr_on"], True)

        self._rule_config = RulesConfig()
        smrc = SelfModRuleConfigurer()
        hooks_config = HooksConfig()
        self._hooks_runner = HooksRunner(hooks_config)
        smrc.set_hooks_runner(self._hooks_runner)
        transformers_config = TransformersConfig()
        self._transformers_runner = TransformersRunner(transformers_config)
        merger = Nexus._create_merger(smrc, self._transformers_runner)
        self._content_loader = Mock()
        mapping_rule_maker = MappingRuleMaker(self._transformers_runner, smrc)
        ccr_toggle = CCRToggle()
        ccr_rule_validator = Nexus._create_ccr_rule_validator()
        details_validator = Nexus._create_details_validator()
        combo_validator = Nexus._create_combo_validator()
        observable = ManualReloadObservable()
        grammars_container = FakeGrammarContainer()
        activator = GrammarActivator(lambda rule: isinstance(rule, MergeRule))
        companion_config = CompanionConfig()

        self._gm = GrammarManager(self._rule_config, merger,
                                  self._content_loader, ccr_rule_validator,
                                  details_validator, observable, activator,
                                  mapping_rule_maker, grammars_container,
                                  self._hooks_runner, ccr_toggle, smrc,
                                  self._transformers_runner, companion_config,
                                  combo_validator)