zephyr/scripts/schemas/twister/testsuite-schema.yaml
Anas Nashif a6f924db7f twister: add support for platform_type filter
Instead of relying on runtime filter to limit scope to emulation
platforms, use the type attribute for each platform and do the filtering
very early on. This will speed things up for tests where we only run on
emulation platforms.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2022-05-14 14:49:59 -04:00

281 lines
6.6 KiB
YAML

#
# 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
"testcases":
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
"modules":
type: seq
required: false
sequence:
- type: str
"platform_exclude":
type: str
required: false
"platform_allow":
type: str
required: false
"platform_type":
type: seq
required: false
sequence:
- type: str
"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
"testcases":
type: seq
required: false
sequence:
- type: str
"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
"modules":
type: seq
required: false
sequence:
- type: str
"platform_exclude":
type: str
required: false
"platform_allow":
type: str
required: false
"platform_type":
type: seq
required: false
sequence:
- type: str
"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