Probar en la pista 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. Hay varias formas de ejecutar las pruebas.

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 todas a la vez, con M-x ert RET t RET Ten en cuenta que esto ejecutará todas las pruebas que estén cargadas en Emacs en ese momento.
  4. Vuelve a ejecutar M-x eval-buffer RET antes de probar cada vez que hayas hecho cambios

Si solo quieres ejecutar las pruebas del búfer actual, puedes agregar esto a tu .emacs o tu 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

Probar de forma interactiva es genial mientras trabajas en un ejercicio, pero conviene más probar en modo por lotes cuando quieres comprobar que un ejercicio está listo para enviar.

Para ejecutar todas las pruebas desde la 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 que el archivo sea ejecutable con chmod +x ert-run

Deberías poder simplemente llamar 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 siempre está en su entorno de ejecución nativo. Puedes evaluar cualquier forma presionando 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 muy útil para depurar tu código rápidamente.

Sugerencias

Como tanto tu código como tus pruebas son elisp válido, se sugiere que trabajes con el código de tu ejercicio en un panel del búfer, lado a lado con sus pruebas, 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.