| 87 | |
| 88 | |
| 89 | class CommandEnvironment(TracEnvironment): |
| 90 | def __init__(self, cmdoptions, *args, **kwargs): |
| 91 | self._cmdoptions = cmdoptions |
| 92 | super().__init__(cmdoptions.trac_env, *args, **kwargs) |
| 93 | |
| 94 | def setup_log(self): |
| 95 | if self._cmdoptions.trac_log_level: |
| 96 | self.config.set("logging", "log_type", "stderr") |
| 97 | self.config.set("logging", "log_level", self._cmdoptions.trac_log_level) |
| 98 | super().setup_log() |
| 99 | else: |
| 100 | # Let the mock object capture (and discard) all method calls. |
| 101 | self.log = Mock() |
| 102 | |
| 103 | # The rest of the methods here are custom and not available on Trac's Environment. |
| 104 | |
| 105 | @property |
| 106 | def registered_components(self): |
| 107 | yield from map(self._component_name, ComponentMeta._components) |
| 108 | |
| 109 | @cached_property |
| 110 | def registered_component_tree(self): |
| 111 | return _build_component_tree(self.registered_components) |
| 112 | |
| 113 | @property |
| 114 | def configured_components(self): |
| 115 | yield from ( |
| 116 | ConfiguredComponent(self, name, value) |
| 117 | for name, value in self.components_section.options() |
| 118 | ) |
| 119 | |
| 120 | def get_lint_errors(self): |
| 121 | errors = [] |
| 122 | for component in self.configured_components: |
| 123 | errors.extend((component, err) for err in component.get_lint_errors()) |
| 124 | return errors |
| 125 | |
| 126 | |
| 127 | def get_parser(): |