blob: f17704f22c65e63b1024d7c9213ebed1106d1670 [file] [log] [blame]
#
# 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