#
# 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_whitelist":
       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
     "harness":
       type: str
       required: no
     "harness_config":
       type: map
       required: no
       mapping:
         "type":
            type: str
            required: yes
         "ordered":
            type: bool
            required: no
         "repeat":
            type: int
            required: no
         "regex":
            type: seq
            required: yes
            sequence:
              - type: str
     "min_ram":
       type: int
       required: no
     "min_flash":
       type: int
       required: no
     "platform_exclude":
       type: str
       required: no
     "platform_whitelist":
       type: str
       required: no
     "tags":
       type: str
       required: no
     "timeout":
       type: int
       required: no
     "toolchain_exclude":
       type: str
       required: no
     "toolchain_whitelist":
       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
      "platforms":
        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_whitelist":
               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
             "harness":
               type: str
               required: no
             "harness_config":
               type: map
               required: no
               mapping:
                 "type":
                    type: str
                    required: yes
                 "ordered":
                    type: bool
                    required: no
                 "repeat":
                    type: int
                    required: no
                 "regex":
                    type: seq
                    required: yes
                    sequence:
                      - type: str
             "min_ram":
               type: int
               required: no
             "min_flash":
               type: int
               required: no
             "platform_exclude":
               type: str
               required: no
             "platform_whitelist":
               type: str
               required: no
             "tags":
               type: str
               required: no
             "timeout":
               type: int
               required: no
             "toolchain_exclude":
               type: str
               required: no
             "toolchain_whitelist":
               type: str
               required: no
             "type":
               type: str
               enum: [ 'unit' ]
             "skip":
               type: bool
               required: no
             "slow":
               type: bool
               required: no
