Repository navigation
AIRUNTIME-2743: Add unsupported skip field to Catch2 config parser - #11308
Conversation
✅ All Policy Checks Passed
📖 Need help? See the Policy FAQ for details on every check and how to fix failures. |
|
🚫 Please fix the failed policies before requesting reviews. The following policy checks failed:
The |
CI verification:
|
| Platform | Expected | CI result |
|---|---|---|
| Windows (gfx1151) | disabled | ***Not Run (Disabled) |
| Linux (gfx950) | runs | executed |
This confirms the CI-critical [disabled] skip tag (and the [exclude_<entry>] promotions the compute-utils runner scripts consume) are byte-for-byte preserved when an entry lives in unsupported instead of disabled.
All build jobs passed (NVIDIA, Linux gfx950/gfx125X/gfx94X, Windows gfx1151). The MI455 test-stage red is an unrelated runner/infra failure (255/1278 tests failing across unrelated groups, container exit 137), and therock-pr-bot shows a poll-window timeout — neither is related to this change.
🤖 Claude Code 🤖
fabiomestre
left a comment
There was a problem hiding this comment.
I think we need to update rocm-systems/projects/hip-tests/TESTING.md (and potentially other documentation) to reflect these changes.
Otherwise, looks good to me.
35ac7be to
98af54f
Compare
ae89ca1 to
5372a65
Compare
Introduce an `unsupported:` skip field alongside the existing `disabled:`
field in the Catch2 config YAML. Both share the same syntax (a flat target
list, or a `{targets, reason}` mapping) and emit the same skip tags; they
differ only in intent. `unsupported:` marks a genuine capability gap (a
platform, architecture, or runtime mode that cannot run the case), while
`disabled:` marks a temporary or tracked defect.
Reason-field enforcement is intentionally deferred (AIRUNTIME-2744); the
validator only guards that each skip field is a list or a mapping with a
`targets` list, since a scalar breaks tag generation.
Changes:
- parse_config.py: emit skip tags for the `unsupported:` field
- check_config.py: validate `disabled`/`unsupported` field shape
- README.md, TESTING.md: document the unsupported field
5372a65 to
058abf4
Compare
TheRock Submodule Bump ActivityNewest first
|
Motivation
Phase 1 of AIRUNTIME-2743: introduce an
unsupportedskip field in the HIP Catch2 test-config parser to distinguish permanent skips (an OS/arch/config genuinely does not support a test) from the existingdisabledfield, which covers temporary skips (slow, flaky, or currently failing tests). This is a behavior-preserving refactor that adds the machinery only — generated output for existing entries is byte-identical.Technical Details
Both
disabledandunsupportedfeed the identical Catch2 tag match and[exclude_<entry>]promotion logic, so generated headers are unchanged for every existingdisabled-only entry.Each skip field may take one of two shapes:
disabled: [amd_windows](accepted unchanged for the unmigrated corpus), orOnly
targetsdrive tag generation;reasonis metadata that the parser ignores.Changes:
unsupportedskip field alongsidedisabled. A new_skip_targets()helper extracts the target list from either the flat-list or the{targets, reason}mapping form; the two fields are merged (skip_targets = disabled + unsupported, disabled first) and run through the existing tag-generation path. The--asanhelp text now mentions both fields.disabled/unsupported, when present, are either a list or a mapping whosetargetsis a list; any other shape (e.g. a bare scalar) is rejected. Thereasonis not enforced yet — the ~1,100 existing configs have not been migrated to carry reasons, so requiring one now would fail them. Reason enforcement is deferred to AIRUNTIME-2744 (noted in an inline comment). The existinglevel-presence check is untouched.Unit_hipGraphStreamPool_InstantiateFootprint) fromdisabled: [amd_windows]to theunsupportedmapping form with a reason, as a worked example of the larger migration to come.Two CI-critical invariants are preserved:
[disabled]Catch2 tag that drives CTest DISABLED registration.[exclude_<entry>]promotion tags consumed by the compute-utils hip test runner scripts.Reclassifying the ~1,100 existing entries and enforcing the reason field in CI are explicitly deferred to Phase 2.
Issue Tracking
JIRA ID: AIRUNTIME-2743
Phase 2 follow-up: AIRUNTIME-2744
Test Plan
parse_config.py+check_config.py).disabledandunsupportedwith separate reasons.targetslist) are rejected.Test Result
disabled-only entry.check_configexits 0.[disabled]onamd_wslandamd_windows, runs onamd_linux, and carries both[exclude_amd_wsl]and[exclude_amd_windows]promotions.targetsare both rejected with a clear group/case/field error.Unit_hipGraphStreamPool_InstantiateFootprint: on Windows (gfx1151) it reported***Not Run (Disabled)(unsupported →[disabled]→ CTest skip); on Linux (gfx950) it ran — validating both invariants above.Submission Checklist
🤖 Claude Code 🤖