# | |
# Schema to validate a YAML file describing a Zephyr test platform | |
# | |
# We load this with pykwalify | |
# (http://pykwalify.readthedocs.io/en/unstable/validation-rules.html), | |
# a YAML structure validator, to validate the YAML files that describe | |
# Zephyr test platforms | |
# | |
# The original spec comes from Zephyr's twister script | |
# | |
type: map | |
mapping: | |
"common": | |
type: map | |
required: no | |
mapping: | |
"arch_exclude": | |
type: str | |
required: no | |
"arch_allow": | |
type: str | |
required: no | |
"build_only": | |
type: bool | |
required: no | |
"build_on_all": | |
type: bool | |
required: no | |
"depends_on": | |
type: str | |
required: no | |
"extra_args": | |
type: str | |
required: no | |
"extra_sections": | |
type: str | |
required: no | |
"filter": | |
type: str | |
required: no | |
"integration_platforms": | |
type: seq | |
required: no | |
sequence: | |
- type: str | |
"harness": | |
type: str | |
required: no | |
"harness_config": | |
type: map | |
required: no | |
mapping: | |
"type": | |
type: str | |
required: no | |
"fixture": | |
type: str | |
required: no | |
"ordered": | |
type: bool | |
required: no | |
"repeat": | |
type: int | |
required: no | |
"pytest_root": | |
type: str | |
required: no | |
"regex": | |
type: seq | |
required: no | |
sequence: | |
- type: str | |
"record": | |
type: map | |
required: no | |
mapping: | |
"regex": | |
type: str | |
required: no | |
"min_ram": | |
type: int | |
required: no | |
"min_flash": | |
type: int | |
required: no | |
"platform_exclude": | |
type: str | |
required: no | |
"platform_allow": | |
type: str | |
required: no | |
"tags": | |
type: str | |
required: no | |
"timeout": | |
type: int | |
required: no | |
"toolchain_exclude": | |
type: str | |
required: no | |
"toolchain_allow": | |
type: str | |
required: no | |
"type": | |
type: str | |
enum: ["unit"] | |
"skip": | |
type: bool | |
required: no | |
"slow": | |
type: bool | |
required: no | |
# The sample descriptor, if present | |
"sample": | |
type: map | |
required: no | |
mapping: | |
"name": | |
type: str | |
required: yes | |
"description": | |
type: str | |
required: no | |
# The list of testcases -- IDK why this is a sequence of | |
# maps maps, shall just be a sequence of maps | |
# maybe it is just an artifact? | |
"tests": | |
type: map | |
matching-rule: "any" | |
mapping: | |
# The key for the testname is any, so | |
# regex;(([a-zA-Z0-9_]+)) for this to work, note below we | |
# make it required: no | |
regex;(([a-zA-Z0-9_]+)): | |
type: map | |
# has to be not-required, otherwise the parser gets | |
# confused and things it never found it | |
required: no | |
mapping: | |
"arch_exclude": | |
type: str | |
required: no | |
"arch_allow": | |
type: str | |
required: no | |
"build_only": | |
type: bool | |
required: no | |
"build_on_all": | |
type: bool | |
required: no | |
"depends_on": | |
type: str | |
required: no | |
"extra_args": | |
type: str | |
required: no | |
"extra_configs": | |
type: seq | |
required: no | |
sequence: | |
- type: str | |
"extra_sections": | |
type: str | |
required: no | |
"filter": | |
type: str | |
required: no | |
"integration_platforms": | |
type: seq | |
required: no | |
sequence: | |
- type: str | |
"harness": | |
type: str | |
required: no | |
"harness_config": | |
type: map | |
required: no | |
mapping: | |
"type": | |
type: str | |
required: no | |
"fixture": | |
type: str | |
required: no | |
"ordered": | |
type: bool | |
required: no | |
"repeat": | |
type: int | |
required: no | |
"pytest_root": | |
type: str | |
required: no | |
"regex": | |
type: seq | |
required: no | |
sequence: | |
- type: str | |
"record": | |
type: map | |
required: no | |
mapping: | |
"regex": | |
type: str | |
required: no | |
"min_ram": | |
type: int | |
required: no | |
"min_flash": | |
type: int | |
required: no | |
"platform_exclude": | |
type: str | |
required: no | |
"platform_allow": | |
type: str | |
required: no | |
"tags": | |
type: str | |
required: no | |
"timeout": | |
type: int | |
required: no | |
"toolchain_exclude": | |
type: str | |
required: no | |
"toolchain_allow": | |
type: str | |
required: no | |
"type": | |
type: str | |
enum: ["unit"] | |
"skip": | |
type: bool | |
required: no | |
"slow": | |
type: bool | |
required: no |