सीखिए कि Exercism पर अपने C++ अभ्यासों को कैसे टेस्ट करें।
हर अभ्यास में यूनिट टेस्ट और एक CMake बिल्ड रेसिपी होती है। इम्प्लिमेंटेशन आप लिखते हैं। हर टेस्ट फाइल आपके इम्प्लिमेंटेशन से लिंक होकर एक कंसोल एक्ज़ीक्यूटेबल बनाती है, जो टेस्ट चलाता है। टेस्ट एक्ज़ीक्यूटेबल चलाने पर हर फेल होने वाले टेस्ट के लिए संदेश छपते हैं, और टेस्ट फेल होने पर वह शून्य के अलावा कोई एग्ज़िट स्टेटस बताता है।
ध्यान दें: जब भी आप अपना प्रोजेक्ट बिल्ड करते हैं, आपका कोड टेस्ट सूट के सामने परखा जाता है। अगर आपका कोड एक या अधिक टेस्ट पास नहीं करता, लेकिन मान्य C++ कोड है, तो भी वह कंपाइल होगा।
हर अभ्यास को करने की प्रक्रिया इस तरह है:
हर अभ्यास के साथ यूनिट टेस्ट के साथ-साथ एक CMakeLists.txt फाइल भी आती है। इसमें तैयार CMake रेसिपी होती है, जो आपके लिए बिल्ड संभालती है। आम तौर पर आपको इस फाइल को बदलने की ज़रूरत नहीं पड़ेगी। दी गई रेसिपी यह मानकर चलती है कि आपका इम्प्लिमेंटेशन अभ्यास के नाम वाली एक हेडर फाइल और एक सोर्स फाइल के रूप में मौजूद है।
उदाहरण के लिए, bob अभ्यास को bob.h और bob.cpp में इम्प्लिमेंटेशन चाहिए। जिन अभ्यासों के नाम में डैश होते हैं, उनकी सोर्स फाइलों में अंडरस्कोर माना जाता है, इसलिए word-count को word_count.h और word_count.cpp चाहिए। आप तय कर सकते हैं कि आपका इम्प्लिमेंटेशन इतना आसान है कि वह पूरी तरह हेडर में ही रह सकता है; ऐसी स्थिति में आप cpp फाइल छोड़ सकते हैं।
CMake चलाने से पहले अपनी शुरुआती इम्प्लिमेंटेशन फाइलें बना लीजिए। अगर bob अभ्यास के लिए CMake चलाते समय आपके पास bob.h और bob.cpp फाइलें नहीं हैं, तो CMake फाइलें न मिलने की एरर देगा। ये फाइलें खाली हो सकती हैं, लेकिन उनका होना ज़रूरी है।
इस रेसिपी की मदद से CMake आपके वातावरण के लिए उपयुक्त प्रोजेक्ट बना सकता है: इसके लिए उपयुक्त जेनरेटर और अभ्यास की डायरेक्टरी की जगह के साथ cmake -G चलाइए। CMake आपके ऑपरेटिंग सिस्टम के लिए उपयुक्त बिल्ड स्क्रिप्ट बनाएगा। इन बनी फाइलों को अभ्यास के सोर्स कोड से अलग रखने के लिए आम तौर पर build नाम की एक डायरेक्टरी बनाई जाती है, जिसमें ये बनी हुई बिल्ड फाइलें और कंपाइल किया गया कोड रखा जाता है। इससे आपका अभ्यास फोल्डर साफ-सुथरा बना रहता है।
CMake से बिल्ड वातावरण बन जाने के बाद, आप अपने वातावरण के लिए उपयुक्त कमांड से अपना कोड बिल्ड कर सकते हैं:
make
make अगर exercism CLI ऐप इस्तेमाल कर रहे हैं
नीचे अलग-अलग वातावरणों के लिए CMake चलाने के उदाहरण दिए गए हैं।
CMake के लिए जेनरेटर का नाम Unix Makefiles है।
मान लीजिए कि मौजूदा अभ्यास bob है और हम अभ्यास फोल्डर में हैं:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G "Unix Makefiles" ..
$ make
यह उदाहरण दिखाता है कि CMake चलाने से पहले इम्प्लिमेंटेशन के लिए खाली फाइलें कैसे बनाई जाती हैं।
टेस्ट कंपाइल करने के लिए बिल्ड डायरेक्टरी में बस make टाइप कीजिए। इससे कंपाइल-टाइम एरर आने चाहिए। एरर ठीक हो जाने के बाद make टेस्ट बिल्ड और रन करेगा।
Visual Studio में CMake प्रोजेक्ट के लिए अंदरूनी सपोर्ट है, इसलिए आपको CMake अलग से इंस्टॉल करने या Visual Studio के बाहर चलाने की ज़रूरत नहीं पड़ेगी। Visual Studio में CMake प्रोजेक्ट सेट अप करने के लिए इस गाइड को देखिए।
CMake के लिए जेनरेटर का नाम Xcode है।
मान लीजिए कि मौजूदा अभ्यास bob है और हम अभ्यास फोल्डर में हैं:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G Xcode ..
यह उदाहरण XCode फाइलें बनाता है, ताकि आप प्रोजेक्ट XCode में खोल सकें। XCode में प्रोजेक्ट खुलने के बाद आपको एक और टारगेट जोड़ना पड़ सकता है। नया टारगेट बनाने के लिए मेन्यू से File -> New -> Target पर जाइए, भाषा के रूप में OS X \ Application \ Command Line Tool -> Next C++ चुनिए और टारगेट का नाम दीजिए। उस टारगेट से कोड चलाइए।
अगर आपका टर्मिनल Xcode x.x not supported एरर दिखाता है, तो बहुत संभव है कि आपकी मशीन पर Xcode इंस्टॉल नहीं है या आपका वर्ज़न पुराना हो गया है। कृपया App Store से या इस लिंक से Xcode डाउनलोड और इंस्टॉल कीजिए।
The CXX compiler identification is unknown जैसी एरर आम तौर पर GCC इंस्टॉल करने के निर्देशों का पालन करने से, या ऊपर दिए गए पैराग्राफ के अनुसार Xcode में एक और टारगेट जोड़ने से ठीक हो जाती हैं।
CMake के लिए जेनरेटर का नाम Unix Makefiles है।
मान लीजिए कि मौजूदा अभ्यास bob है और हम अभ्यास फोल्डर में हैं:
$ touch bob.{h,cpp}
$ cmake -G "Unix Makefiles" .
$ exercism test
इस उदाहरण में हम CMake चलाने से पहले इम्प्लिमेंटेशन के लिए खाली फाइलें बनाते हैं, लेकिन खाली बिल्ड डायरेक्टरी नहीं बनाते।
इसका कारण यह है कि Exercism CLI टेस्ट केस पढ़ने के लिए रूट डायरेक्टरी की .exercism/metadata.json फाइल इस्तेमाल करता है।
टेस्ट कंपाइल करने के लिए रूट डायरेक्टरी में बस exercism test टाइप कीजिए। इससे कंपाइल-टाइम एरर आने चाहिए।
एरर ठीक हो जाने के बाद, दोबारा exercism test चलाने पर Exercism CLI की मदद से टेस्ट बिल्ड और एक्ज़ीक्यूट होंगे।