Skip to content

FELIX-6870 - Run the integration tests against the code being built - #573

Open
paulrutter wants to merge 2 commits into
feature/FELIX-6759-Java-25-LTSfrom
FELIX-6870-test-against-built-code
Open

paulrutter wants to merge 2 commits into
feature/FELIX-6759-Java-25-LTSfrom
FELIX-6870-test-against-built-code

Conversation

@paulrutter

Copy link
Copy Markdown
Contributor

Fixes FELIX-6870.

Stacked on #433, so it targets feature/FELIX-6759-Java-25-LTS rather than master. See Why not master below.

The problem

Modules across the repository pin released Felix sibling bundles as dependencies of their tests, so pax-exam and the bnd resolver exercise released artifacts instead of the code in this repository. A regression introduced here can pass CI unnoticed — which is exactly how the FilterImpl.WrapperCapability bug fixed in #554 survived on master until the HTTP tests were pointed at the local build in #571.

The change

Every such pin becomes a property that still defaults to the latest release, so each module keeps building on its own. CI builds and installs a producing module whenever it or one of its consumers changed, and overrides the property with the version built here:

producer consumers pin was
framework configadmin, scr, http, gogo itests 7.0.5 / 7.0.1 / 6.0.1
configadmin scr 1.9.0
utils resolver 1.8.0
gogo bundles gogo/jline, itest-shell, itest-jline 1.1.2 / 1.1.4 / 1.1.8

Two findings beyond the original survey:

  • http/itest still pinned framework 7.0.5 — missed by FELIX-6869 - Run the HTTP integration tests on a current JDK and on this framework #571, which only covered jetty and jetty12.
  • The gogo itest modules resolved against none of the code in this repository. They take their versions from an imported BOM that pins released bundles, and the import is itself stale (gogo.bom:1.0.3-SNAPSHOT against 1.0.7-SNAPSHOT in the reactor). They now carry explicit, overridable versions.

The version-resolving step evaluates the gogo modules inside the gogo reactor, because gogo-parent:7-SNAPSHOT is not published anywhere (verified: 404 on repository.apache.org/snapshots) and a standalone help:evaluate would fail on a clean runner.

Deliberately left alone

  • framework.security stays pinned at 2.8.3: it is no longer built here (removed in the 8.0.0 framework line, FELIX-6807) and its only consumer, ConfigAdminSecurityTest, is already excluded.
  • ipojo, since its removal is already proposed separately.

Why not master

resolver and configadmin cannot compile on JDK 21 or 25 on master — felix.java.version 6 and felix-parent 6 (release 7) respectively. CI hides this because those steps only run when the module itself changed, and neither has changed in a long time. Touching their poms makes CI run them and go red on two of the three matrix JDKs. #433 already raises both baselines, so stacking there is what makes this ticket implementable at all.

Verification

Run locally on JDK 25 against the in-repo bundles:

check result
http reactor on framework 8.0.0-SNAPSHOT ✅ all 13 modules, 162 itest tests pass (was 7.0.5)
gogo reactor, all overrides incl. framework 8.0.0-SNAPSHOT ✅ BUILD SUCCESS; bnd resolver resolves both itest modules
resolver on utils 1.11.11-SNAPSHOT ✅ BUILD SUCCESS, 28 tests
help:evaluate for all 7 producer poms ✅ reactor-scoped form resolves every one

configadmin and scr integration tests could not be verified locally: on Windows they fail in pax-tinybundles with IOException: Access is denied from File.createTempFile, and control runs on the original pins fail identically (configadmin: 44 errors either way). That is a harness limitation of this machine, not a result of these overrides — CI on Linux is the real verdict for those two.

🤖 Generated with Claude Code

paulrutter and others added 2 commits October 9, 2026 11:09
Modules across the repository pin released Felix sibling bundles as
dependencies of their tests, so pax-exam and the bnd resolver exercise
released artifacts instead of the code in this repository. Regressions
introduced here can therefore pass CI unnoticed, which is how the
FilterImpl.WrapperCapability bug fixed in FELIX-6869 survived on master.

Every such pin becomes a property that still defaults to the latest
release, so each module keeps building on its own. CI now builds and
installs a producing module whenever it or one of its consumers changed,
and overrides the property with the version built here:

  framework      -> configadmin, scr, http, gogo
  configadmin    -> scr
  utils          -> resolver
  gogo bundles   -> gogo itest-shell, itest-jline, jline

The two gogo itest modules took their versions from an imported BOM that
pins released bundles, so they resolved against none of the code in this
repository; they now carry explicit, overridable versions.

http/itest kept a 7.0.5 framework pin that FELIX-6869 missed.

The step that resolves the versions evaluates the gogo modules inside the
gogo reactor, because gogo-parent is not published anywhere.

framework.security is left pinned: it is no longer built here (removed in
the 8.0.0 framework line, FELIX-6807) and its only consumer,
ConfigAdminSecurityTest, is excluded.

ipojo is left alone, since its removal is already proposed separately.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
27 was taken out again in d347835 because Aries SpiFly 1.3.7 bundles
ASM 9.6, which rejects class file major version 71, so its weaving hook
threw for every class and Jetty never finished starting. FELIX-6869 since
provisions ASM 9.10.1 alongside the SpiFly bundle, which does know version
71, so the blocker should be gone. The framework and the TCK already passed
on 27 when that was checked separately.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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