summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorhathach <[email protected]>2026-09-06 23:21:05 +0700
committerhathach <[email protected]>2026-09-06 23:21:05 +0700
commit831227a50876b25680a0d3fc4b5b0cc96e14f5bc (patch)
tree394bdf3f19cde01dab170fcae17afb4b5a3bf9e8 /tools
parent16156990c404bff8304c8a2fa6f205c4728ca95a (diff)
tools: require documented driver coveragerework-metrics
Diffstat (limited to 'tools')
-rw-r--r--tools/drivers_coverage_check.py11
1 files changed, 6 insertions, 5 deletions
diff --git a/tools/drivers_coverage_check.py b/tools/drivers_coverage_check.py
index 512b991d2..8c7cd7982 100644
--- a/tools/drivers_coverage_check.py
+++ b/tools/drivers_coverage_check.py
@@ -7,9 +7,8 @@ board's `drivers` list, or `uncovered`, covers it) and the HIL rig rosters
(test/hil/tinyusb.json, test/hil/hfp.json - which board family, if any, on
the physical rig builds it).
-Coverage GAPS are informational only and never fail the run: a membrowse gap
-documented in `uncovered` prints INFO, an undocumented one prints WARNING,
-and a driver with no rig board prints INFO. VALIDITY errors - malformed
+Documented membrowse gaps and drivers with no rig board are informational.
+An undocumented membrowse gap is fatal, as are validity errors: malformed
json, an unknown driver/board name, a board/driver mismatch, a board whose
family no CI toolchain actually builds (ci_set_matrix.family_list), a driver claimed by both
`boards` and `uncovered`, or an hcd_*/ehci/ohci claim on a board that
@@ -84,8 +83,7 @@ def load_boards(path):
def check(path):
- """Validity errors only - fatal, one line each. Coverage gaps (a driver
- with no CI board) are no longer errors; see membrowse_gaps()."""
+ """Fatal roster validity and undocumented coverage errors, one line each."""
errors = []
data = load_boards(path)
boards = data.get('boards')
@@ -159,6 +157,9 @@ def check(path):
if not (isinstance(reason, str) and reason.strip()):
errors.append(f'uncovered "{d}": reason must be a non-empty string')
+ for d in sorted(drivers - covered - set(uncovered)):
+ errors.append(f'membrowse: {d} has no CI board and no uncovered entry')
+
return errors