Il y a 3 ans, j’ai écrit une gem Ruby pour faire de la couverture de code (code coverage). SimpleCov, la gem la plus utilisée pour cette tâche venait tout juste de voir le jour et ne me convenait pas entièrement. À l’époque je trouvais SimpleCov trop ennuyeuse à configurer et à faire fonctionner.

Qu’on ne me fasse pas dire ce que je n’ai pas écrit : SimpleCov remplie parfaitement sa tâche. C’est juste que je voulais un truc plus simple. Je voulais quelque chose qui fonctionne en une ligne, avec configuration optionnelle et surtout, avec un rapport de couverture super simple et dépouillé. C’est comme ça qu’est née la gem coco. Bon ok, il m’est arrivé de me demander si je ne l’avais pas écrit juste pour le jeu de mot…

Pour utiliser coco, il suffit de charger la gem au tout début des tests comme ceci:

require 'coco'

Et… c’est tout ! Chaque fois que vous lancerez les tests, coco produira un rapport si (et seulement si) au moins un fichier n’est pas couvert à 100%.

La configuration, au besoin, se fait dans un fichier caché au format yaml, à la racine du projet. Par exemple si vous trouvez qu’un taux de couverture de 90% est acceptable, vous pouvez le changer comme ça:

:threshold: 90

Si vous voulez exclure un fichier et un dossier complet du rapport vous pouvez écrire:

:excludes:
- lib/project/file1.rb
- config/initializers

Il y a plusieurs autres exemples de configuration sur le wiki du projet. Enfin, pour une présentation rapide de coco, en anglais, il y a le site web.

À demain.