#
# 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
#
schema;scenario-schema:
  type: map
  # has to be not-required, otherwise the parser gets
  # confused and things it never found it
  required: false
  mapping:
    "arch_exclude":
      type: any
      required: false
    "arch_allow":
      type: any
      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: any
      required: false
    "extra_args":
      type: any
      required: false
    "extra_configs":
      type: seq
      required: false
      sequence:
        - type: str
    "extra_conf_files":
      type: seq
      required: false
      sequence:
        - type: str
    "extra_overlay_confs":
      type: seq
      required: false
      sequence:
        - type: str
    "extra_dtc_overlay_files":
      type: seq
      required: false
      sequence:
        - type: str
    "extra_sections":
      type: any
      required: false
    "required_snippets":
      type: seq
      required: false
      sequence:
        - type: str
    "filter":
      type: str
      required: false
    "levels":
      type: seq
      required: false
      sequence:
        - type: str
          enum: ["smoke", "unit", "integration", "acceptance", "system", "regression"]
    "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: seq
          required: false
          sequence:
            - type: str
        "pytest_args":
          type: seq
          required: false
          sequence:
            - type: str
        "pytest_dut_scope":
          type: str
          enum: ["function", "class", "module", "package", "session"]
          required: false
        "regex":
          type: seq
          required: false
          sequence:
            - type: str
        "robot_test_path":
          type: str
          required: false
        "record":
          type: map
          required: false
          mapping:
            "regex":
              type: str
              required: true
        "bsim_exe_name":
          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: any
      required: false
    "platform_allow":
      type: any
      required: false
    "platform_type":
      type: seq
      required: false
      sequence:
        - type: str
          enum: ["mcu", "qemu", "sim", "unit", "native"]
    "platform_key":
      required: false
      type: seq
      matching: "all"
      sequence:
        - type: str
    "simulation_exclude":
      type: seq
      required: false
      sequence:
        - type: str
          enum:
            [
              "qemu",
              "simics",
              "xt-sim",
              "renode",
              "nsim",
              "mdb-nsim",
              "tsim",
              "armfvp",
              "native",
              "custom",
            ]
    "tags":
      type: any
      required: false
    "timeout":
      type: int
      required: false
    "toolchain_exclude":
      type: any
      required: false
    "toolchain_allow":
      type: any
      required: false
    "type":
      type: str
      enum: ["unit"]
    "skip":
      type: bool
      required: false
    "slow":
      type: bool
      required: false
    "sysbuild":
      type: bool
      required: false

type: map
mapping:
  "common":
    include: scenario-schema
  # 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
    required: true
    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_]+)):
        include: scenario-schema
