Testing is a wonderful thing. Code with good tests is so much easier to work with and change due to the comfort the tests provide that you haven't broken anything you didn't expect to break.
C can be a tricky language to work in. It compiles to static code. It's incredibly low-level compared to many of the languages people use these days. It also comes with a delightfully bewildering and wide array of ways to very effectively shoot yourself in the foot. On top of that the POSIX API implementations C code often relies on don't lend themselves to easy testing, especially of unhappy paths. Which means that while we should absolutely be testing our C code it should be really hard to unit test, right?
Join me for a quick overview of the ways in which C can be unit tested, including ways to push around the POSIX APIs, and how you too can increase your C code's level of comfort.
Benno is a longtime FreeBSD committer and, more recently, Core Team member. He’s also been part of the Python community for a fair old while. He kicked off FreeBSD’s port to the PowerPC architecture a long time ago and co-created Python’s behave project. Lately he’s been working with FreeBSD’s Core Team to improve FreeBSD’s community processes.