Run the checks under bash, not sh
All checks were successful
IDS Compliance Check / ids-lint (push) Successful in 41s
IFC Validation / lint-ifc (push) Successful in 38s

First run on the ifc runner failed both jobs at exit 127 with
"shopt: not found". The runner executes a `run:` block with /bin/sh
(dash) unless the step says otherwise, where GitHub defaults to bash --
so `shopt -s globstar` died before either script reached a file.

Setting `shell: bash` explicitly is the fix. The `[[ ]]` tests and the
array handling in ids-lint need it too, so this is load-bearing rather
than tidiness.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T93BEAfP4jvcYo7oMo5AL1
This commit is contained in:
Bruno Postle 2026-08-31 17:11:06 +01:00
parent 087a4b9bee
commit 9a44d6ae37
2 changed files with 12 additions and 0 deletions

View file

@ -29,6 +29,12 @@ jobs:
uses: actions/checkout@v4
- name: Run IDS validations
# shell: bash is REQUIRED, not decoration. The runner executes `run:`
# blocks with /bin/sh (dash) unless told otherwise, so the GitHub
# original's `shopt -s globstar` dies with "shopt: not found" and
# exit 127 before the first file is checked. `[[ ]]` and arrays need
# bash too.
shell: bash
# Deliberately greps output instead of trusting the exit status:
# ifctester's CLI has no sys.exit anywhere, so a model that violates
# every rule still exits 0. A naive `run: ifctester ...` would be a

View file

@ -26,6 +26,12 @@ jobs:
uses: actions/checkout@v4
- name: Run IFC lint checks
# shell: bash is REQUIRED, not decoration. The runner executes `run:`
# blocks with /bin/sh (dash) unless told otherwise, so the GitHub
# original's `shopt -s globstar` dies with "shopt: not found" and
# exit 127 before the first file is checked. `[[ ]]` and arrays need
# bash too.
shell: bash
# Gates on its own exit status: ifcopenshell.validate calls sys.exit()
# on failure, so `set -e` fails the job.
run: |