From a8544c7cb047596c5bd8bf378c5e2764054f08ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Brunner?= Date: Wed, 30 Oct 2024 10:07:12 +0100 Subject: [PATCH] Add regenerate example files mode --- .github/workflows/main.yaml | 9 ++++++++- Makefile | 3 ++- buildtools/check-example | 11 +++++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 108253cf5dc8..39549aac7b13 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -34,6 +34,7 @@ jobs: env: PATH: /bin:/usr/bin:/usr/local/bin:/home/runner/.local/bin + REGENERATE_EXAMPLES: true steps: - name: GitHub event @@ -115,7 +116,10 @@ jobs: NODE_OPTIONS: --openssl-legacy-provider if: github.event_name != 'pull_request_target' - run: make check-examples-checker - if: github.event_name != 'pull_request_target' + if: | + github.event_name != 'pull_request_target' + && env.REGENERATE_EXAMPLES == 'false' + # Cypress tests - run: make serve-gmf-apps & if: github.event_name != 'pull_request_target' @@ -154,6 +158,9 @@ jobs: if-no-files-found: ignore retention-days: 5 if: always() + - run: find .build/examples-hosted ! -name *-ref.png -type f -exec rm {}; + if: env.REGENERATE_EXAMPLES == 'true' + - run: '[ ${REGENERATE_EXAMPLES} == false ]' - uses: actions/upload-artifact@v4 with: name: Examples hosted diff --git a/Makefile b/Makefile index 0e614efde42d..2c1bea81eef8 100644 --- a/Makefile +++ b/Makefile @@ -303,7 +303,8 @@ contribs/dist: .build/build-dll.timestamp mkdir -p $(dir $@) CI=true LANGUAGE=en_US buildtools/retry node buildtools/check-example.js \ .build/examples-hosted/error.html - ! buildtools/check-example .build/examples-hosted/error.html.png examples/error-ref.png + # Only if REGENERATE_EXAMPLES is not true + ! ( [ ${REGENERATE_EXAMPLES} != true ] && buildtools/check-example .build/examples-hosted/error.html.png examples/error-ref.png ) touch $@ # Add --generate as argument to buildtools/check-example to regenerate the reference images diff --git a/buildtools/check-example b/buildtools/check-example index 3e34eb37be2d..3c115dbc136e 100755 --- a/buildtools/check-example +++ b/buildtools/check-example @@ -85,8 +85,15 @@ def main(): ) result = float(result.stdout.decode().splitlines()[-1].split()[1]) if result > 0.01: - print(f"{result} > 0.01 => {diff}") - sys.exit(1) + if os.environ.get("REGENERATE_EXAMPLES") == "true": + shutil.copyfile(current, old_ref) + print(f"::error file={old_ref}:: Regenerate the ref image: {old_ref}") + + else: + print(f"{result} > 0.01 => {diff}") + sys.exit(1) + elif os.environ.get("REGENERATE_EXAMPLES") == "true": + os.remove(old_ref) if __name__ == "__main__":