Decouple Maven plugin unit tests from remote bootstrap tasks - #1007
Open
jormundur00 wants to merge 1 commit into
Open
Decouple Maven plugin unit tests from remote bootstrap tasks#1007jormundur00 wants to merge 1 commit into
jormundur00 wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
./gradlew -p native-maven-plugin testnow runs Maven plugin unit tests without building the plugin JAR, generating its Maven descriptor, preparing a Maven local repository, or launching embedded Maven. Unit tests use compiled class and resource directories directly.Descriptor generation, publication, inspections, and functional tests still use the packaged plugin descriptor and controlled Maven repositories. Offline functional work now validates a keyed, complete seed without modifying it and reports the recovery command when the seed is missing or stale.
Why
Transient Maven repository failures should not prevent ordinary unit tests from running after Gradle dependencies are available. Network-dependent repository seeding remains part of the integration boundary, while offline failures are deterministic and actionable when that prerequisite is genuinely required.
Fixes #985
Example
The unit-test task graph no longer schedules
jar,generatePluginDescriptor,prepareMavenLocalRepo, orvalidateMavenLocalRepo. For offline integration work with an invalid seed, validation fails before Maven starts with:Implementation summary
prepareMavenLocalReponow rebuilds a seed rejected by validation.Validation
The following checks passed:
grund checkgrund fmt . --marker --cross-refs --checkgit diff --check./gradlew -p native-maven-plugin/build-plugins test./gradlew -p native-maven-plugin --offline test --rerun-tasks./gradlew :native-maven-plugin:inspections./gradlew -p native-maven-plugin prepareMavenLocalRepo./gradlew -p native-maven-plugin --offline validateMavenLocalRepo./gradlew -p native-maven-plugin --offline validateMavenLocalRepo assemble./gradlew -p native-maven-plugin publishAllPublicationsToCommonRepositorytest --dry-runtask-graph assertions excluding the module JAR, descriptor, seed, and validation tasksMETA-INF/maven/plugin.xmlandplugin-help.xmlJavaApplicationFunctionalTesthelp:describedescriptor-loading scenarioThe full Maven functional matrix, full repository build, exact CI matrix, documentation render, and GraalVM/native-image jobs were not run in this environment. The external-Maven descriptor-loading scenario was not rerun during review cycle 2, and validation did not use a fresh isolated Gradle user home; the affected unit lifecycle was instead run offline with
--rerun-tasks.AI workflow
Generated by Rhei’s
github-issue-fixworkflow using 16 completed AI-assisted steps, 3 resolved models, and 2 focused review cycles.View AI workflow details
Approved proposal:
16eeea21f028a2e1.Model: openai:gpt-5.6-sol · Agent: codex · Reasoning effort: medium
Tokens: 869285 total · 855888 input (785536 cached) · 13397 output
Captured the issue, repository rules, specifications, and implementation scope.
Model: openai:gpt-5.6-sol · Agent: codex · Reasoning effort: medium
Tokens: 14701992 total · 14655788 input (14356736 cached) · 46204 output
Implemented the class-directory unit-test boundary and failure-safe Maven seed lifecycle.
Model: openai:gpt-5.6-sol · Agent: codex · Reasoning effort: medium
Tokens: 2765066 total · 2750625 input (2645376 cached) · 14441 output
Ran the initial grounding, build, task-graph, seed, descriptor, and functional validation.
Model: openai:gpt-5.6-terra · Agent: codex · Reasoning effort: medium
Tokens: 258674 total · 256091 input (213504 cached) · 2583 output
Checked the implementation against issue acceptance criteria and preserved CI coverage.
Model: openai:gpt-5.6-terra · Agent: codex · Reasoning effort: medium
Tokens: 255517 total · 252001 input (211456 cached) · 3516 output
Checked the amended architecture and end-to-end specifications and their citations.
Model: openai:gpt-5.6-terra · Agent: codex · Reasoning effort: medium
Tokens: 238414 total · 234116 input (191488 cached) · 4298 output
Inspected the implementation for behavior, safety, and regression coverage.
Model: openai:gpt-5.6-terra · Agent: codex · Reasoning effort: medium
Tokens: 164509 total · 161112 input (129280 cached) · 3397 output
Reviewed validation evidence and identified the seed up-to-date recovery blocker.
Model: openai:gpt-5.6-sol · Agent: codex · Reasoning effort: medium
Tokens: 238584 total · 236278 input (206208 cached) · 2306 output
Aggregated the first review cycle and routed the repair.
Model: openai:gpt-5.6-sol · Agent: codex · Reasoning effort: medium
Tokens: 578339 total · 573207 input (523264 cached) · 5132 output
Added seed validity to the task up-to-date predicate and a TestKit recovery regression.
Model: openai:gpt-5.6-sol · Agent: codex · Reasoning effort: medium
Tokens: 2772229 total · 2758101 input (2651776 cached) · 14128 output
Verified invalid-seed rejection, normal online recovery, offline reuse, and assembly.
Model: openai:gpt-5.6-terra · Agent: codex · Reasoning effort: medium
Tokens: 261272 total · 258782 input (218112 cached) · 2490 output
Rechecked issue fit after the repair with no requirements blockers.
Model: openai:gpt-5.6-terra · Agent: codex · Reasoning effort: medium
Tokens: 229933 total · 227607 input (183936 cached) · 2326 output
Rechecked strict grounding and the amended specification points with no blockers.
Model: openai:gpt-5.6-terra · Agent: codex · Reasoning effort: medium
Tokens: 565495 total · 558965 input (506240 cached) · 6530 output
Re-reviewed the repaired code and regression coverage with no implementation blockers.
Model: openai:gpt-5.6-terra · Agent: codex · Reasoning effort: medium
Tokens: 229414 total · 224250 input (188928 cached) · 5164 output
Re-reviewed focused validation and recorded the remaining environment-dependent checks.
Model: openai:gpt-5.6-sol · Agent: codex · Reasoning effort: medium
Tokens: 199023 total · 197091 input (172416 cached) · 1932 output
Confirmed no blockers and approved publication with the validation limitations disclosed above.
Model: openai:gpt-5.6-luna · Agent: codex · Reasoning effort: medium
Tokens: not finalized at PR creation
Committed the reviewed fix, pushed
graalvm:rhei/issue-985toorigin, opened the ready-for-review PR, and applied existing configured labels.Aggregate token usage: 24327746 total · 24199902 input (23184256 cached) · 127844 output
The aggregate excludes the current unfinalized publication step. Deterministic program routing is non-model work. Focused review cycles: 2. Review-repair cycles: 1. Accounting coverage: 15 finalized of 16 listed steps. Superseded attempts: none. Unmeasured attempts: none. Unsupported cache dimensions: input cache write, output cached read, and output cache write.