diff --git a/.github/workflows/hyperfine.yaml b/.github/workflows/hyperfine.yaml index f12655d71..e7ef9307e 100644 --- a/.github/workflows/hyperfine.yaml +++ b/.github/workflows/hyperfine.yaml @@ -3,6 +3,7 @@ name: Hyperfine Benchmark on: pull_request: branches: ["**"] + paths-ignore: ["spec/**"] concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/pr_spec.yaml b/.github/workflows/pr_spec.yaml new file mode 100644 index 000000000..08bf81c4b --- /dev/null +++ b/.github/workflows/pr_spec.yaml @@ -0,0 +1,25 @@ +name: Spec tests +on: + pull_request: + branches: + - main + - 'spec/**' + push: + branches: ["**"] + paths: ["spec/**"] + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + spec_structure: + name: Spec structure test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-python@v6 + - run: python3 spec/tooling/chip.py spec/src/config.toml spec/src/signatures.toml spec/src/*.toml diff --git a/spec/tooling/chip.py b/spec/tooling/chip.py index 688743754..15339c10c 100644 --- a/spec/tooling/chip.py +++ b/spec/tooling/chip.py @@ -1043,6 +1043,7 @@ def check_signatures(found: Iterable[Signature], expected: list[Signature]): signatures = read_signatures(config, sys.argv[2]) if reporter.reported: sys.exit(1) + reported = False chips: list[Chip] = [] for file in sys.argv[3:]: @@ -1050,7 +1051,15 @@ def check_signatures(found: Iterable[Signature], expected: list[Signature]): continue chips.append(Chip.from_file(config, file)) reported |= reporter.reported - if not reported: - for chip in chips: - reporter.update_location(f"Chip {chip.name}") - check_signatures(chip.typecheck(), signatures) + if reported: + sys.exit(1) + + for chip in chips: + reporter.update_location(f"Chip {chip.name}") + check_signatures(chip.typecheck(), signatures) + reported |= reporter.reported + if reported: + sys.exit(1) + else: + print("No issues were found.") + sys.exit(0)