clean yaml error message

This commit is contained in:
Devaev Maxim 2021-04-17 17:44:48 +03:00
parent 5dea266895
commit 19c4c7d1e3
3 changed files with 11 additions and 6 deletions

View File

@ -161,9 +161,12 @@ def init(
# =====
def _init_config(config_path: str, override_options: List[str], **load_flags: bool) -> Section:
config_path = os.path.expanduser(config_path)
raw_config: Dict = load_yaml_file(config_path)
try:
raw_config: Dict = load_yaml_file(config_path)
except Exception as err:
raise SystemExit(f"ConfigError: Can't read config file {config_path!r}:\n{tools.efmt(err)}")
if not isinstance(raw_config, dict):
raise SystemExit(f"Config error: Top-level of the file {config_path!r} must be a dictionary")
raise SystemExit(f"ConfigError: Top-level of the file {config_path!r} must be a dictionary")
scheme = _get_config_scheme()
try:
@ -177,7 +180,7 @@ def _init_config(config_path: str, override_options: List[str], **load_flags: bo
return config
except (ConfigError, UnknownPluginError) as err:
raise SystemExit(f"Config error: {err}")
raise SystemExit(f"ConfigError: {err}")
def _patch_raw(raw_config: Dict) -> None:

View File

@ -28,15 +28,17 @@ from typing import Any
import yaml
import yaml.nodes
from .. import tools
# =====
def load_yaml_file(path: str) -> Any:
with open(path) as yaml_file:
try:
return yaml.load(yaml_file, _YamlLoader)
except Exception:
except Exception as err:
# Reraise internal exception as standard ValueError and show the incorrect file
raise ValueError(f"Incorrect YAML syntax in file {path!r}")
raise ValueError(f"Invalid YAML in the file {path!r}:\n{tools.efmt(err)}") from None
class _YamlLoader(yaml.SafeLoader):

View File

@ -158,7 +158,7 @@ def test_fail__not_htpasswd() -> None:
def test_fail__unknown_plugin() -> None:
with pytest.raises(SystemExit, match="Config error: Unknown plugin 'auth/foobar'"):
with pytest.raises(SystemExit, match="ConfigError: Unknown plugin 'auth/foobar'"):
_run_htpasswd(["list"], "", internal_type="foobar")