def read(cls, path: Union[Path, str]) -> Config: if path is None: if cls.DEFAULT_CONFIG_FILE_PATH.exists(): config = cls.__parse(cls.DEFAULT_CONFIG_FILE_PATH) else: return Config.empty() else: config = cls.__parse(path) return cls.__validate(config)
def config(config_path): """Interactively create or edit configuration file""" config_path = Path(config_path or ConfigIO.DEFAULT_CONFIG_FILE_PATH) logging.debug(config_path) try: config_obj = ConfigIO.read(config_path) except FileNotFoundError: config_obj = Config.empty() config_obj = Configurator.update(config_obj) ConfigIO.write(config_obj, config_path) click.echo(f"Created/updated config in {config_path}")
def test_config_with_config_file_existing(_): runner = CliRunner() config_path = "twisted.yml" dummy_rule_config = RuleConfig("a", enabled=False) with runner.isolated_filesystem(): ConfigIO.write(Config(universal=[dummy_rule_config]), config_path) result = runner.invoke(main, ["config", "--config=twisted.yml"]) assert result.exit_code == 0 assert result.output == f"Created/updated config in {config_path}\n" assert (ConfigIO.read(config_path) == Config.empty() ), "existing config not overwritten"
result = runner.invoke( main, [ "--debug", "check", f"--add-rules-from={rule_dir_1}", f"--add-rules-from={rule_dir_2}", manifest_json, ], ) assert result.exit_code == 0 @patch.object(Configurator, "update", return_value=Config.empty()) def test_config_outputs_file(_): runner = CliRunner() with runner.isolated_filesystem(): result = runner.invoke(main, ["config"]) assert result.exit_code == 0 config_path = Path("olivertwist.yml") assert config_path.exists assert result.output == f"Created/updated config in {config_path}\n" @patch.object(Configurator, "update", return_value=Config.empty()) def test_config_with_config_file_not_existing(_): runner = CliRunner() config_path = Path("twisted.yml")