Apprends à tester tes exercices YAMLScript sur Exercism
Tester des solutions d'exercices Exercism écrites en YAMLScript est extrêmement simple. C'est simple à lancer et simple à comprendre.
Il te suffit de lancer make test dans le répertoire de l'exercice.
La première fois que tu lances make test, tous les tests échouent, tout simplement parce
que tu n'as pas encore écrit de code pour les résoudre.
Le déroulement normal d'un exercice consiste à commencer par make test, puis à se
concentrer sur un test à la fois, en écrivant le code qui le fait passer.
Quand tous les tests passent, c'est terminé !
En bonus, lancer make test vérifie aussi que la bonne version de l'interprète ys de
YAMLScript (celle requise par l'exercice en cours) est installée au bon endroit (dans
/path/to/exercism/yamlscript/.local/).
Autrement dit, tu n'as même pas besoin d'installer ys au préalable pour commencer !
Si tu travailles sur un exercice appelé the-great-exercise, alors exercism download --exercise=the-great-exercise --track=yamlscript crée le répertoire
/path/to/exercism/yamlscript/the-great-exercise.
Dans ce répertoire, le fichier de tests s'appellera the-great-exercise-test.ys et le
fichier du programme de solution s'appellera the-great-exercise.ys.
Tu y trouveras aussi un fichier README.md contenant la description de l'exercice et un
fichier HELP.md avec quelques informations utiles si tu es bloqué.
Il y aura deux fichiers pour make : Makefile et GNUmakefile.
C'est pour être (jeu de mots voulu) sûr que tu utilises GNU make pour lancer les tests, et
non quelque autre commande make qui pourrait être installée sur ton système.
C'est le GNUmakefile qui est le vrai, et GNU make le préférera toujours au Makefile.
Les autres commandes make utiliseront le Makefile, qui devrait afficher une erreur te
disant d'utiliser GNU make !
Les tests YAMLScript sont écrits en YAMLScript, bien sûr ! Étant donné que YAMLScript est du YAML et que YAML est une donnée, les tests ne sont pratiquement que des données.
Voici un exemple de fichier de tests simple.
Ce sont en fait les 3 premiers tests de l'exercice acronym. :-)
#!/usr/bin/env ys-0
use ys::taptest: :all
load: 'acronym.ys'
test::
- name: Basic
code: abbreviate('Portable Network Graphics')
want: PNG
- name: Lowercase words
code: abbreviate('Ruby on Rails')
want: ROR
- name: Punctuation
code: abbreviate('First In, First Out')
want: FIFO
done: 3
La première ligne est une ligne shebang qui indique à la commande prove (lancée par le
Makefile) d'utiliser l'interprète ys de YAMLScript pour lancer les tests au lieu de
perl, qui est la valeur par défaut de prove.
La deuxième ligne est une instruction use qui charge la bibliothèque de tests
TAP ys::taptest de YAMLScript.
Remarque : TAP est une interface textuelle simple entre les scripts de tests et les harnais de tests, et
proveest le harnais standard pour lancer des tests TAP en Perl. Comme Perl est omniprésent, utiliser TAP etproves'avère finalement un très bon choix pour les suites de tests de nombreux langages (YAMLScript compris).
L'instruction use charge le programme de solution acronym.ys, qui est ce que ce fichier
de tests teste.
Tous nos tests se trouvent dans une séquence YAML sous la clé test.
La dernière ligne, done:, est obligatoire et indique au harnais de tests que tous les
tests ont bien été exécutés.
Le nombre (facultatif) correspond au nombre de tests que l'on s'attendait à lancer.
Chaque test (sous la clé test) est une correspondance avec les paires clé/valeur
suivantes :
name: : le libellé du test, affiché par prove -v.code: : le code YAMLScript à exécuter.
Ce code appelle une fonction du programme de solution sur lequel on travaille.what: : pour les tests qui attendent une erreur, la valeur est error.
Pour les tests normaux, cette paire n'est pas présente.want: : le résultat attendu du test.
C'est une valeur YAML, qui peut être une string, un nombre, un booléen, une séquence
ou une correspondance.
Si what: vaut error, cette valeur est le message d'erreur attendu.SKIP: : mets cette valeur à true pour ne pas exécuter ce test.ONLY: : mets cette valeur à true pour n'exécuter que ce test.
Si tu as plusieurs tests ONLY:, ils seront tous exécutés.Voilà tout ce qu'il te faut savoir pour pratiquer le développement piloté par les tests en YAMLScript sur les exercices Exercism !
La bibliothèque ys::taptest propose d'autres fonctionnalités qui te permettront d'écrire
des tests plus complexes, mais les tests Exercism sont déjà écrits pour toi.
Pour en savoir plus sur la bibliothèque ys::taptest, consulte la
documentation.