diff options
author | Harmen Stoppels <me@harmenstoppels.nl> | 2024-09-18 09:07:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-18 09:07:23 +0200 |
commit | 28e3295fb04d8d502b2fae7894f1942af86875aa (patch) | |
tree | 50f63e672b04f41ea1e88f0dabe828d2263e6106 /.github | |
parent | 314a3fbe7735cf2b07cceb4e2e1f4c8bca75e100 (diff) | |
download | spack-28e3295fb04d8d502b2fae7894f1942af86875aa.tar.gz spack-28e3295fb04d8d502b2fae7894f1942af86875aa.tar.bz2 spack-28e3295fb04d8d502b2fae7894f1942af86875aa.tar.xz spack-28e3295fb04d8d502b2fae7894f1942af86875aa.zip |
Add GHA for circular imports regressions (#46436)
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/valid-style.yml | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/.github/workflows/valid-style.yml b/.github/workflows/valid-style.yml index feaa64484e..8bc58efff7 100644 --- a/.github/workflows/valid-style.yml +++ b/.github/workflows/valid-style.yml @@ -87,3 +87,62 @@ jobs: spack -d bootstrap now --dev spack style -t black spack unit-test -V + import-check: + runs-on: ubuntu-latest + steps: + - uses: julia-actions/setup-julia@v2 + with: + version: '1.10' + - uses: julia-actions/cache@v2 + + # PR: use the base of the PR as the old commit + - name: Checkout PR base commit + if: github.event_name == 'pull_request' + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + with: + ref: ${{ github.event.pull_request.base.sha }} + path: old + # not a PR: use the previous commit as the old commit + - name: Checkout previous commit + if: github.event_name != 'pull_request' + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + with: + fetch-depth: 2 + path: old + - name: Checkout previous commit + if: github.event_name != 'pull_request' + run: git -C old reset --hard HEAD^ + + - name: Checkout new commit + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + with: + path: new + - name: Install circular import checker + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + with: + repository: haampie/circular-import-fighter + ref: 555519c6fd5564fd2eb844e7b87e84f4d12602e2 + path: circular-import-fighter + - name: Install dependencies + working-directory: circular-import-fighter + run: make -j dependencies + - name: Import cycles before + working-directory: circular-import-fighter + run: make SPACK_ROOT=../old && cp solution solution.old + - name: Import cycles after + working-directory: circular-import-fighter + run: make clean-graph && make SPACK_ROOT=../new && cp solution solution.new + - name: Compare import cycles + working-directory: circular-import-fighter + run: | + edges_before="$(grep -oP 'edges to delete: \K\d+' solution.old)" + edges_after="$(grep -oP 'edges to delete: \K\d+' solution.new)" + if [ "$edges_after" -gt "$edges_before" ]; then + printf '\033[1;31mImport check failed: %s imports need to be deleted, ' "$edges_after" + printf 'previously this was %s\033[0m\n' "$edges_before" + printf 'Compare \033[1;97m"Import cycles before"\033[0m and ' + printf '\033[1;97m"Import cycles after"\033[0m to see problematic imports.\n' + exit 1 + else + printf '\033[1;32mImport check passed: %s <= %s\033[0m\n' "$edges_after" "$edges_before" + fi |