summaryrefslogtreecommitdiff
path: root/.pre-commit-config.yaml
diff options
context:
space:
mode:
Diffstat (limited to '.pre-commit-config.yaml')
-rw-r--r--.pre-commit-config.yaml33
1 files changed, 22 insertions, 11 deletions
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 17170b7d6..537ed3bc4 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -48,18 +48,29 @@ repos:
types_or: [c, header]
language: system
- # Two hooks, split by what each suite actually reads. The full discovery run costs
- # ~55s (deliberate hang/timeout simulations); only test_hil_select (~0.1s) reads
- # hw/bsp (board.cmake), src (portable dirs + class include graph) and examples
- # (tusb_config.h per test) -- renaming a board, port dir or example breaks it without
- # touching test/hil, and catching that here beats waiting for pre-commit CI.
+ # Two hooks, split by what each suite RUNS, not by what it reads: discovery is
+ # disjoint (test_hil*.py vs the two named suites) so nothing runs twice, but the
+ # file patterns overlap where both suites care. hil-test runs test_hil*.py only
+ # (~45s: deliberate hang and timeout simulations) and is scoped to the rig harness
+ # that owns them. The one part of it the selector depends on - the BottomLayer
+ # stdlib-closure AST guard over tools/ci_select.py and its imports - is named
+ # explicitly by ci-select-test instead, so a tools/ or workflow edit costs 4s
+ # rather than 80s of hang simulations that have nothing to say about it.
+ # ci-select-test runs the two selector-adjacent suites (~4s together) that read
+ # hw/bsp (board.cmake, FAMILY_MCUS), src (portable dirs + class include graph),
+ # examples (tusb_config.h, skip/only.txt), hw/mcu, the rig rosters under test/hil
+ # (a roster edit changes what the selector emits), .circleci (the sentinel contract
+ # config.yml rewrites config2.yml through) and .github/workflows (build.yml's own
+ # file hand-off and GITHUB_ENV guards) -- renaming a board, port dir or example
+ # breaks them without touching test/hil, and catching that here beats waiting for
+ # pre-commit CI.
# No types_or: the rig rosters (*.json) are inputs too.
# examples/device/mtp/src is in scope: test_hil_bounded parses README_TXT_CONTENT
# and md5-checks the logo header from there as its MTP fixtures.
- id: hil-test
name: hil-test
- files: ^(test/hil/|examples/device/mtp/src/)
- entry: python3 -m unittest discover -s test/hil/test
+ files: ^(test/hil/|examples/device/mtp/src/|tools/rtt\.py$)
+ entry: python3 -m unittest discover -s test/hil/test -p 'test_hil*.py'
pass_filenames: false
language: system
# hil-validate.js decides which boards ship. Its result join has been wrong three times --
@@ -71,10 +82,10 @@ repos:
entry: node .claude/workflows/test-hil-validate.mjs
pass_filenames: false
language: system
- - id: hil-select-test
- name: hil-select-test
- files: ^(hw/bsp/|src/|examples/)
- entry: python3 test/hil/test/test_hil_select.py
+ - id: ci-select-test
+ name: ci-select-test
+ files: ^(hw/bsp/|hw/mcu/|src/|examples/|test/hil/|tools/(ci_select|build|build_utils|get_deps|metrics|rtt)\.py$|\.github/(scripts|workflows)/|\.circleci/)
+ entry: sh -c "python3 test/hil/test/test_ci_select.py && python3 test/hil/test/test_ci_metrics.py && cd test/hil/test && python3 -m unittest -q test_hil_util.BottomLayer"
pass_filenames: false
language: system