تعلّم كيفية اختبار تمارين Emacs Lisp على Exercism
تُشغَّل اختبارات Elisp باستخدام ERT، وهي مكتبة من Emacs Lisp لاختبارات الانحدار والوحدة. ويمكن تشغيل الاختبارات بعدة طرق.
لتشغيل الاختبارات تفاعليًا من داخل 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.