#
# 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: yes
     "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
