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 से फाइल खोलिए।