show-only_json-v1_check.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. from show_only_json_check import *
  2. def check_kind(k):
  3. assert is_string(k)
  4. assert k == "ctestInfo"
  5. def check_version(v):
  6. assert is_dict(v)
  7. assert sorted(v.keys()) == ["major", "minor"]
  8. assert is_int(v["major"])
  9. assert is_int(v["minor"])
  10. assert v["major"] == 1
  11. assert v["minor"] == 0
  12. def check_backtracegraph(b):
  13. assert is_dict(b)
  14. assert sorted(b.keys()) == ["commands", "files", "nodes"]
  15. check_backtracegraph_commands(b["commands"])
  16. check_backtracegraph_files(b["files"])
  17. check_backtracegraph_nodes(b["nodes"])
  18. def check_backtracegraph_commands(c):
  19. assert is_list(c)
  20. assert len(c) == 1
  21. assert is_string(c[0])
  22. assert c[0] == "add_test"
  23. def check_backtracegraph_files(f):
  24. assert is_list(f)
  25. assert len(f) == 2
  26. assert is_string(f[0])
  27. assert is_string(f[1])
  28. assert f[0] == "file1"
  29. assert f[1] == "file0"
  30. def check_backtracegraph_nodes(n):
  31. assert is_list(n)
  32. assert len(n) == 2
  33. node = n[0]
  34. assert is_dict(node)
  35. assert sorted(node.keys()) == ["file"]
  36. assert is_int(node["file"])
  37. assert node["file"] == 1
  38. node = n[1]
  39. assert is_dict(node)
  40. assert sorted(node.keys()) == ["command", "file", "line", "parent"]
  41. assert is_int(node["command"])
  42. assert is_int(node["file"])
  43. assert is_int(node["line"])
  44. assert is_int(node["parent"])
  45. assert node["command"] == 0
  46. assert node["file"] == 0
  47. assert node["line"] == 1
  48. assert node["parent"] == 0
  49. def check_command(c):
  50. assert is_list(c)
  51. assert len(c) == 3
  52. assert is_string(c[0])
  53. check_re(c[0], "/cmake(\.exe)?$")
  54. assert is_string(c[1])
  55. assert c[1] == "-E"
  56. assert is_string(c[2])
  57. assert c[2] == "echo"
  58. def check_reqfiles_property(p):
  59. assert is_dict(p)
  60. assert sorted(p.keys()) == ["name", "value"]
  61. assert is_string(p["name"])
  62. assert is_list(p["value"])
  63. assert p["name"] == "REQUIRED_FILES"
  64. assert len(p["value"]) == 1
  65. assert p["value"][0] == "RequiredFileDoesNotExist"
  66. def check_willfail_property(p):
  67. assert is_dict(p)
  68. assert sorted(p.keys()) == ["name", "value"]
  69. assert is_string(p["name"])
  70. assert is_bool(p["value"])
  71. assert p["name"] == "WILL_FAIL"
  72. assert p["value"] == True
  73. def check_resource_groups_property(p):
  74. assert is_dict(p)
  75. assert sorted(p.keys()) == ["name", "value"]
  76. assert is_string(p["name"])
  77. assert is_list(p["value"])
  78. assert p["name"] == "RESOURCE_GROUPS"
  79. assert len(p["value"]) == 3
  80. assert is_dict(p["value"][0])
  81. assert sorted(p["value"][0].keys()) == ["requirements"]
  82. assert is_list(p["value"][0]["requirements"])
  83. assert len(p["value"][0]["requirements"]) == 2
  84. assert is_dict(p["value"][0]["requirements"][0])
  85. assert sorted(p["value"][0]["requirements"][0].keys()) == \
  86. [".type", "slots"]
  87. assert is_string(p["value"][0]["requirements"][0][".type"])
  88. assert p["value"][0]["requirements"][0][".type"] == "threads"
  89. assert is_int(p["value"][0]["requirements"][0]["slots"])
  90. assert p["value"][0]["requirements"][0]["slots"] == 2
  91. assert is_string(p["value"][0]["requirements"][1][".type"])
  92. assert p["value"][0]["requirements"][1][".type"] == "gpus"
  93. assert is_int(p["value"][0]["requirements"][1]["slots"])
  94. assert p["value"][0]["requirements"][1]["slots"] == 4
  95. assert is_dict(p["value"][1])
  96. assert sorted(p["value"][1].keys()) == ["requirements"]
  97. assert is_list(p["value"][1]["requirements"])
  98. assert len(p["value"][1]["requirements"]) == 2
  99. assert is_dict(p["value"][1]["requirements"][0])
  100. assert sorted(p["value"][1]["requirements"][0].keys()) == \
  101. [".type", "slots"]
  102. assert is_string(p["value"][1]["requirements"][0][".type"])
  103. assert p["value"][1]["requirements"][0][".type"] == "threads"
  104. assert is_int(p["value"][1]["requirements"][0]["slots"])
  105. assert p["value"][1]["requirements"][0]["slots"] == 2
  106. assert is_string(p["value"][1]["requirements"][1][".type"])
  107. assert p["value"][1]["requirements"][1][".type"] == "gpus"
  108. assert is_int(p["value"][1]["requirements"][1]["slots"])
  109. assert p["value"][1]["requirements"][1]["slots"] == 4
  110. assert is_dict(p["value"][2])
  111. assert sorted(p["value"][2].keys()) == ["requirements"]
  112. assert is_list(p["value"][2]["requirements"])
  113. assert len(p["value"][2]["requirements"]) == 2
  114. assert is_dict(p["value"][2]["requirements"][0])
  115. assert sorted(p["value"][2]["requirements"][0].keys()) == \
  116. [".type", "slots"]
  117. assert is_string(p["value"][2]["requirements"][0][".type"])
  118. assert p["value"][2]["requirements"][0][".type"] == "gpus"
  119. assert is_int(p["value"][2]["requirements"][0]["slots"])
  120. assert p["value"][2]["requirements"][0]["slots"] == 2
  121. assert is_string(p["value"][2]["requirements"][1][".type"])
  122. assert p["value"][2]["requirements"][1][".type"] == "threads"
  123. assert is_int(p["value"][2]["requirements"][1]["slots"])
  124. assert p["value"][2]["requirements"][1]["slots"] == 4
  125. def check_workingdir_property(p):
  126. assert is_dict(p)
  127. assert sorted(p.keys()) == ["name", "value"]
  128. assert is_string(p["name"])
  129. assert is_string(p["value"])
  130. assert p["name"] == "WORKING_DIRECTORY"
  131. assert p["value"].endswith("Tests/RunCMake/CTestCommandLine/ShowOnly")
  132. def check_properties(p):
  133. assert is_list(p)
  134. assert len(p) == 4
  135. check_resource_groups_property(p[0])
  136. check_reqfiles_property(p[1])
  137. check_willfail_property(p[2])
  138. check_workingdir_property(p[3])
  139. def check_tests(t):
  140. assert is_list(t)
  141. assert len(t) == 1
  142. test = t[0]
  143. assert is_dict(test)
  144. assert sorted(test.keys()) == ["backtrace", "command", "name", "properties"]
  145. assert is_int(test["backtrace"])
  146. assert test["backtrace"] == 1
  147. check_command(test["command"])
  148. assert is_string(test["name"])
  149. assert test["name"] == "ShowOnly"
  150. check_properties(test["properties"])
  151. assert is_dict(ctest_json)
  152. assert sorted(ctest_json.keys()) == ["backtraceGraph", "kind", "tests", "version"]
  153. check_backtracegraph(ctest_json["backtraceGraph"])
  154. check_kind(ctest_json["kind"])
  155. check_version(ctest_json["version"])
  156. check_tests(ctest_json["tests"])