fix(SUPP-28): bump testcontainers 1.20.4 → 1.21.4 for Docker 25+ compat #29

Merged
mprihoda merged 3 commits from SUPP-28 into main 2026-05-15 15:38:02 +00:00
mprihoda commented 2026-05-15 10:04:15 +00:00 (Migrated from github.com)

Summary

  • Bumps org.testcontainers:{testcontainers,postgresql,mysql} from 1.20.4 to 1.21.4 (3-line build.mill change).
  • Fixes silent-skip of testcontainer-backed specs on Docker engine 25+ (verified on 29.1.3): prior versions hard-coded a fallback to Docker API 1.32 in DockerClientProviderStrategy.getClientForConfig; modern engines reject 1.32 (min 1.44).
  • testcontainers-java 1.21.4 (2025-12-15) is the upstream backport — release notes: "This release makes version 1.21.x works with recent Docker Engine changes." No forkArgs / -Dapi.version override needed.

Why this fix (not a Mill TestModule mixin)

The issue originally proposed a Mill TestModule mixin to pin -Dapi.version=1.46 via forkArgs. Reviewing the upstream landscape revealed that testcontainers had already shipped a fix in 1.21.4 (and 2.0.3), so the workaround is unnecessary. See project-management/issues/SUPP-28/analysis.md for the original analysis and the prepended ## Resolution block explaining why the workaround was superseded.

Verification

Run against Docker engine 29.1.3 (API 1.52, min 1.44):

Module Tests Ignored Container Wire confirms
sqldb-postgresql.test 50 passed (7 specs) 0 postgres:17-alpine started User-Agent: tc-java/1.21.4, requests on /v1.44/containers/...
sqldb-mysql.test 10 passed 0 mysql:8.0 started same

Full repo ./mill __.test green via pre-push hook.

Upstream context

Test plan

  • ./mill sqldb-postgresql.test passes on Docker 29.1.3 with real containers (no silent skips)
  • ./mill sqldb-mysql.test passes on Docker 29.1.3 with real containers (no silent skips)
  • Full ./mill __.test green (pre-push hook)
  • CI green on main merge

Closes #28

🤖 Generated with Claude Code

## Summary - Bumps `org.testcontainers:{testcontainers,postgresql,mysql}` from `1.20.4` to `1.21.4` (3-line `build.mill` change). - Fixes silent-skip of testcontainer-backed specs on Docker engine 25+ (verified on 29.1.3): prior versions hard-coded a fallback to Docker API `1.32` in `DockerClientProviderStrategy.getClientForConfig`; modern engines reject `1.32` (min `1.44`). - `testcontainers-java 1.21.4` (2025-12-15) is the upstream backport — release notes: *"This release makes version 1.21.x works with recent Docker Engine changes."* No `forkArgs` / `-Dapi.version` override needed. ## Why this fix (not a Mill `TestModule` mixin) The issue originally proposed a Mill `TestModule` mixin to pin `-Dapi.version=1.46` via `forkArgs`. Reviewing the upstream landscape revealed that testcontainers had already shipped a fix in `1.21.4` (and `2.0.3`), so the workaround is unnecessary. See `project-management/issues/SUPP-28/analysis.md` for the original analysis and the prepended `## Resolution` block explaining why the workaround was superseded. ## Verification Run against Docker engine `29.1.3` (API `1.52`, min `1.44`): | Module | Tests | Ignored | Container | Wire confirms | |---|---|---|---|---| | `sqldb-postgresql.test` | 50 passed (7 specs) | 0 | `postgres:17-alpine` started | `User-Agent: tc-java/1.21.4`, requests on `/v1.44/containers/...` | | `sqldb-mysql.test` | 10 passed | 0 | `mysql:8.0` started | same | Full repo `./mill __.test` green via pre-push hook. ## Upstream context - testcontainers/testcontainers-java#11212 — Docker 29 incompatibility (root issue) - testcontainers/testcontainers-java#11360 — maintainer confirms `2.0.3+` / `1.21.4` carries the fix - https://github.com/testcontainers/testcontainers-java/releases/tag/1.21.4 ## Test plan - [x] `./mill sqldb-postgresql.test` passes on Docker 29.1.3 with real containers (no silent skips) - [x] `./mill sqldb-mysql.test` passes on Docker 29.1.3 with real containers (no silent skips) - [x] Full `./mill __.test` green (pre-push hook) - [ ] CI green on `main` merge Closes #28 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No description provided.