تعرّف على كيفية اختبار تمارين C++ الخاصة بك على Exercism.
يوفّر كل تمرين اختبارات الوحدة ووصفة بناء جاهزة لـ CMake، بينما تتكفّل أنت بالتنفيذ. الغرض من كل ملف اختبار أن يُربَط بتنفيذك لينتج برنامجًا تنفيذيًا يشغّل الاختبارات. وعند تشغيل البرنامج التنفيذي للاختبارات تُطبَع رسائل لكل اختبار فاشل، ويُبلَّغ بحالة خروج غير صفرية عند فشل الاختبارات.
ملاحظة: يجري اختبار الكود الذي تكتبه مقابل مجموعة الاختبارات في كل مرة تبني فيها مشروعك. وإذا لم يجتز الكود اختبارًا واحدًا أو أكثر لكنه كود C++ صالح، فسيُجمَّع على أي حال.
العمل على كل تمرين عملية تتكون من:
يأتي كل تمرين مع ملف CMakeLists.txt إلى جانب اختبارات الوحدة. ويحتوي هذا الملف على وصفة CMake الجاهزة التي تتولّى البناء عنك، ولا يُفترض أن تحتاج إلى تحرير هذا الملف. تفترض الوصفة المرفقة أن تنفيذك موجود في ملف ترويسة وملف مصدر يحملان اسم التمرين.
على سبيل المثال، يتوقّع التمرين bob تنفيذًا في bob.h وbob.cpp. أما التمارين التي تحتوي أسماؤها على شرطات، فيُفترض أن تستخدم ملفات المصدر شرطات سفلية، لذا يتوقّع word-count وجود word_count.h وword_count.cpp. وقد ترى أن تنفيذك بسيط بما يكفي ليكون بالكامل داخل ملف الترويسة، وفي هذه الحالة يمكنك الاستغناء عن ملف cpp.
أنشئ ملفات التنفيذ الأولية قبل تشغيل CMake. إذا لم تكن لديك الملفات bob.h وbob.cpp عند تشغيل CMake للتمرين bob، فسيولّد CMake خطأً مفاده أن الملفات غير موجودة. يمكن أن تكون هذه الملفات فارغة، لكن يجب أن تكون موجودة.
باستخدام هذه الوصفة، يستطيع CMake توليد مشروع مناسب لبيئتك عبر تشغيل cmake -G مع مُولِّد مناسب وموقع مجلد التمرين. وسيولّد CMake سكربت بناء مناسبًا لنظام تشغيلك. ولإبقاء تلك الملفات المولّدة منفصلة عن الكود المصدري لتمرينك، من الشائع إنشاء مجلد باسم build يحتوي على ملفات البناء المولّدة وكذلك الكود المُجمَّع. سيساعدك هذا على إبقاء مجلد التمرين مرتبًا وخاليًا من الفوضى.
بعد أن ينشئ CMake بيئة البناء، يمكنك بناء الكود باستخدام الأمر المناسب لبيئتك:
make
make إذا كنت تستخدم تطبيق واجهة سطر الأوامر الخاصة بـ Exercism
فيما يلي أمثلة على تشغيل 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. اتبع هذا الدليل لإعداد مشروع CMake في Visual Studio.
اسم المُولِّد في 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 غير مثبَّت على جهازك أو أن نسختك قديمة.
يُرجى تنزيل Xcode وتثبيته عبر App Store أو عبر هذا الرابط.
أما الأخطاء المشابهة لـ The CXX compiler identification is unknown فسيُحلّ معظمها على الأرجح باتباع تعليمات تثبيت GCC أو بإضافة هدف آخر في Xcode على النحو الوارد في الفقرة السابقة.
اسم المُولِّد في CMake هو Unix Makefiles.
بافتراض أن التمرين الحالي هو bob وأننا داخل مجلد التمرين:
$ touch bob.{h,cpp}
$ cmake -G "Unix Makefiles" .
$ exercism test
في هذا المثال، ننشئ بالفعل ملفات فارغة للتنفيذ قبل تشغيل CMake، لكننا لا ننشئ مجلد بناء فارغًا.
والسبب أن واجهة سطر الأوامر الخاصة بـ Exercism تستخدم الملف .exercism/metadata.json في المجلد الجذر لتحليل حالات الاختبار.
ما عليك سوى كتابة exercism test في المجلد الجذر لتجميع الاختبارات. من المفترض أن يؤدي هذا إلى أخطاء في وقت التجميع.
وبعد إصلاح الأخطاء، سيؤدي تشغيل exercism test مرة أخرى إلى بناء الاختبارات وتنفيذها باستخدام واجهة سطر الأوامر الخاصة بـ Exercism.