#
# 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 sanitycheck 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
          "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
              "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
