Skip to content

test: contrib Delta own-suite regression harness [Delta contrib split, part 7] - #11

Draft
schenksj wants to merge 2 commits into
pr/delta-A6a-test-batteryfrom
pr/delta-A6b-regression
Draft

schenksj wants to merge 2 commits into
pr/delta-A6a-test-batteryfrom
pr/delta-A6b-regression

Conversation

@schenksj

Copy link
Copy Markdown
Owner

Part 7 of the Delta Lake contrib PR breakup (stacked on part 6 / #10). Fork-local review draft.

Adds the harness that runs Delta Lake's own test suites against a Comet build — proving the contrib reads stay correct across the full upstream Delta corpus, not just Comet's contrib suites from part 6. Test/CI tooling only — no production, native, or main code.

What this adds

  • contrib/delta/dev/diffs/{3.3.2,4.0.0,4.1.0}.diff — per-Delta-version patches that wire a locally-published Comet into Delta's sbt build and enable Comet on Delta's own test session. Verified to git apply --check cleanly against the upstream v3.3.2 / v4.0.0 / v4.1.0 source tags.
  • run-regression.sh — clone the Delta tag → apply diff → build+install Comet for the matching Spark profile → run smoke/lite/full. Derives cometVersion from the comet pom so the diff's injected version stays in lockstep.
  • run-test.sh — rerun a single Delta suite (or -z name filter) against a prepared checkout.
  • .github/workflows/delta_regression_test.yml — smoke per (Spark, Delta) pair on PRs; fuller filtered sweep on push-to-main / dispatch.

No -Dspark.version=4.1.1 pin needed here

Unlike part 6's contrib unit tests, the regression run executes Delta's own suite, where Delta's build selects its own compatible Spark (Delta 4.1.0 → Spark 4.1.0 via CrossSparkVersions). So delta-spark 4.1.0 never runs on the pom's 4.1.2 and the removed-IgnoreCachedData skew can't occur.

Robustness/portability hardening (review-driven; improves on the integration branch)

  • run-regression.sh: || true on the cometVersion auto-derive so a future regex miss reaches the documented WARNING+fallback instead of aborting under set -o pipefail; graceful re-clone when a reused DELTA_WORKDIR lacks the requested tag (was a hard git checkout abort); removed the dead 2.4.0 case; documented the COMET_PUBLISH_DIR/diff-path coupling.
  • run-test.sh: replaced a hardcoded personal JAVA_HOME fallback with the macOS java_home helper → java on PATH (no developer-specific path).
  • workflow: scoped the PR trigger to Delta-affecting paths (contrib, native, SPI/rule/serde wiring, poms) so unrelated PRs skip the expensive build+clone+smoke; corrected the misleading "matching smoke cell" comment (needs is job-level); made the smoke-on-PR / full-on-merge tradeoff explicit.

Verification

All three diffs apply cleanly to the real upstream Delta tags; both scripts pass bash -n; the workflow YAML parses; run-regression.sh carries the pipefail-safe cometVersion auto-derive. The diffs are byte-identical to the integration branch where the sweeps were actually executed. A local full/smoke run is deferred (the full Delta-3.3.2 sweep is ~29h and the gated heavyweight per the plan; this host is disk-constrained) and runs via the workflow.


🤖 This PR was prepared with the assistance of Claude (Anthropic). A human author reviewed and is responsible for the content.

@schenksj
schenksj force-pushed the pr/delta-A6b-regression branch from f0dcb24 to c65b636 Compare June 22, 2026 02:32
schenksj added a commit that referenced this pull request Jun 22, 2026
@schenksj
schenksj force-pushed the pr/delta-A6a-test-battery branch from 9a1ef06 to f514d2c Compare June 29, 2026 13:29
@schenksj
schenksj force-pushed the pr/delta-A6b-regression branch from c65b636 to 6093760 Compare June 29, 2026 13:29
@schenksj
schenksj force-pushed the pr/delta-A6a-test-battery branch from f514d2c to bab4421 Compare August 16, 2026 01:28
@schenksj
schenksj force-pushed the pr/delta-A6b-regression branch from 6093760 to 78b2999 Compare August 16, 2026 01:28
@schenksj
schenksj force-pushed the pr/delta-A6a-test-battery branch from bab4421 to 4e2e6f9 Compare August 18, 2026 15:16
@schenksj
schenksj force-pushed the pr/delta-A6b-regression branch from 78b2999 to fff8e96 Compare August 18, 2026 15:16
@schenksj
schenksj force-pushed the pr/delta-A6a-test-battery branch from 4e2e6f9 to ba02ee4 Compare August 18, 2026 18:09
@schenksj
schenksj force-pushed the pr/delta-A6b-regression branch from fff8e96 to b36ab22 Compare August 18, 2026 18:09
@schenksj
schenksj force-pushed the pr/delta-A6a-test-battery branch from ba02ee4 to d24fa29 Compare August 18, 2026 19:44
@schenksj
schenksj force-pushed the pr/delta-A6b-regression branch from b36ab22 to d15748f Compare August 18, 2026 19:44
@schenksj
schenksj force-pushed the pr/delta-A6a-test-battery branch from d24fa29 to 5dcc2b3 Compare August 19, 2026 03:12
@schenksj
schenksj force-pushed the pr/delta-A6b-regression branch from d15748f to 66bb165 Compare August 19, 2026 03:12
@schenksj
schenksj force-pushed the pr/delta-A6a-test-battery branch from 5dcc2b3 to 4d969cd Compare August 19, 2026 10:59
@schenksj
schenksj force-pushed the pr/delta-A6b-regression branch 2 times, most recently from 224909b to bf6d41e Compare August 20, 2026 14:31
@schenksj
schenksj force-pushed the pr/delta-A6a-test-battery branch from 4d969cd to 9765141 Compare August 20, 2026 14:31
@schenksj
schenksj force-pushed the pr/delta-A6b-regression branch from bf6d41e to 11860d4 Compare August 20, 2026 14:51
@schenksj
schenksj force-pushed the pr/delta-A6a-test-battery branch 2 times, most recently from 9aab93e to 4498e47 Compare August 20, 2026 16:58
@schenksj
schenksj force-pushed the pr/delta-A6b-regression branch from 11860d4 to 3d36966 Compare August 20, 2026 16:58
@schenksj
schenksj force-pushed the pr/delta-A6a-test-battery branch from 4498e47 to 6a8d98b Compare August 20, 2026 17:47
@schenksj
schenksj force-pushed the pr/delta-A6b-regression branch 2 times, most recently from fcf506d to f0cce60 Compare August 20, 2026 20:01
@schenksj
schenksj force-pushed the pr/delta-A6a-test-battery branch from 6a8d98b to 8ca28cc Compare August 20, 2026 20:01
…, part 7]

