testcase-schema.yaml 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. #
  2. # Schema to validate a YAML file describing a Zephyr test platform
  3. #
  4. # We load this with pykwalify
  5. # (http://pykwalify.readthedocs.io/en/unstable/validation-rules.html),
  6. # a YAML structure validator, to validate the YAML files that describe
  7. # Zephyr test platforms
  8. #
  9. # The original spec comes from Zephyr's twister script
  10. #
  11. type: map
  12. mapping:
  13. "common":
  14. type: map
  15. required: no
  16. mapping:
  17. "arch_exclude":
  18. type: str
  19. required: no
  20. "arch_allow":
  21. type: str
  22. required: no
  23. "build_only":
  24. type: bool
  25. required: no
  26. "build_on_all":
  27. type: bool
  28. required: no
  29. "depends_on":
  30. type: str
  31. required: no
  32. "extra_args":
  33. type: str
  34. required: no
  35. "extra_sections":
  36. type: str
  37. required: no
  38. "filter":
  39. type: str
  40. required: no
  41. "integration_platforms":
  42. type: seq
  43. required: no
  44. sequence:
  45. - type: str
  46. "harness":
  47. type: str
  48. required: no
  49. "harness_config":
  50. type: map
  51. required: no
  52. mapping:
  53. "type":
  54. type: str
  55. required: no
  56. "fixture":
  57. type: str
  58. required: no
  59. "ordered":
  60. type: bool
  61. required: no
  62. "repeat":
  63. type: int
  64. required: no
  65. "pytest_root":
  66. type: str
  67. required: no
  68. "regex":
  69. type: seq
  70. required: no
  71. sequence:
  72. - type: str
  73. "record":
  74. type: map
  75. required: no
  76. mapping:
  77. "regex":
  78. type: str
  79. required: no
  80. "min_ram":
  81. type: int
  82. required: no
  83. "min_flash":
  84. type: int
  85. required: no
  86. "platform_exclude":
  87. type: str
  88. required: no
  89. "platform_allow":
  90. type: str
  91. required: no
  92. "tags":
  93. type: str
  94. required: no
  95. "timeout":
  96. type: int
  97. required: no
  98. "toolchain_exclude":
  99. type: str
  100. required: no
  101. "toolchain_allow":
  102. type: str
  103. required: no
  104. "type":
  105. type: str
  106. enum: ["unit"]
  107. "skip":
  108. type: bool
  109. required: no
  110. "slow":
  111. type: bool
  112. required: no
  113. # The sample descriptor, if present
  114. "sample":
  115. type: map
  116. required: no
  117. mapping:
  118. "name":
  119. type: str
  120. required: yes
  121. "description":
  122. type: str
  123. required: no
  124. # The list of testcases -- IDK why this is a sequence of
  125. # maps maps, shall just be a sequence of maps
  126. # maybe it is just an artifact?
  127. "tests":
  128. type: map
  129. matching-rule: "any"
  130. mapping:
  131. # The key for the testname is any, so
  132. # regex;(([a-zA-Z0-9_]+)) for this to work, note below we
  133. # make it required: no
  134. regex;(([a-zA-Z0-9_]+)):
  135. type: map
  136. # has to be not-required, otherwise the parser gets
  137. # confused and things it never found it
  138. required: no
  139. mapping:
  140. "arch_exclude":
  141. type: str
  142. required: no
  143. "arch_allow":
  144. type: str
  145. required: no
  146. "build_only":
  147. type: bool
  148. required: no
  149. "build_on_all":
  150. type: bool
  151. required: no
  152. "depends_on":
  153. type: str
  154. required: no
  155. "extra_args":
  156. type: str
  157. required: no
  158. "extra_configs":
  159. type: seq
  160. required: no
  161. sequence:
  162. - type: str
  163. "extra_sections":
  164. type: str
  165. required: no
  166. "filter":
  167. type: str
  168. required: no
  169. "integration_platforms":
  170. type: seq
  171. required: no
  172. sequence:
  173. - type: str
  174. "harness":
  175. type: str
  176. required: no
  177. "harness_config":
  178. type: map
  179. required: no
  180. mapping:
  181. "type":
  182. type: str
  183. required: no
  184. "fixture":
  185. type: str
  186. required: no
  187. "ordered":
  188. type: bool
  189. required: no
  190. "repeat":
  191. type: int
  192. required: no
  193. "pytest_root":
  194. type: str
  195. required: no
  196. "regex":
  197. type: seq
  198. required: no
  199. sequence:
  200. - type: str
  201. "record":
  202. type: map
  203. required: no
  204. mapping:
  205. "regex":
  206. type: str
  207. required: no
  208. "min_ram":
  209. type: int
  210. required: no
  211. "min_flash":
  212. type: int
  213. required: no
  214. "platform_exclude":
  215. type: str
  216. required: no
  217. "platform_allow":
  218. type: str
  219. required: no
  220. "tags":
  221. type: str
  222. required: no
  223. "timeout":
  224. type: int
  225. required: no
  226. "toolchain_exclude":
  227. type: str
  228. required: no
  229. "toolchain_allow":
  230. type: str
  231. required: no
  232. "type":
  233. type: str
  234. enum: ["unit"]
  235. "skip":
  236. type: bool
  237. required: no
  238. "slow":
  239. type: bool
  240. required: no