forked from platformio/platformio-core
Change "examples" field in package manifest to ListOf(ExampleModel)
This commit is contained in:
@ -14,13 +14,7 @@
|
||||
|
||||
import semantic_version
|
||||
|
||||
from platformio.datamodel import (
|
||||
DataField,
|
||||
DataModel,
|
||||
DictOfType,
|
||||
ListOfType,
|
||||
StrictDataModel,
|
||||
)
|
||||
from platformio.datamodel import DataField, DataModel, ListOfType, StrictDataModel
|
||||
|
||||
|
||||
def validate_semver_field(_, value):
|
||||
@ -48,6 +42,7 @@ class ExportModel(DataModel):
|
||||
|
||||
|
||||
class ExampleModel(DataModel):
|
||||
name = DataField(max_length=100, regex=r"^[a-zA-Z\d\-\_ ]+$", required=True)
|
||||
base = DataField(required=True)
|
||||
files = DataField(type=ListOfType(DataField()))
|
||||
|
||||
@ -77,7 +72,7 @@ class ManifestModel(DataModel):
|
||||
|
||||
repository = DataField(type=RepositoryModel)
|
||||
export = DataField(type=ExportModel)
|
||||
examples = DataField(type=DictOfType(ExampleModel))
|
||||
examples = DataField(type=ListOfType(ExampleModel))
|
||||
|
||||
# platform.json specific
|
||||
title = DataField(max_length=100)
|
||||
|
@ -194,16 +194,18 @@ def test_library_json_model():
|
||||
"frameworks": "arduino",
|
||||
"platforms": "*",
|
||||
"license": "MIT",
|
||||
"examples": {
|
||||
"JsonConfigFile": {
|
||||
"examples": [
|
||||
{
|
||||
"name": "JsonConfigFile",
|
||||
"base": "examples/JsonConfigFile",
|
||||
"files": ["JsonConfigFile.ino"]
|
||||
},
|
||||
"JsonHttpClient": {
|
||||
{
|
||||
"name": "JsonHttpClient",
|
||||
"base": "examples/JsonHttpClient",
|
||||
"files": ["JsonHttpClient.ino"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
"""
|
||||
mp = parser.ManifestParserFactory.new(
|
||||
@ -211,7 +213,8 @@ def test_library_json_model():
|
||||
)
|
||||
model = StrictManifestModel(**mp.as_dict())
|
||||
assert model.repository.url == "https://github.com/bblanchon/ArduinoJson.git"
|
||||
assert model.examples["JsonHttpClient"].files == ["JsonHttpClient.ino"]
|
||||
assert model.examples[1].base == "examples/JsonHttpClient"
|
||||
assert model.examples[1].files == ["JsonHttpClient.ino"]
|
||||
assert model == StrictManifestModel(
|
||||
**{
|
||||
"name": "ArduinoJson",
|
||||
@ -239,16 +242,18 @@ def test_library_json_model():
|
||||
"frameworks": ["arduino"],
|
||||
"platforms": ["*"],
|
||||
"license": "MIT",
|
||||
"examples": {
|
||||
"JsonConfigFile": {
|
||||
"examples": [
|
||||
{
|
||||
"name": "JsonConfigFile",
|
||||
"base": "examples/JsonConfigFile",
|
||||
"files": ["JsonConfigFile.ino"],
|
||||
},
|
||||
"JsonHttpClient": {
|
||||
{
|
||||
"name": "JsonHttpClient",
|
||||
"base": "examples/JsonHttpClient",
|
||||
"files": ["JsonHttpClient.ino"],
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
@ -357,8 +362,10 @@ def test_platform_json_model():
|
||||
mp = parser.ManifestParserFactory.new(
|
||||
contents, parser.ManifestFileType.PLATFORM_JSON
|
||||
)
|
||||
data = mp.as_dict()
|
||||
data["frameworks"] = sorted(data["frameworks"])
|
||||
model = ManifestModel(**mp.as_dict())
|
||||
assert sorted(model.frameworks) == sorted(["arduino", "simba"])
|
||||
assert model.frameworks == ["arduino", "simba"]
|
||||
assert model == ManifestModel(
|
||||
**{
|
||||
"name": "atmelavr",
|
||||
@ -377,7 +384,7 @@ def test_platform_json_model():
|
||||
"type": "git",
|
||||
"branch": None,
|
||||
},
|
||||
"frameworks": ["simba", "arduino"],
|
||||
"frameworks": ["arduino", "simba"],
|
||||
"version": "1.15.0",
|
||||
}
|
||||
)
|
||||
|
Reference in New Issue
Block a user