الاختبار في مسار Emacs Lisp

تعلّم كيفية اختبار تمارين Emacs Lisp على Exercism


تُشغَّل اختبارات Elisp باستخدام ERT، وهي مكتبة من Emacs Lisp لاختبارات الانحدار والوحدة. ويمكن تشغيل الاختبارات بعدة طرق.

لتشغيل الاختبارات تفاعليًا من داخل Emacs:

  1. افتح ملف الاختبار، ثم M-x eval-buffer RET
  2. بشكل تفاعلي وفردي، باستخدام M-x ert RET test-name RET
  3. بشكل تفاعلي ودفعة واحدة، باستخدام M-x ert RET t RET لاحظ أن هذا سيشغّل جميع الاختبارات المحمّلة حاليًا في Emacs!
  4. أعِد تشغيل 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:

  1. افتح ملف الاختبار
  2. 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

الأمر السابق مرهق بعض الشيء، لذا إن أردت:

  1. أنشئ ملفًا في $PATH لديك (غالبًا في ~/bin) باسم ert-run
  2. ويجب أن يكون محتوى الملف كما يلي:
    #!/usr/bin/env sh
    emacs -batch -l ert -l $1 -f ert-run-tests-batch-and-exit
    
  3. اجعل الملف قابلًا للتنفيذ باستخدام 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 صالح، يُقترح أن تعمل على كود التمرين في جزء من المخزن جنبًا إلى جنب مع اختباره، على النحو التالي:

لقطة شاشة تُظهر Emacs مع تقسيم الإطار عموديًا إلى نافذتين

قسّم الإطار عموديًا باستخدام C-x 3، وانتقل إلى النافذة الجديدة باستخدام C-x o، وافتح الملف باستخدام C-x C-f /path/to/file.