Exercism에서 Emacs Lisp 연습 문제를 테스트하는 방법을 알아봐요
Elisp 테스트는 회귀 테스트와 단위 테스트를 위한 Emacs Lisp 라이브러리인 ERT로 실행해요. 테스트는 여러 방법으로 실행할 수 있어요.
Emacs 안에서 대화식으로 테스트를 실행하려면 다음과 같이 해요:
M-x eval-buffer RET를 입력해요M-x ert RET test-name RET로 개별 테스트를 하나씩 대화식으로 실행해요M-x ert RET t RET로 모든 테스트를 한 번에 대화식으로 실행해요
이 방법은 현재 Emacs에 로드된 모든 테스트를 실행한다는 점에 유의해요!M-x eval-buffer RET를 다시 실행해요현재 버퍼의 테스트만 실행하려면 .emacs나 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))
Emacs를 다시 시작한 후에는:
M-x my-eval-and-run-all-tests-in-buffer RET를 입력해요연습 문제를 푸는 동안에는 대화식 테스트가 좋지만, 연습 문제가 제출할 준비가 되었는지 확인하고 싶을 때는 배치 모드 테스트가 더 적합해요.
터미널에서 배치 모드로 모든 테스트를 실행하려면 emacs -batch -l ert -l *-test.el -f ert-run-tests-batch-and-exit를 실행해요.
위 명령은 조금 다루기 번거로우니, 원한다면 이렇게 해봐요:
$PATH에 (아마 ~/bin에) ert-run이라는 파일을 만들어요#!/usr/bin/env sh
emacs -batch -l ert -l $1 -f ert-run-tests-batch-and-exit
chmod +x ert-run으로 파일을 실행 가능하게 만들어요이제 ert-run *-test.el을 호출하기만 하면 배치 모드로 테스트를 실행할 수 있어요.
다른 옵션은 문서에서 확인할 수 있어요. C-h i m ert RET
Emacs 자체가 elisp 인터프리터이기 때문에, 작성 중인 코드는 항상 원래의 실행 환경 안에 있어요. 폼 끝에서 C-x e를 누르면 어떤 폼이든 평가할 수 있고, M-x eval-region으로 선택 영역을, M-x eval-buffer로 버퍼 전체를 평가할 수 있어요. 이 기능은 코드를 빠르게 디버깅할 때 아주 유용해요.
코드와 테스트가 모두 유효한 elisp이므로, 연습 문제 코드를 테스트와 나란히 둔 버퍼 창에서 작업하는 걸 권장해요. 예를 들면 이렇게요:

C-x 3으로 프레임을 세로로 분할하고, C-x o로 새 윈도우로 이동한 다음, C-x C-f /path/to/file로 파일을 열어요.