mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-29 17:47:14 +02:00
Parse package dependencies declared as a list of strings
This commit is contained in:
@ -363,13 +363,15 @@ class LibraryJsonManifestParser(BaseManifestParser):
|
||||
return [dict(name=name, version=version) for name, version in raw.items()]
|
||||
if isinstance(raw, list):
|
||||
for i, dependency in enumerate(raw):
|
||||
assert isinstance(dependency, dict)
|
||||
for k, v in dependency.items():
|
||||
if k not in ("platforms", "frameworks", "authors"):
|
||||
continue
|
||||
if "*" in v:
|
||||
del raw[i][k]
|
||||
raw[i][k] = util.items_to_list(v)
|
||||
if isinstance(dependency, dict):
|
||||
for k, v in dependency.items():
|
||||
if k not in ("platforms", "frameworks", "authors"):
|
||||
continue
|
||||
if "*" in v:
|
||||
del raw[i][k]
|
||||
raw[i][k] = util.items_to_list(v)
|
||||
else:
|
||||
raw[i] = {"name": dependency}
|
||||
return raw
|
||||
raise ManifestParserError(
|
||||
"Invalid dependencies format, should be list or dictionary"
|
||||
|
@ -112,6 +112,21 @@ def test_library_json_parser():
|
||||
},
|
||||
)
|
||||
|
||||
raw_data = parser.LibraryJsonManifestParser(
|
||||
'{"dependencies": ["dep1", "dep2", "@owner/dep3"]}'
|
||||
).as_dict()
|
||||
raw_data["dependencies"] = sorted(raw_data["dependencies"], key=lambda a: a["name"])
|
||||
assert not jsondiff.diff(
|
||||
raw_data,
|
||||
{
|
||||
"dependencies": [
|
||||
{"name": "@owner/dep3"},
|
||||
{"name": "dep1"},
|
||||
{"name": "dep2"},
|
||||
],
|
||||
},
|
||||
)
|
||||
|
||||
# broken dependencies
|
||||
with pytest.raises(parser.ManifestParserError):
|
||||
parser.LibraryJsonManifestParser({"dependencies": ["deps1", "deps2"]})
|
||||
|
Reference in New Issue
Block a user