بیاموزید چگونه تمرینهای Emacs Lisp خود را در Exercism تست کنید
testهای Elisp با استفاده از ERT اجرا میشوند؛ ERT یک کتابخانهی Emacs Lisp برای testهای رگرسیون/واحد است. testها را میتوان به چند روش اجرا کرد.
برای اجرای testها بهصورت تعاملی از داخل Emacs:
M-x eval-buffer RET
M-x ert RET test-name RET
M-x ert RET t RET
توجه کنید که این کار همهی testهایی را که هماکنون در Emacs بارگذاری شدهاند اجرا میکند!M-x eval-buffer RET را اجرا کنیدبرای اجرای فقط testهای موجود در بافر جاری، میتوانید این را به .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 RETtest تعاملی زمانی که روی یک تمرین کار میکنید عالی است، اما test در حالت batch برای وقتی ترجیح داده میشود که میخواهید بررسی کنید تمرین آمادهی ارسال است.
برای اجرای همهی testها از ترمینال، در حالت batch، دستور 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 را فراخوانی کنید و testها را در حالت batch اجرا کنید.
گزینههای دیگر را میتوانید در مستندات پیدا کنید: C-h i m ert RET.
از آنجا که Emacs خودش یک مفسر elisp است، کد در حال کار شما همیشه در محیط اجرای بومی خودش قرار دارد. میتوانید هر فرمی را با فشردن C-x e در انتهای آن ارزیابی کنید، یا یک بخش انتخابی را با M-x eval-region و یا کل بافر را با M-x eval-buffer. این کار میتواند برای debug سریع کدتان بسیار مفید باشد.
از آنجا که هم کد شما و هم testهایتان elisp معتبر هستند، پیشنهاد میشود کد تمرینتان را در یک پنجرهی بافر، کنار test آن، به این صورت باز کنید:

قاب را با C-x 3 بهصورت عمودی تقسیم کنید، با C-x o به پنجرهی جدید بروید و فایل را با C-x C-f /path/to/file باز کنید.