Run config option validation even in raw mode

This commit is contained in:
Ivan Kravets
2021-10-26 15:41:41 +03:00
parent 1174958e8b
commit 8c8a94fc71
3 changed files with 10 additions and 11 deletions

View File

@ -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:

View File

@ -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:

View File

@ -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")