Repository navigation
ci: drop non-existent suites from the Linux and macOS test matrices - #6099
Conversation
dev/ci/check-suites.py only checked one direction: every suite in the source tree must appear in a workflow. It never checked the reverse, so six suite names that no longer exist stayed in the linux-test and macOS matrices. ParquetReadV2Suite was removed in apache#3671, and none of the six has a class, trait or object declaration in any sourceset. CI stays green only because the suites are passed as -DwildcardSuites, which silently ignores unmatched names; an explicit -Dsuites list fails with ClassNotFoundException. Add the forward check and remove the six dead lines. ParquetReadV1Suite and CometStringDecodeSuite are kept: the former is declared in ParquetReadSuite.scala and the latter in the spark-3.x sourceset used by the 3.4/3.5 profiles.
c120e89 to
f4810f0
Compare
sunchao
left a comment
There was a problem hiding this comment.
Summary
- Prior state and problem: Both CI matrices listed six nonexistent suites that
wildcardSuitessilently ignored. - Design approach: Remove those entries and extend
check-suites.pyto check workflow names against Scala sources. - Correctness / compatibility analysis: All six removed prefixes match no declarations in the checkout. Remaining matrix names have matching package declarations. Checked ScalaTest 3.2.16 discovery behavior and relevant Spark sources across supported 3.4–4.2 profiles. No introduced P1/P2 issues found within this review.
- Key design decisions: Scanning across source sets preserves version-specific suites and suites declared in differently named files. The implementation uses standard-library parsing without adding dependencies or unnecessary abstractions.
- Implementation sketch: Add declaration collection and undeclared-name diagnostics, then remove six entries from each workflow.
- Behavioral changes worth calling out: The checker now rejects the six stale entries. No active suite selection or Spark runtime behavior changes. The complete checker took approximately 0.36 seconds locally.
- Suggested improvements: None at the requested P1/P2 bar.
Reviewed the full three-file diff from 9a4d5f28368d4fbb54ac23c14c5d52d5637ce26d to f4810f0d836aa26f4723f5af7d5ce40b69d823a4. The PR is non-draft. Routed skill: review-comet-pr; no sibling area skills apply to this CI-only change. Snapshot and live discussion checks contained no reviews, comments, or threads.
Exact-head CI: label passed. Comet CI and CodeQL report action_required, with no jobs executed. Hosted build/test validation is therefore unavailable.
Local validation: check-suites.py, check-ci-config.py, and git diff --check passed. Disposable fixtures restored the base workflows and produced exactly 12 expected diagnostics, verified rejection of an unknown suite, and passed after restoring the head workflows. No full Maven/native build or Spark test suite was run. The checkout remains unchanged.
dev/ci/check-suites.py only checked one direction: every suite in the source tree must appear in a workflow. It never checked the reverse, so six suite names that no longer exist stayed in the linux-test and macOS matrices. ParquetReadV2Suite was removed in apache#3671, and none of the six has a class, trait or object declaration in any sourceset. CI stays green only because the suites are passed as -DwildcardSuites, which silently ignores unmatched names; an explicit -Dsuites list fails with ClassNotFoundException. Add the forward check and remove the six dead lines. ParquetReadV1Suite and CometStringDecodeSuite are kept: the former is declared in ParquetReadSuite.scala and the latter in the spark-3.x sourceset used by the 3.4/3.5 profiles.
Keep the verified refreshed tree while retaining the published head as an ancestor, allowing a normal push without rewriting history.
|
Updated against pinned main The reverse suite-declaration check remains: explicitly named matrix suites must resolve to real Scala suite declarations. Stale entries were removed from both Linux and macOS matrices; Verification on Apollo:
Full actionlint still reports unchanged ShellCheck findings in unedited shell fragments ( Updated head: Current-main diff correctionThe intended patch was rebased onto Suite/CI guards, bad-name and guard-knockout controls, syntax and workflow-only actionlint passed on this base. Upstream float-suite additions, allocator naming and encryption IT remain intact. There are now 152 matrix entries per workflow; the earlier 151 count belonged to the older base. Full ShellCheck still has unchanged upstream diagnostics, not a fully green verdict. Updated head: |
Which issue does this PR close?
None. Small CI-hygiene follow-up; no tracking issue.
Rationale for this change
dev/ci/check-suites.pyonly verified that every suite in the source tree islisted in a workflow. It never verified the reverse, so six suite names that no
longer exist remained in the
linux-testand macOS matrices:org.apache.comet.CometExpressionCoverageSuiteorg.apache.comet.exec.CometAsyncShuffleSuiteorg.apache.comet.exec.DisableAQECometAsyncShuffleSuiteorg.apache.comet.parquet.ParquetReadV2Suite(removed in chore: Remove deprecated SCAN_NATIVE_COMET constant and related test code #3671)org.apache.spark.sql.comet.ParquetDatetimeRebaseV1Suiteorg.apache.spark.sql.comet.ParquetDatetimeRebaseV2SuiteCI is green only because the suites are passed via
-DwildcardSuites, whichignores unmatched names; an explicit
-Dsuiteslist fails withClassNotFoundException. The matrices therefore claim coverage that does notrun, and nothing prevented a stale name from being re-added.
What changes are included in this PR?
dev/ci/check-suites.py: a suite listed ina workflow must be declared as a
class/trait/objectin some sourceset..github/workflows/pr_build_linux.ymland
.github/workflows/pr_build_macos.yml.ParquetReadV1SuiteandCometStringDecodeSuitestay listed: the former isdeclared in
ParquetReadSuite.scala, the latter in thespark-3.xsourcesetused by the 3.4/3.5 profiles.
How are these changes tested?
python3 dev/ci/check-suites.pyreports the six undeclared names (RED) beforethe removal, then prints
All workflow-listed suites are declaredand exits 0after it.