# # 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: false mapping: "arch_exclude": type: str required: false "arch_allow": type: str required: false "build_only": type: bool required: false "build_on_all": type: bool required: false "depends_on": type: str required: false "extra_args": type: str required: false "extra_sections": type: str required: false "filter": type: str required: false "integration_platforms": type: seq required: false sequence: - type: str "harness": type: str required: false "harness_config": type: map required: false mapping: "type": type: str required: false "fixture": type: str required: false "ordered": type: bool required: false "repeat": type: int required: false "pytest_root": type: str required: false "pytest_args": type: seq required: false sequence: - type: str "regex": type: seq required: false sequence: - type: str "record": type: map required: false mapping: "regex": type: str required: false "min_ram": type: int required: false "min_flash": type: int required: false "platform_exclude": type: str required: false "platform_allow": type: str required: false "tags": type: str required: false "timeout": type: int required: false "toolchain_exclude": type: str required: false "toolchain_allow": type: str required: false "type": type: str enum: ["unit"] "skip": type: bool required: false "slow": type: bool required: false # The sample descriptor, if present "sample": type: map required: false mapping: "name": type: str required: true "description": type: str required: false # 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: false regex;(([a-zA-Z0-9_]+)): type: map # has to be not-required, otherwise the parser gets # confused and things it never found it required: false mapping: "arch_exclude": type: str required: false "arch_allow": type: str required: false "build_only": type: bool required: false "build_on_all": type: bool required: false "depends_on": type: str required: false "extra_args": type: str required: false "extra_configs": type: seq required: false sequence: - type: str "extra_sections": type: str required: false "filter": type: str required: false "integration_platforms": type: seq required: false sequence: - type: str "harness": type: str required: false "harness_config": type: map required: false mapping: "type": type: str required: false "fixture": type: str required: false "ordered": type: bool required: false "repeat": type: int required: false "pytest_root": type: str required: false "pytest_args": type: seq required: false sequence: - type: str "regex": type: seq required: false sequence: - type: str "record": type: map required: false mapping: "regex": type: str required: false "min_ram": type: int required: false "min_flash": type: int required: false "platform_exclude": type: str required: false "platform_allow": type: str required: false "tags": type: str required: false "timeout": type: int required: false "toolchain_exclude": type: str required: false "toolchain_allow": type: str required: false "type": type: str enum: ["unit"] "skip": type: bool required: false "slow": type: bool required: false