Fixed a “TypeError” issue when extending configuration option in “platformio.ini” with the multi-line default value // Resolve #4082

This commit is contained in:
Ivan Kravets
2021-10-20 15:35:01 +03:00
parent 768681c4f2
commit 5b091b602f
3 changed files with 35 additions and 2 deletions

View File

@ -12,6 +12,8 @@ PlatformIO Core 5
~~~~~~~~~~~~~~~~~~
- Override debugging firmware loading mode using ``--load-mode`` option for `pio debug <https://docs.platformio.org/en/latest/core/userguide/cmd_debug.html>`__ command
- Removed debugging "legacy Click" message from CLI (`issue #4083 <https://github.com/platformio/platformio-core/issues/4083>`_)
- Fixed a "TypeError: sequence item 1: expected str instance, list found" issue when extending configuration option in `"platformio.ini" <https://docs.platformio.org/page/projectconf.html>`__ with the multi-line default value (`issue #4082 <https://github.com/platformio/platformio-core/issues/4082>`_)
5.2.1 (2021-10-11)
~~~~~~~~~~~~~~~~~~

View File

@ -295,7 +295,10 @@ class ProjectConfigBase(object):
section, option = match.group(1), match.group(2)
if section == "sysenv":
return os.getenv(option)
return self.getraw(section, option)
value = self.getraw(section, option)
if isinstance(value, list):
return "\n".join(value)
return value
def get(self, section, option, default=MISSING):
value = None

View File

@ -63,6 +63,10 @@ targets =
[env:test_extends]
extends = strict_settings
[env:inject_base_env]
debug_build_flags =
${env.debug_build_flags}
-D CUSTOM_DEBUG_FLAG
"""
@ -150,13 +154,20 @@ def test_sections(config):
"custom",
"env:base",
"env:test_extends",
"env:inject_base_env",
"env:extra_1",
"env:extra_2",
]
def test_envs(config):
assert config.envs() == ["base", "test_extends", "extra_1", "extra_2"]
assert config.envs() == [
"base",
"test_extends",
"inject_base_env",
"extra_1",
"extra_2",
]
assert config.default_envs() == ["base", "extra_2"]
@ -274,6 +285,14 @@ def test_get_value(config):
assert config.get("env:extra_2", "monitor_speed") == 9600
assert config.get("env:base", "build_flags") == ["-D DEBUG=1"]
# get default value from ConfigOption
assert config.get("env:inject_base_env", "debug_build_flags") == [
"-Og",
"-g2",
"-ggdb2",
"-D CUSTOM_DEBUG_FLAG",
]
def test_items(config):
assert config.items("custom") == [
@ -445,4 +464,13 @@ def test_dump(tmpdir_factory):
],
),
("env:test_extends", [("extends", ["strict_settings"])]),
(
"env:inject_base_env",
[
(
"debug_build_flags",
["${env.debug_build_flags}", "-D CUSTOM_DEBUG_FLAG"],
)
],
),
]