Probar tus ejercicios en el track de Emacs Lisp

Aprende a probar tus ejercicios de Emacs Lisp en Exercism


Las pruebas de Elisp se ejecutan con ERT, una biblioteca de Emacs Lisp para pruebas de regresión y unitarias. Las pruebas se pueden ejecutar de varias formas.

Para ejecutar las pruebas de forma interactiva desde Emacs:

  1. Abre el archivo de pruebas, M-x eval-buffer RET
  2. De forma interactiva e individual, con M-x ert RET test-name RET
  3. De forma interactiva y todo a la vez, con M-x ert RET t RET Ten en cuenta que esto ejecutará todas las pruebas cargadas actualmente en Emacs.
  4. Vuelve a ejecutar M-x eval-buffer RET antes de probar siempre que hayas hecho cambios

Para ejecutar solo las pruebas del búfer actual, puedes añadir esto a tu .emacs o 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))

Después de reiniciar Emacs:

  1. Abre el archivo de pruebas
  2. M-x my-eval-and-run-all-tests-in-buffer RET

Las pruebas interactivas son estupendas mientras trabajas en un ejercicio, pero las pruebas en modo por lotes son preferibles cuando quieres comprobar que un ejercicio está listo para enviarlo.

Para ejecutar todas las pruebas desde el terminal, en modo por lotes, ejecuta emacs -batch -l ert -l *-test.el -f ert-run-tests-batch-and-exit

El comando anterior es un poco engorroso, así que, si quieres:

  1. Crea un archivo en tu $PATH (probablemente en ~/bin) llamado ert-run
  2. El contenido del archivo debe ser el siguiente:
    #!/usr/bin/env sh
    emacs -batch -l ert -l $1 -f ert-run-tests-batch-and-exit
    
  3. Haz ejecutable el archivo con chmod +x ert-run

Deberías poder llamar simplemente a ert-run *-test.el y ejecutar las pruebas en modo por lotes.

Puedes encontrar otras opciones en la documentación, C-h i m ert RET.

Trabajar en los ejercicios

Como Emacs es en sí mismo un intérprete de elisp, tu código de trabajo siempre está en su entorno de ejecución nativo. Puedes evaluar cualquier forma pulsando C-x e al final de la forma, o una selección con M-x eval-region o todo el búfer con M-x eval-buffer. Esto puede ser extremadamente útil para depurar tu código rápidamente.

Sugerencias

Como tanto tu código como tus pruebas son elisp válido, te sugerimos que trabajes con el código de tu ejercicio en un panel de búfer junto a su prueba, así:

Captura de pantalla que muestra Emacs con el marco dividido verticalmente en dos ventanas

Divide el marco verticalmente con C-x 3, cambia a la nueva ventana con C-x o y abre el archivo con C-x C-f /path/to/file.