From 44174ab2f5b3041bf1e8591ce6eb3ac6ba4be30e Mon Sep 17 00:00:00 2001 From: Marcin Zaremba Date: Thu, 16 Aug 2018 18:03:00 +0200 Subject: [PATCH] Throw ValueError for parsed types too --- .gitignore | 1 + ecological/autoconfig.py | 2 +- tests/test_all.py | 14 +++++++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index b9c1470..47df899 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ coverage.xml tox.ini *.egg-info **/__pycache__ +.pytest_cache/ diff --git a/ecological/autoconfig.py b/ecological/autoconfig.py index bf30566..ced6069 100644 --- a/ecological/autoconfig.py +++ b/ecological/autoconfig.py @@ -133,7 +133,7 @@ def get(self, wanted_type: WantedType) -> Union[WantedType, Any]: try: value = self.transform(raw_value, wanted_type) - except ValueError as e: + except (ValueError, SyntaxError) as e: raise ValueError(f"Invalid configuration for '{self.name}': {e}.") return value diff --git a/tests/test_all.py b/tests/test_all.py index 33791fe..e8d6b65 100644 --- a/tests/test_all.py +++ b/tests/test_all.py @@ -77,12 +77,20 @@ class Configuration(ecological.AutoConfig, prefix="prefix"): assert Configuration.not_default == "Not Default" -def test_invalid_value(monkeypatch): - monkeypatch.setenv("INVALID", "Invalid integer") +def test_invalid_value_regular_type(monkeypatch): + monkeypatch.setenv("PARAM_REGULAR_TYPE", "not an integer") with pytest.raises(ValueError): class Configuration(ecological.AutoConfig): - invalid: int + param_regular_type: int + + +def test_invalid_value_parsed_type(monkeypatch): + monkeypatch.setenv("PARAM_PARSED_TYPE", "not a list") + + with pytest.raises(ValueError): + class Configuration(ecological.AutoConfig): + param_parsed_type: list = ['param_1', 'param_2'] def test_no_default():