From 0cfe01eff23459a1c0c516e02940cf21317f777d Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Mon, 30 Dec 2024 17:10:36 +0100 Subject: [PATCH] [CI] Re-add generated files consistency check --- .github/workflows/static_checks.yml | 4 +++ misc/scripts/check_get_file_list.py | 46 +++++++++++++++++++---------- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/.github/workflows/static_checks.yml b/.github/workflows/static_checks.yml index c8d27139..a3d81322 100644 --- a/.github/workflows/static_checks.yml +++ b/.github/workflows/static_checks.yml @@ -32,3 +32,7 @@ jobs: uses: pre-commit/action@v3.0.1 with: extra_args: --verbose --hook-stage manual --files ${{ env.CHANGED_FILES }} + + - name: Check generated files consistency + run: + python misc/scripts/check_get_file_list.py diff --git a/misc/scripts/check_get_file_list.py b/misc/scripts/check_get_file_list.py index 33bc6b62..ac90777a 100755 --- a/misc/scripts/check_get_file_list.py +++ b/misc/scripts/check_get_file_list.py @@ -6,26 +6,40 @@ from pathlib import Path sys.path.insert(1, os.path.join(os.path.dirname(__file__), "..", "..")) -from binding_generator import generate_bindings, get_file_list +from binding_generator import _generate_bindings, _get_file_list +from build_profile import generate_trimmed_api api_filepath = "gdextension/extension_api.json" bits = "64" precision = "single" output_dir = "self_test" -generate_bindings(api_filepath, use_template_get_node=False, bits=bits, precision=precision, output_dir=output_dir) -flist = get_file_list(api_filepath, output_dir, headers=True, sources=True) -p = Path(output_dir) / "gen" -allfiles = [str(f.as_posix()) for f in p.glob("**/*.*")] -missing = list(filter((lambda f: f not in flist), allfiles)) -extras = list(filter((lambda f: f not in allfiles), flist)) -if len(missing) > 0 or len(extras) > 0: - print("Error!") - for f in missing: - print("MISSING: " + str(f)) - for f in extras: - print("EXTRA: " + str(f)) - sys.exit(1) -else: - print("OK!") +def test(profile_filepath=""): + api = generate_trimmed_api(api_filepath, profile_filepath) + _generate_bindings( + api, + use_template_get_node=False, + bits=bits, + precision=precision, + output_dir=output_dir, + ) + flist = _get_file_list(api, output_dir, headers=True, sources=True) + + p = Path(output_dir) / "gen" + allfiles = [str(f.as_posix()) for f in p.glob("**/*.*")] + missing = list(filter((lambda f: f not in flist), allfiles)) + extras = list(filter((lambda f: f not in allfiles), flist)) + if len(missing) > 0 or len(extras) > 0: + print("Error!") + for f in missing: + print("MISSING: " + str(f)) + for f in extras: + print("EXTRA: " + str(f)) + sys.exit(1) + else: + print("OK!") + + +test() +test("test/build_profile.json")