Skip to content

C++ Tool

C++

  • Build: CMake with Conan for dependencies; a Debug build with sanitizers for development and tests, a Release build for delivery.
  • Unit tests: Catch2, structured by GIVEN, WHEN, THEN.
  • Acceptance tests: pytest-bdd reads the scenarios from test/bdd/features/ and drives the built binary. C++ has no maintained Gherkin runner of its own, and Behave cannot separate the feature files from the step definitions.
  • Lint: clang-format and clang-tidy, whose naming and const-correctness checks fail the build.
  • Rationale: tests run against the Debug build, so sanitizers catch memory and undefined behavior errors early; the Release build is tested again at merge to main.

Tool

  • Structure: a thin command-line entry point over the application code.
  • Acceptance tests: scenarios drive the built binary and check exit code, standard output, and standard error.
  • Container image: also published as an image, so the tool runs as a Kubernetes job or from another pipeline without installing its toolchain; the debug image is built on demand only.

C++ on Linux

  • Debug and Release are built and tested against glibc and musl, catching libc incompatibilities before they reach production; release jobs use the musl image.