#
# 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
      "ignore_faults":
        type: bool
        required: false
      "ignore_qemu_crash":
        type: bool
        required: false
      "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
      "sysbuild":
        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
          "ignore_faults":
            type: bool
            required: false
          "ignore_qemu_crash":
            type: bool
            required: false
          "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
          "sysbuild":
            type: bool
            required: false
