validate_builders.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/usr/bin/env python3
  2. from __future__ import annotations
  3. if __name__ != "__main__":
  4. raise ImportError(f"{__name__} should not be used as a module.")
  5. import os
  6. import sys
  7. from typing import Any, Callable
  8. sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../"))
  9. from gles3_builders import build_gles3_header
  10. from glsl_builders import build_raw_header, build_rd_header
  11. FUNC_PATH_KWARGS: list[tuple[Callable[..., None], str, dict[str, Any]]] = [
  12. (
  13. build_gles3_header,
  14. "tests/python_build/fixtures/gles3/vertex_fragment.out",
  15. {"shader": "tests/python_build/fixtures/gles3/vertex_fragment.glsl"},
  16. ),
  17. (
  18. build_raw_header,
  19. "tests/python_build/fixtures/glsl/compute.out",
  20. {"shader": "tests/python_build/fixtures/glsl/compute.glsl"},
  21. ),
  22. (
  23. build_raw_header,
  24. "tests/python_build/fixtures/glsl/vertex_fragment.out",
  25. {"shader": "tests/python_build/fixtures/glsl/vertex_fragment.glsl"},
  26. ),
  27. (
  28. build_rd_header,
  29. "tests/python_build/fixtures/rd_glsl/compute.out",
  30. {"shader": "tests/python_build/fixtures/rd_glsl/compute.glsl"},
  31. ),
  32. (
  33. build_rd_header,
  34. "tests/python_build/fixtures/rd_glsl/vertex_fragment.out",
  35. {"shader": "tests/python_build/fixtures/rd_glsl/vertex_fragment.glsl"},
  36. ),
  37. ]
  38. def main() -> int:
  39. ret = 0
  40. for func, path, kwargs in FUNC_PATH_KWARGS:
  41. if os.path.exists(out_path := os.path.abspath(path)):
  42. with open(out_path, "rb") as file:
  43. raw = file.read()
  44. func(path, **kwargs)
  45. with open(out_path, "rb") as file:
  46. if raw != file.read():
  47. ret += 1
  48. else:
  49. func(path, **kwargs)
  50. ret += 1
  51. return ret
  52. sys.exit(main())