Exercism पर अपने Haskell अभ्यासों का टेस्ट कैसे करें, यह सीखिए।
टेस्ट चलाने के लिए अपने अभ्यास की डायरेक्टरी में यह कमांड चलाइए:
stack test
हर बार फाइल सेव होने पर टेस्ट चलाने के लिए, इसके बजाय यह कमांड चलाइए:
stack test --file-watch
No .cabal file found in directory
तो आप शायद stack का कोई पुराना वर्शन चला रहे हैं और आपको उसे अपग्रेड करना होगा।
No compiler found, expected minor version match with...
Try running "stack setup" to install the correct GHC...
तो बस जैसा वह कहता है वैसा ही कीजिए। यह कमांड सही कंपाइलर वर्शन डाउनलोड करके इंस्टॉल कर देगा:
stack setup
किसी अभ्यास का हल एक Haskell मॉड्यूल होता है। मॉड्यूल का नाम टेस्ट सूट में एक इम्पोर्ट स्टेटमेंट में तय होता है, आमतौर पर शुरू में:
import Test.Hspec (Spec, describe, it, shouldBe)
import Test.Hspec.Runner (configFailFast, defaultConfig, hspecWith)
import ModuleName (someFunc)
main :: IO ()
main ...
इस उदाहरण में टेस्ट फाइल लाइन 4 पर ModuleName नाम का एक मॉड्यूल इम्पोर्ट करती है, जो someFunc नाम का एक फंक्शन एक्सपोर्ट करता है। इसका मतलब है कि आपको ModuleName.hs नाम की एक फाइल बनानी है, जो कुछ ऐसी दिखेगी:
module ModuleName (someFunc) where
someFunc :: ...
someFunc ...
src/ में इस नाम की एक फाइल पहले से मौजूद मिलेगी, जिसे आप अपने हल की शुरुआत के तौर पर इस्तेमाल कर सकते हैं।
बस ध्यान रखिए कि यह स्टब सिर्फ आपको शुरुआत देने के लिए है। अगर आपको लगे कि इसे पूरी तरह बदलना सही है, तो बेझिझक बदल दीजिए।
अगर आप कुछ पैकेज इस्तेमाल करके ज़्यादा बढ़िया हल लिखना चाहते हैं, तो सबसे पहले उन पैकेजों को package.yaml में अपने हल की डिपेंडेंसी में जोड़िए:
library:
exposed-modules: ModuleName
source-dirs: src
dependencies:
- foo
- bar
अपने कंप्यूटर पर काम करते समय आप अपनी पसंद के किसी भी पैकेज का इस्तेमाल कर सकते हैं। लेकिन ऑनलाइन टेस्ट रनर के पास सीमित पैकेजों तक ही पहुँच होती है। जो पैकेज उपलब्ध हैं, वे ये हैं
base, containers, array, time, mtl, deepseq, exceptions, bytestring), औरअगर आप ऐसा हल सबमिट करते हैं जिसमें कोई ऐसा पैकेज इस्तेमाल हुआ है जो उपलब्ध नहीं है, तो टेस्ट रनर के पास इंटरनेट की सुविधा न होने की वजह से एरर आएगी, जो कुछ ऐसी दिखेगी:
Cabal file info not found for unavailable-package-1.0@..., updating
Selected mirror https://hackage.haskell.org/
Downloading root
HttpExceptionRequest Request {
host = "hackage.haskell.org"
...
}
(ConnectionFailure ...)
अगर आप GHCi में अपने हल के साथ खेलना चाहते हैं, तो बस यह कमांड चलाइए:
stack ghci
अपने हल पर hlint चलाना बहुत सुझाया जाता है, ताकि आप देख सकें कि कहीं यह कोई ऐसी बात पकड़ लेता है जो आपसे छूट गई हो:
hlint ModuleName.hs
hlint के दिए सारे सुझाव मानना ज़रूरी नहीं है, लेकिन आमतौर पर ये आपको सुंदर और Haskell की अपनी शैली के मुताबिक कोड लिखना सीखने में मदद करते हैं।