Lerne, wie du deine Emacs-Lisp-Übungen auf Exercism testest
Elisp-Tests werden mit ERT ausgeführt, einer Emacs-Lisp-Bibliothek für Regressions- und Unit-Tests. Es gibt mehrere Möglichkeiten, die Tests auszuführen.
So führst du die Tests interaktiv in Emacs aus:
M-x eval-buffer RET
M-x ert RET test-name RET
M-x ert RET t RET
Beachte, dass damit alle Tests ausgeführt werden, die gerade in Emacs geladen sind!M-x eval-buffer RET erneut aus, bevor du testest, wenn du Änderungen vorgenommen hastWenn du nur die Tests im aktuellen Buffer ausführen willst, kannst du Folgendes in deine .emacs oder init.el einfügen:
(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))
Nachdem du Emacs neu gestartet hast:
M-x my-eval-and-run-all-tests-in-buffer RETInteraktives Testen ist super, während du an einer Übung arbeitest. Wenn du aber prüfen willst, ob eine Übung bereit zur Abgabe ist, ist der Batch-Modus die bessere Wahl.
Um alle Tests im Batch-Modus vom Terminal auszuführen, führe emacs -batch -l ert -l *-test.el -f ert-run-tests-batch-and-exit aus.
Der obige Befehl ist etwas unhandlich. Wenn du magst:
$PATH an (wahrscheinlich in ~/bin) namens ert-run
#!/usr/bin/env sh
emacs -batch -l ert -l $1 -f ert-run-tests-batch-and-exit
chmod +x ert-run ausführbarDu solltest einfach ert-run *-test.el aufrufen können, um die Tests im Batch-Modus laufen zu lassen.
Weitere Optionen findest du in der Dokumentation, C-h i m ert RET.
Da Emacs selbst ein Elisp-Interpreter ist, läuft dein Code immer in seiner nativen Ausführungsumgebung. Du kannst jede Form auswerten, indem du am Ende der Form C-x e drückst, oder eine Auswahl mit M-x eval-region oder den ganzen Buffer mit M-x eval-buffer. Das ist extrem nützlich, um deinen Code schnell zu debuggen.
Da sowohl dein Code als auch die Tests gültiges Elisp sind, empfiehlt es sich, deinen Übungscode in einem Buffer-Fenster neben dem zugehörigen Test anzuzeigen, so wie hier:

Teile den Frame mit C-x 3 vertikal, wechsle mit C-x o in das neue Fenster und öffne die Datei mit C-x C-f /path/to/file.