# # 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