Skip to content

v0.1.0-alpha.1

Pre-release
Pre-release

Choose a tag to compare

@cppudge cppudge released this 05 Jul 08:42

Second alpha of the native C++ Testcontainers port. Highlights since v0.1.0-alpha.0:

Docker client

  • Engine API version pinning — docker-CLI-style negotiation (min(1.44, daemon's Api-Version) from one unversioned GET /_ping); every typed client call now hits /v1.NN/... paths, so a Docker 29+ daemon that drops old API versions keeps working. The raw request() escape hatch stays unversioned by design.
  • Streaming log waitwait_for::log(...) rides ONE deadline-bounded follow_logs connection (history + live) instead of snapshot polling every 200 ms; occurrence counting is incremental and chunk-boundary-safe. New public follow_logs overload with a hard deadline (FollowEnd::{ConsumerStopped,StreamEnded,DeadlineExpired}).
  • Host port exposurewith_exposed_host_port makes services listening on the test host reachable from containers through an sshd sidecar + libssh2 remote-forward tunnel.
  • Exec now always hijacks with Upgrade: tcp (CLI parity); named-pipe transport treats a peer CloseWrite as EOF.

Packaging (new)

  • conan create . produces a consumer-grade package: test_package/ proves find_package + link + run; the recipe runs the unit suite unless tools.build:skip_test.
  • cmake --install ships a working testcontainersConfig.cmake (find_package(testcontainers)testcontainers::testcontainers) for non-Conan consumers.
  • The version lives in ONE place (TC_VERSION_FULL in CMakeLists.txt); shared is refused on Windows (no export macros yet).

Quality gates

  • CI grew clang-format / clang-tidy (pinned) / ASan+UBSan / CodeQL gates, warnings-as-errors on project targets, and a conan create job on Linux, Windows and macOS — apple-clang compiles and runs the unit suite on every push now.
  • The Windows-engine integration mirror covers the docs/07 matrix; hang dumps are captured automatically.

Full log: v0.1.0-alpha.0...v0.1.0-alpha.1