Change "examples" field in package manifest to ListOf(ExampleModel)

This commit is contained in:
Ivan Kravets
2019-10-02 11:04:29 +03:00
parent dee2d2c538
commit a2213a1aa4
2 changed files with 21 additions and 19 deletions

View File

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

View File

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