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