Libunit
Framework de tests unitaires en C
- Période
- janv. 2026
- Cadre
- rush 42
- Équipe
- en groupe
- Note
- 117/100
- C
- Bas-niveau
- Programmation impérative
- Testeur
Un framework de tests unitaires pour le C, écrit en C pendant un rush de deux jours. Son point fort : un test qui plante ne fait pas planter le reste.
Le fonctionnement
Les tests sont rangés en « batteries », une par fonction testée. Chaque test est une fonction qui renvoie 0 si tout va bien. Pour chaque test, le framework fait un fork() : l’enfant exécute le test et sort avec son code de retour, le parent l’attend avec waitpid().
Grâce aux macros WIFEXITED et WIFSIGNALED, le parent sait si le test a réussi, échoué, ou s’il a été tué par un signal : SIGSEGV, SIGBUS, SIGABRT, SIGFPE, SIGPIPE ou SIGILL. Le résultat s’affiche en couleur, test par test.
Les bonus
Un test peut être marqué comme « doit planter » : par exemple, on s’attend à un SIGSEGV sur un pointeur nul. Une batterie peut aussi s’arrêter à la première erreur, et un test peut être désactivé sans être supprimé.
Ce que j’en retiens
- Le processus est la meilleure isolation qu’offre Unix, et elle ne coûte qu’un
fork(). - Un signal est une information comme une autre : il se lit dans le statut de l’enfant.
- Écrire l’outil qui teste son code fait relire son code autrement.