~bigbes/ci-cacher: f1426778

Add end-to-end test suite against real Garage via testcontainers

* internal/testutil/garage: spins up dxflrs/garage:v2.3.0 with
  --single-node --default-bucket so the bucket + access key are
  auto-created from env vars at startup, no CLI bootstrap dance.
  Each Start() call yields a fresh container with random creds and
  registers t.Cleanup teardown.

* e2e_test.go gated by build tag e2e exercises the compiled cacher
  binary against the container — covers init/doctor parity (the
  regression guard for the HeadBucket+signature bugs we hit on
  the real bucket), single-file round-trip, exit codes (1/2/3),
  URL fallback + cache fill, --hash-from parity with sha256sum,
  directory tar+zstd round-trip, and delimited list output.

* just test-e2e recipe; requires Docker on the host.

Total runtime ~30s after first image pull (~1.5s/container).

Eugene Blikh <bigbes@gmail.com> — 2026-05-25 13:37:38 UTC

Commit f1426778fcaf9edcf6e15bbf7484579712b0cc20view raw patch

Parent(s): 35e3d35f

5 changed file(s)

FileStatus+
Justfile M +3
e2e_test.go A +316
go.mod M +50
go.sum M +132
internal/testutil/garage/container.go A +145