#
# 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
      "platform_key":
        required: false
        type: seq
        matching: "all"
        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
          "platform_key":
            required: false
            type: seq
            matching: "all"
            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
