From 8c8a94fc7112a38cf97d06e4f037c01e2cf43adc Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Tue, 26 Oct 2021 15:41:41 +0300 Subject: [PATCH] Run config option validation even in raw mode --- platformio/project/config.py | 6 +++--- platformio/project/options.py | 3 +++ tests/test_projectconf.py | 12 ++++-------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/platformio/project/config.py b/platformio/project/config.py index 43b6c564..d930dfa7 100644 --- a/platformio/project/config.py +++ b/platformio/project/config.py @@ -279,6 +279,9 @@ class ProjectConfigBase(object): if value == MISSING: return None + if option_meta.validate: + value = option_meta.validate(value) + return self._expand_interpolations(value) def _expand_interpolations(self, value): @@ -315,11 +318,8 @@ class ProjectConfigBase(object): if not option_meta: return value - if option_meta.validate: - value = option_meta.validate(value) if option_meta.multiple: value = self.parse_multi_values(value or []) - try: return self.cast_to(value, option_meta.type) except click.BadParameter as e: diff --git a/platformio/project/options.py b/platformio/project/options.py index 5314da6e..d47cf461 100644 --- a/platformio/project/options.py +++ b/platformio/project/options.py @@ -107,6 +107,9 @@ def expand_dir_templates(path): def validate_dir(path): if not path: return path + # if not all values expanded, ignore validation + if "${" in path and "}" in path: + return path if path.startswith("~"): path = fs.expanduser(path) if "$" in path: diff --git a/tests/test_projectconf.py b/tests/test_projectconf.py index 2408463a..275ac95b 100644 --- a/tests/test_projectconf.py +++ b/tests/test_projectconf.py @@ -466,14 +466,7 @@ def test_dump(tmpdir_factory): ( "platformio", [ - ( - "build_dir", - "%s-%s" - % ( - os.path.realpath(fs.expanduser("~/tmp/pio")), - calculate_path_hash(os.getcwd()), - ), - ), + ("build_dir", "~/tmp/pio-$PROJECT_HASH"), ("extra_configs", ["extra_envs.ini", "extra_debug.ini"]), ("default_envs", ["base", "extra_2"]), ], @@ -536,6 +529,9 @@ def test_win_core_root_dir(tmpdir_factory): # Default config config = ProjectConfig() assert config.get("platformio", "core_dir") == win_core_root_dir + assert config.get("platformio", "packages_dir") == os.path.join( + win_core_root_dir, "packages" + ) # Override in config tmpdir = tmpdir_factory.mktemp("project")