Coco, code coverage pour ruby 1.9

Un matin, je part à la recherche d’un outil de couverture de test pour un nouveau projet. Celui que j’utilise habituellement, Rcov ne fonctionne pas avec la version 1.9 de Ruby,  et son développement semble au point mort depuis quelques mois.

Je trouve rapidement plusieurs projets prometteurs, basé sur le fameux post de Aaron Patterson, mais aucun d’entre eux ne me satisfait totalement.

Ça y est, je suis énervé ! J’ai passé une demi-journée sur un truc qui aurait du prendre 5 minutes, et je n’ai toujours rien. Je décide donc d’écrire moi-même un outil de code coverage… On fait parfois des trucs bizarres sous le coup de l’énervement. Et une fois l’énervement dissipé, il faut se justifier, si possible avec une certaine dose de mauvaise foi :

  • Ruby 1.9 prend en charge la plus grosse partie du travail, l’outil se résumera à peu près à faire du rapport
  • Je pense que ça peut être fait rapidement (après tout, on parle de Ruby !)
  • Enfin, argument ultime, ça fait des années que je rêve de voir un outil de code coverage baptisé coco (et oui, ça me fait rire)

Spécifications

Voici donc ce que je veux réaliser:

  • Je veux pouvoir intégrer coco aux tests unitaires (test/unit ou rspec) avec un simple require ‘coco’.
  • Je veux qu’il sorte sur la console les fichiers qui sont couverts à moins de 90%. Je veux aussi une option pour changer ce seuil.
  • Pour savoir quelles lignes ne sont pas couvertes, je veux qu’il fabrique un html de chaque fichier pas assez couvert, en surlignant en rouge les lignes non-couvertes.
  • Je veux que coco soit « utf8 compliant ».
  • Je veux qu’il prenne en compte les fichiers qui ne sont pas du tout couverts (qui n’ont pas de tests).
  • Je voudrais qu’il ouvre le navigateur tout seul (que ce soit une option).

Résultat

J’ai obtenu en quelques jours un outil qui me satisfait pleinement. Même si toutes les spécifications ne sont pas encore implémentées, il est utilisable et fait bien son travail.

Sur GitHub, vous trouverez les sources, la documentation et un site web.

Pour l’installation, vous pouvez passer par rubygem:

gem install coco
Publicités

, ,

  1. Poster un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :