الاختبار في مسار YAMLScript

تعرّف على كيفية اختبار تمارين YAMLScript على Exercism.


اختبار حلول تمارين Exercism المكتوبة بلغة YAMLScript سهل للغاية. سهل التشغيل وسهل الفهم.

كل ما عليك هو تنفيذ make test في مجلد التمرين.

في المرة الأولى التي تنفّذ فيها make test، ستفشل جميع الاختبارات، ببساطة لأنك لم تكتب بعد أي كود لحل هذه الاختبارات.

تبدأ عملية تطوير التمرين المعتادة بتنفيذ make test، ثم التركيز على اختبار واحد في كل مرة، وكتابة الكود الذي يجعله ينجح. وعندما تنجح جميع الاختبارات، تكون قد انتهيت!

وكميزة إضافية، يضمن تنفيذ make test أيضًا تثبيت الإصدار الصحيح من مفسّر ys الخاص بـ YAMLScript (الإصدار الذي يتطلبه التمرين الحالي) في المكان الصحيح (في /path/to/exercism/yamlscript/.local/). وهذا يعني أنك لست مضطرًا حتى إلى تثبيت ys مسبقًا كي تبدأ!

بنية مجلد التمرين

إذا كنت تعمل على تمرين اسمه the-great-exercise، فإن أمر exercism download --exercise=the-great-exercise --track=yamlscript سيُنشئ المجلد /path/to/exercism/yamlscript/the-great-exercise.

وداخل هذا المجلد، سيكون ملف الاختبار باسم the-great-exercise-test.ys، وملف برنامج الحل باسم the-great-exercise.ys. وسيكون هناك أيضًا ملف README.md يتضمن وصف التمرين، وملف HELP.md يتضمن بعض المعلومات المفيدة إذا واجهتك صعوبة.

وسيكون هناك ملفان خاصان بـ make: Makefile و GNUmakefile. والغرض من ذلك هو التأكد (npi) من أنك تستخدم GNU make لتشغيل الاختبارات، وليس أمر make آخر قد يكون مثبتًا على نظامك. ملف GNUmakefile هو الملف الحقيقي، وسيفضّله GNU make دائمًا على Makefile. أما أوامر make الأخرى فستستخدم Makefile، الذي ينبغي أن يُظهر خطأً برسالة تطلب منك استخدام GNU make!

تشريح ملف الاختبار

اختبارات YAMLScript مكتوبة بلغة YAMLScript بالطبع! وبما أن YAMLScript هي YAML، وYAML هي بيانات، فإن الاختبارات في الأساس مجرد بيانات.

إليك مثالًا لملف اختبار بسيط. إنه في الواقع الاختبارات الثلاثة الأولى من تمرين acronym. :-)

#!/usr/bin/env ys-0

use ys::taptest: :all
load: 'acronym.ys'

test::
- name: Basic
  code: abbreviate('Portable Network Graphics')
  want: PNG

- name: Lowercase words
  code: abbreviate('Ruby on Rails')
  want: ROR

- name: Punctuation
  code: abbreviate('First In, First Out')
  want: FIFO

done: 3

السطر الأول هو سطر shebang يخبر أمر prove (الذي ينفّذه ملف Makefile) باستخدام مفسّر ys الخاص بـ YAMLScript لتشغيل الاختبارات بدلًا من perl، وهو الافتراضي في prove.

والسطر الثاني عبارة use تُحمّل مكتبة الاختبار ys::taptest الخاصة بـ YAMLScript، وهي مكتبة اختبار TAP.

ملاحظة: TAP واجهة نصية بسيطة بين نصوص الاختبار وأدوات تشغيل الاختبارات، وprove هي الأداة القياسية لتشغيل اختبارات TAP في Perl. ولأن Perl منتشرة في كل مكان، يصبح استخدام TAP وprove خيارًا ممتازًا لمجموعات الاختبار في لغات كثيرة (بما فيها YAMLScript).

تُحمّل عبارة use برنامج الحل acronym.ys الذي يختبره ملف الاختبار هذا.

جميع اختباراتنا موجودة في مصفوفة YAML تحت المفتاح test.

والسطر الأخير done: مطلوب، ويخبر أداة تشغيل الاختبارات بأن جميع الاختبارات قد نُفّذت فعلًا. والرقم (وهو اختياري) هو عدد الاختبارات التي توقعنا تشغيلها.

كل اختبار (تحت المفتاح test) هو خريطة تتضمن أزواج المفتاح/القيمة التالية:

  • name: - تسمية الاختبار التي يطبعها prove -v.
  • code: - كود YAMLScript المراد تنفيذه. سيستدعي هذا الكود إحدى الدوال في برنامج الحل الذي نعمل عليه.
  • what: - في الاختبارات التي تتوقع حدوث خطأ، تكون القيمة error. أما في الاختبارات العادية، فلا يوجد هذا الزوج.
  • want: - النتيجة المتوقعة للاختبار. وهي قيمة YAML وقد تكون سلسلة نصية أو عددًا أو قيمة منطقية أو مصفوفة أو خريطة. وإذا كانت what: تساوي error، فهذه القيمة هي رسالة الخطأ المتوقعة.
  • SKIP: - اضبطها على true لتخطّي تشغيل ذلك الاختبار.
  • ONLY: - اضبطها على true لتشغيل ذلك الاختبار وحده. وإذا كان لديك أكثر من اختبار ONLY: واحد، فسيُشغَّل كل منها.

وبهذا تكون قد عرفت كل ما تحتاجه لممارسة التطوير المدفوع بالاختبارات بلغة YAMLScript في تمارين Exercism!

تحتوي مكتبة ys::taptest على ميزات أخرى يمكنك استخدامها لكتابة اختبارات أكثر تعقيدًا، لكن اختبارات Exercism قد كُتبت لك بالفعل. ولمعرفة المزيد عن مكتبة ys::taptest، راجع التوثيق.