Skip to content

Architecture#

Note

This section is coming soon. All contributions are welcome, just submit a pull request!

Build Process#

Testcontainers Native Build Process

Stage 1. Testcontainers for C shared library#

The core testcontainers-c shared library is built with Cgo. For that the -buildmode=c-shared is used in the Golang builder, and it also receives a customized header so that the types can be mapped between C and Golang. For that, we also have to flatten the structure and to switch the reference-based build process to fixed Objects stored in the Golang namespace, and C API using unique object IDs.

Stage 2. Language Bindings#

Then, we build custom binding libraries, by using Testcontainers for C as a static library that is bundled into the language specific libs. This stage depends on the language and common practices there.

Stage 3. Executable Code#

Well, you build it. From the previous stages, you get a header file, binding libraries, a shared library object or a DLL file from the Testcontainers for C module. Then, you know the drill.