[CI] Migrate JIT tests missed by #29066 to runner_config registration (#29715)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Mohammad Miadh Angkad <176301910+mmangkad@users.noreply.github.com>
This commit is contained in:
Khoa Pham
2026-06-29 23:21:14 -07:00
committed by GitHub
co-authored by Claude Opus 4.8 Mohammad Miadh Angkad
parent dad0120c57
commit dbb51c46ac
18 changed files with 71 additions and 27 deletions
+41 -8
View File
@@ -4,13 +4,18 @@ Pre-commit hook: validate CI registry calls under test/registered/.
1. Every test file must contain a CI registry call (register_cuda_ci,
register_amd_ci, etc.).
2. A CUDA test must not register a `{stage}-test-{runner_config}`-shaped suite
via the legacy single-string `suite=`: that form is not dispatchable via
/rerun-test. Use the modern `stage=`/`runner_config=` form instead -- it
resolves to the identical suite (CIRegistry.effective_suite is
f"{stage}-test-{runner_config}"), so same stage and same runner, just
/rerun-test-able. Legacy `suite=` stays valid for nightly/stress/weekly +
AMD/CPU/NPU suites whose names don't follow that shape.
2. A CUDA test must register its PR-test suite via the modern
`stage=`/`runner_config=` form. The legacy single-string `suite=` is reserved
for the nightly/stress/weekly families (and for AMD/CPU/NPU suites); any other
CUDA `suite=` resolves to a name no PR-test workflow invokes, so the test
silently never runs. Two shapes are rejected:
a. `{stage}-test-{runner_config}` -- the modern name stuffed back into the
legacy form. Reported with the exact stage/runner split to use.
b. an older `{stage}-{runner_config}` PR-test name (e.g. the pre-migration
`base-b-kernel-unit-1-gpu-large`) -- no longer matches any workflow
suite at all.
The modern form resolves to the identical suite (CIRegistry.effective_suite
is f"{stage}-test-{runner_config}") and is /rerun-test-able.
Reuses ut_parse_one_file() from ci_register.py (AST-based parsing)
to match the same logic used by run_suite.py's collect_tests().
@@ -27,6 +32,12 @@ import sys
# shape is always expressible (and should be expressed) the modern way.
_MODERN_SHAPE = re.compile(r"^(.+)-test-(.+)$")
# The only suite families a CUDA registry may keep on the legacy single-string
# `suite=` form. Everything else is a PR-test/base stage that must use the
# modern stage=/runner_config= form (otherwise its effective_suite matches no
# suite the PR-test workflows invoke, and the test silently never runs).
_LEGACY_CUDA_PREFIXES = ("nightly", "stress", "weekly")
def main() -> int:
# Import ci_register directly to avoid pulling in all of sglang
@@ -48,7 +59,8 @@ def main() -> int:
return 0
missing = []
legacy_shape = [] # (file, suite, stage, runner_config)
legacy_shape = [] # (file, suite, stage, runner_config) -- has a -test- split
non_dispatchable = [] # (file, suite) -- legacy CUDA suite no workflow invokes
for f in files:
try:
registries, _has_main_entry = ci_register.ut_parse_one_file(f)
@@ -67,9 +79,15 @@ def main() -> int:
and r.runner_config is None
):
continue
# nightly/stress/weekly are the only CUDA suites allowed to stay on
# the legacy single-string form.
if r.suite.split("-", 1)[0] in _LEGACY_CUDA_PREFIXES:
continue
m = _MODERN_SHAPE.match(r.suite)
if m:
legacy_shape.append((f, r.suite, m.group(1), m.group(2)))
else:
non_dispatchable.append((f, r.suite))
exit_code = 0
if missing:
@@ -94,6 +112,21 @@ def main() -> int:
)
print()
exit_code = 1
if non_dispatchable:
print(
'ERROR: CUDA test(s) register a legacy `suite="..."` that is neither a '
"nightly/stress/weekly suite nor the modern `stage=`/`runner_config=` "
"form. This name matches no suite the PR-test workflows invoke, so the "
"test silently never runs. Switch to the modern form:\n"
)
for f, suite in non_dispatchable:
print(
f" {f}\n"
f' suite="{suite}"'
f' -> stage="...", runner_config="..."'
)
print()
exit_code = 1
return exit_code