Adds the harness that runs Delta Lake's OWN test suites against a Comet build,
proving the contrib reads stay correct across the full upstream Delta test
corpus (not just Comet's contrib suites from part 6).

What this adds (test/CI tooling only -- no production, native, or main code):
- contrib/delta/dev/diffs/{3.3.2,4.0.0,4.1.0}.diff: per-Delta-version patches
  that wire a locally-published Comet into Delta's sbt build and enable Comet on
  Delta's own test session. Verified to `git apply --check` cleanly against the
  upstream v3.3.2 / v4.0.0 / v4.1.0 source tags.
- contrib/delta/dev/run-regression.sh: clones the target Delta tag, applies the
  diff, builds+installs Comet for the matching Spark profile (FAST=1 skips
  spotless/RAT/javadoc and uses the release dylib), and runs the smoke / lite /
  full sweep. Derives cometVersion from the comet pom so the diff's injected
  version stays in lockstep with the checkout.
- contrib/delta/dev/run-test.sh: local helper to rerun a single Delta suite (or
  a -z name filter) against an already-prepared regression checkout.
- .github/workflows/delta_regression_test.yml: smoke job per (Spark, Delta) pair
  on PRs, plus a fuller filtered sweep on push-to-main / dispatch.

No -Dspark.version=4.1.1 pin is needed here (unlike part 6's contrib unit tests):
the regression run executes Delta's OWN test suite, where Delta's build selects
its own compatible Spark version (Delta 4.1.0 -> Spark 4.1.0 via its
CrossSparkVersions), so delta-spark 4.1.0 never runs on the pom's 4.1.2 and the
removed-IgnoreCachedData skew cannot occur. The Comet install compiles against
4.1.2 but references no removed API.

Robustness/portability hardening (review-driven, improving on the integration branch):
- run-regression.sh: `|| true` on the cometVersion auto-derive so a future regex
  miss reaches the documented WARNING+hardcoded-fallback instead of aborting under
  `set -o pipefail`; graceful re-clone when a reused DELTA_WORKDIR lacks the
  requested tag (was a hard `git checkout` abort); removed the dead `2.4.0` case
  (no 2.4.0.diff exists); documented the COMET_PUBLISH_DIR/diff-path coupling.
- run-test.sh: replaced a hardcoded personal JAVA_HOME fallback with the macOS
  java_home helper, falling back to `java` on PATH (no developer-specific path).
- delta_regression_test.yml: scoped the PR trigger to Delta-affecting paths
  (contrib, native, the SPI/rule/serde wiring, poms) so unrelated PRs skip the
  expensive build+clone+smoke; corrected the misleading "matching smoke cell"
  comment (GitHub `needs` is job-level) and made the smoke-on-PR / full-on-merge
  cost tradeoff explicit.

Verification: all three diffs apply cleanly to the real upstream Delta tags; both
scripts pass `bash -n`; the workflow YAML parses; run-regression.sh carries the
pipefail-safe cometVersion auto-derive. The diffs are byte-identical to the
integration branch, where the sweeps were actually executed. A local full/smoke
run is deferred (the full Delta-3.3.2 sweep is ~29h and the gated heavyweight per
the plan; this host is disk-constrained) and runs via the workflow.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01BtErWgRQKCDRAg8Mk6qR4G

Post-review fix (found running the 4.1 full regression locally): the SBT_REPO_OVERRIDE
array expansion used the bare `"${SBT_REPO_OVERRIDE[@]}"`, which is an empty array on
the 4.x cells -- and macOS's stock bash 3.2 treats `"${empty[@]}"` as an unbound variable
under `set -u` (bash >= 4.4 / Linux CI tolerates it, so CI never hit it). Switched the four
call sites to the portable `${SBT_REPO_OVERRIDE[@]+"${SBT_REPO_OVERRIDE[@]}"}` alternation.
…n-suite scan finders [themeB, folded into A.6b]
@schenksj
schenksj force-pushed the pr/delta-A6a-test-battery branch from 8ca28cc to 4a87a19 Compare August 21, 2026 01:33
@schenksj
schenksj force-pushed the pr/delta-A6b-regression branch from f0cce60 to 5fce6d8 Compare August 21, 2026 01:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant