summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kvmd/apps/__init__.py9
-rw-r--r--kvmd/yamlconf/loader.py6
-rw-r--r--testenv/tests/apps/htpasswd/test_main.py2
3 files changed, 11 insertions, 6 deletions
diff --git a/kvmd/apps/__init__.py b/kvmd/apps/__init__.py
index cb5666b9..c807858f 100644
--- a/kvmd/apps/__init__.py
+++ b/kvmd/apps/__init__.py
@@ -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:
diff --git a/kvmd/yamlconf/loader.py b/kvmd/yamlconf/loader.py
index 20ff7c93..2acff93f 100644
--- a/kvmd/yamlconf/loader.py
+++ b/kvmd/yamlconf/loader.py
@@ -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):
diff --git a/testenv/tests/apps/htpasswd/test_main.py b/testenv/tests/apps/htpasswd/test_main.py
index 4ba3cea1..4b1ee66b 100644
--- a/testenv/tests/apps/htpasswd/test_main.py
+++ b/testenv/tests/apps/htpasswd/test_main.py
@@ -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")