mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-30 01:57:13 +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()]
|
return [dict(name=name, version=version) for name, version in raw.items()]
|
||||||
if isinstance(raw, list):
|
if isinstance(raw, list):
|
||||||
for i, dependency in enumerate(raw):
|
for i, dependency in enumerate(raw):
|
||||||
assert isinstance(dependency, dict)
|
if isinstance(dependency, dict):
|
||||||
for k, v in dependency.items():
|
for k, v in dependency.items():
|
||||||
if k not in ("platforms", "frameworks", "authors"):
|
if k not in ("platforms", "frameworks", "authors"):
|
||||||
continue
|
continue
|
||||||
if "*" in v:
|
if "*" in v:
|
||||||
del raw[i][k]
|
del raw[i][k]
|
||||||
raw[i][k] = util.items_to_list(v)
|
raw[i][k] = util.items_to_list(v)
|
||||||
|
else:
|
||||||
|
raw[i] = {"name": dependency}
|
||||||
return raw
|
return raw
|
||||||
raise ManifestParserError(
|
raise ManifestParserError(
|
||||||
"Invalid dependencies format, should be list or dictionary"
|
"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
|
# broken dependencies
|
||||||
with pytest.raises(parser.ManifestParserError):
|
with pytest.raises(parser.ManifestParserError):
|
||||||
parser.LibraryJsonManifestParser({"dependencies": ["deps1", "deps2"]})
|
parser.LibraryJsonManifestParser({"dependencies": ["deps1", "deps2"]})
|
||||||
|
Reference in New Issue
Block a user