Emacs Lisp ট্র্যাকে পরীক্ষা করা

Exercism-এ আপনার Emacs Lisp অনুশীলনীগুলো পরীক্ষা করার উপায় শিখুন


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 দিয়ে ফাইলটি খুলুন।