check_index.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import sys
  2. import os
  3. import json
  4. import re
  5. if sys.version_info[0] >= 3:
  6. unicode = str
  7. def is_bool(x):
  8. return isinstance(x, bool)
  9. def is_dict(x):
  10. return isinstance(x, dict)
  11. def is_list(x):
  12. return isinstance(x, list)
  13. def is_int(x):
  14. return isinstance(x, int) or isinstance(x, long)
  15. def is_string(x):
  16. return isinstance(x, str) or isinstance(x, unicode)
  17. def check_cmake(cmake):
  18. assert is_dict(cmake)
  19. assert sorted(cmake.keys()) == ["paths", "version"]
  20. check_cmake_version(cmake["version"])
  21. check_cmake_paths(cmake["paths"])
  22. def check_cmake_version(v):
  23. assert is_dict(v)
  24. assert sorted(v.keys()) == ["isDirty", "major", "minor", "patch", "string", "suffix"]
  25. assert is_string(v["string"])
  26. assert is_int(v["major"])
  27. assert is_int(v["minor"])
  28. assert is_int(v["patch"])
  29. assert is_string(v["suffix"])
  30. assert is_bool(v["isDirty"])
  31. def check_cmake_paths(v):
  32. assert is_dict(v)
  33. assert sorted(v.keys()) == ["cmake", "cpack", "ctest", "root"]
  34. assert is_string(v["cmake"])
  35. assert is_string(v["cpack"])
  36. assert is_string(v["ctest"])
  37. assert is_string(v["root"])
  38. def check_index_object(indexEntry, kind, major, minor, check):
  39. assert is_dict(indexEntry)
  40. assert sorted(indexEntry.keys()) == ["jsonFile", "kind", "version"]
  41. assert is_string(indexEntry["kind"])
  42. assert indexEntry["kind"] == kind
  43. assert is_dict(indexEntry["version"])
  44. assert sorted(indexEntry["version"].keys()) == ["major", "minor"]
  45. assert indexEntry["version"]["major"] == major
  46. assert indexEntry["version"]["minor"] == minor
  47. assert is_string(indexEntry["jsonFile"])
  48. filepath = os.path.join(reply_dir, indexEntry["jsonFile"])
  49. with open(filepath) as f:
  50. object = json.load(f)
  51. assert is_dict(object)
  52. assert "kind" in object
  53. assert is_string(object["kind"])
  54. assert object["kind"] == kind
  55. assert "version" in object
  56. assert is_dict(object["version"])
  57. assert sorted(object["version"].keys()) == ["major", "minor"]
  58. assert object["version"]["major"] == major
  59. assert object["version"]["minor"] == minor
  60. if check:
  61. check(object)
  62. def check_index__test(indexEntry, major, minor):
  63. def check(object):
  64. assert sorted(object.keys()) == ["kind", "version"]
  65. check_index_object(indexEntry, "__test", major, minor, check)
  66. def check_error(value, error):
  67. assert is_dict(value)
  68. assert sorted(value.keys()) == ["error"]
  69. assert is_string(value["error"])
  70. assert value["error"] == error
  71. reply_index = sys.argv[1]
  72. reply_dir = os.path.dirname(reply_index)
  73. with open(reply_index) as f:
  74. index = json.load(f)