Tester sur le parcours Emacs Lisp

Apprends à tester tes exercices Emacs Lisp sur Exercism


Les tests Elisp s'exécutent avec ERT, une bibliothèque Emacs Lisp pour les tests de régression et les tests unitaires. Il existe plusieurs façons de lancer les tests.

Pour lancer les tests de façon interactive depuis Emacs :

  1. Ouvre le fichier de test, M-x eval-buffer RET
  2. De façon interactive et individuelle, avec M-x ert RET test-name RET
  3. De façon interactive et d'un seul coup, avec M-x ert RET t RET Note que cela exécutera tous les tests actuellement chargés dans Emacs !
  4. Relance M-x eval-buffer RET avant de tester chaque fois que tu as fait des modifications

Pour n'exécuter que les tests du tampon courant, tu peux ajouter ceci à ton .emacs ou init.el :

(defun my-eval-and-run-all-tests-in-buffer ()
  "Delete all loaded tests from the runtime, evaluate the current buffer and run all loaded tests with ert."
  (interactive)
  (ert-delete-all-tests)
  (eval-buffer)
  (ert 't))

Après avoir redémarré Emacs :

  1. Ouvre le fichier de test
  2. M-x my-eval-and-run-all-tests-in-buffer RET

Les tests interactifs sont très pratiques pendant que tu travailles sur un exercice, mais le mode batch est préférable lorsque tu veux vérifier qu'un exercice est prêt à être soumis.

Pour lancer tous les tests depuis le terminal, en mode batch, exécute emacs -batch -l ert -l *-test.el -f ert-run-tests-batch-and-exit

La commande ci-dessus est un peu lourde à taper, donc si tu veux :

  1. Crée un fichier dans ton $PATH (probablement dans ~/bin) nommé ert-run
  2. Le contenu du fichier doit être le suivant :
    #!/usr/bin/env sh
    emacs -batch -l ert -l $1 -f ert-run-tests-batch-and-exit
    
  3. Rends le fichier exécutable avec chmod +x ert-run

Tu devrais alors pouvoir simplement appeler ert-run *-test.el pour lancer les tests en mode batch.

D'autres options sont disponibles dans la documentation, C-h i m ert RET.

Travaille sur les exercices

Comme Emacs est lui-même un interprète elisp, ton code de travail se trouve toujours dans son environnement d'exécution natif. Tu peux évaluer n'importe quelle forme en appuyant sur C-x e à la fin de la forme, ou une sélection avec M-x eval-region, ou tout le tampon avec M-x eval-buffer. C'est extrêmement pratique pour déboguer rapidement ton code.

Suggestions

Comme ton code et tes tests sont tous deux de l'elisp valide, il est conseillé de travailler sur le code de ton exercice dans un panneau de tampon, côte à côte avec son test, comme ceci :

Capture d'écran montrant Emacs avec le cadre divisé verticalement en deux fenêtres

Divise le cadre verticalement avec C-x 3, passe à la nouvelle fenêtre avec C-x o, et ouvre le fichier avec C-x C-f /path/to/file.