#
# 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:
  "identifier":
    type: str
  "maintainers":
    type: seq
    seq:
      - type: str
  "name":
    type: str
  "type":
    type: str
    enum: ["mcu", "qemu", "sim", "unit", "native"]
  "simulation":
    type: str
    enum:
      [
        "qemu",
        "simics",
        "xt-sim",
        "renode",
        "nsim",
        "mdb-nsim",
        "tsim",
        "armfvp",
        "native",
        "custom",
      ]
  "simulation_exec":
    type: str
  "arch":
    type: str
    enum:
      [
        # architectures
        "arc",
        "arm",
        "arm64",
        "mips",
        "nios2",
        "posix",
        "riscv",
        "sparc",
        "x86",
        "xtensa",

        # unit testing
        "unit",
      ]
  "vendor":
    type: str
  "tier":
    type: int
  "toolchain":
    type: seq
    seq:
      - type: str
  "env":
    type: seq
    seq:
      - type: str
  "ram":
    type: int
  "flash":
    type: int
  "twister":
    type: bool
  "supported":
    type: seq
    seq:
      - type: str
  "testing":
    type: map
    mapping:
      "timeout_multiplier":
        type: number
        required: false
      "default":
        type: bool
      "binaries":
        type: seq
        seq:
          - type: str
      "only_tags":
        type: seq
        seq:
          - type: str
      "ignore_tags":
        type: seq
        seq:
          - type: str
