Zig is an independent programming language based on C that aims to combine C’s performance with modern tooling and language design improvements. Unlike C, Zig makes it easier to call into C code and treats unit testing as a first-class feature. This creates an interesting opportunity to add unit tests to existing C code without rewriting or changing the build logic. To demonstrate this, the author adds unit tests to a real-world C application called uStreamer, which is a video streaming utility optimized for Raspberry Pi. The author explains how to use Zig to test a simple C function in uStreamer that encodes data using the base64 scheme. The process involves translating between C and Zig types and making adjustments to the build process. The author also explores the drawbacks of using C pointers and suggests alternative ways to represent null-terminated strings in Zig.
https://mtlynch.io/notes/zig-unit-test-c/