পরীক্ষা: যাচাই স্যুট

চালানো

just test
# or
python3 tests/validate.py

এটি যেকোনো জায়গা থেকে চলে এবং শুধু Python 3 লাগে (কোনো তৃতীয়-পক্ষ প্যাকেজ নয়, নেটওয়ার্ক নয়)। এটি প্রতিটি যাচাইয়ের জন্য একটি লাইন ছাপে এবং কোনো যাচাই ব্যর্থ হলে অশূন্য কোডে বেরিয়ে যায়, তাই CI-তে ও প্রি-কমিট হুক হিসেবে কাজ করে।

এটি কী যাচাই করে

  • বিষয়ের প্রত্যাশিত সংখ্যা (স্ক্রিপ্টের উপরের ধ্রুবক)।
  • প্রতিটি পর্বের ভেতরে ধারাবাহিক নম্বর, N.0 থেকে শুরু।
  • প্রতিটি বিষয়ের জন্য H1 ফাইলের নামের দশমিকের সাথে মেলে।
  • H1 শিরোনাম spec/structure.md-এর সাথে অক্ষরে অক্ষরে মেলে, শুধু শুরুর দশমিক নয়।
  • প্রতিটি বিষয়বস্তু বিষয়ে (পর্ব ১ থেকে ৮, বিষয় N.1 এবং তার ওপরে) প্রয়োজনীয় বিভাগ আছে, ঠিক টেমপ্লেটের ক্রমে।
  • প্রতিটি বিষয়বস্তু বিষয়ের জন্য ন্যূনতম শব্দসংখ্যা (১,৫০০ শব্দ), স্ক্রিপ্টে ইচ্ছাকৃত ব্যতিক্রমের অনুমোদন তালিকাসহ।
  • যেকোনো Markdown ফাইলে এম-ড্যাশ নেই।
  • এন-ড্যাশ শুধু অঙ্কের মাঝে, তাই “2.1–2.8” পাস করে আর বাকি সব ব্যর্থ হয়।
  • নিষিদ্ধ বাক্যাংশ নেই (“not only”, “but also”, “load-bearing”)।
  • সব অভ্যন্তরীণ .md লিঙ্ক সমাধান হয়।
  • গদ্যের ক্রস-রেফারেন্স বাস্তব বিষয়ের দিকে নির্দেশ করে: ডিস্কে কোনো ফাইল নেই এমন বিষয় নম্বরের উল্লেখ ব্যর্থ হয়, প্রকাশিত সাইটের বিষয়-লিঙ্ক স্বয়ংক্রিয় লিঙ্কিং-এর একই উল্লেখ ছাঁচ ব্যবহার করে।
  • উইকিপিডিয়া লিঙ্কের রূপ সঠিক (https://en.wikipedia.org/wiki/...)।
  • spec/structure.md ডিস্কের ফাইলের সাথে মেলে, উভয় দিকে।
  • README, হোম পাতা ও সূচিপত্র পাতা প্রতিটি বিষয়ে লিঙ্ক করে।

কোনো যাচাই ব্যর্থ হলে

ব্যর্থ লাইন ফাইল ও সমস্যার নাম বলে। সাধারণ সমাধান:

  • এম-ড্যাশ পাওয়া গেছে: ”—” সরাতে বাক্যটি নতুন করে লিখুন। শুধু মুছে ফেলবেন না।
  • বিভাগ নেই: বিষয় টেমপ্লেট থেকে অনুপস্থিত ## বিভাগ যোগ করুন।
  • কাঠামো অমিল: আপনি spec/structure.md হালনাগাদ না করে বিষয় যোগ বা পুনঃনামকরণ করেছেন, অথবা উল্টোটা। তাদের আবার মিলিয়ে আনুন।
  • ভাঙা লিঙ্ক: পথ ঠিক করুন, অথবা পুনঃনামকরণের পরে হালনাগাদ করুন।
  • নম্বরে ফাঁক: পর্বটি N.0 থেকে ধারাবাহিক করতে পুনঃক্রমাঙ্কন করুন।

যাচাই স্যুটের বাইরে

  • just spell সংগ্রহস্থলের ওপর codespell চালায়। কনফিগারেশন, মিথ্যা-ইতিবাচকের উপেক্ষা তালিকাসহ, pyproject.toml-এর [tool.codespell] বিভাগ।
  • just stats tools/stats.py থেকে একটি Markdown প্রতিবেদন (বিষয়-ভিত্তিক শব্দসংখ্যা, পাতলা বিষয়, উইকিপিডিয়া লিঙ্ক, তথ্যসূত্র এন্ট্রি) ছাপে।

ক্রমাগত সংহতকরণ

  • .github/workflows/test.yml প্রতিটি পুল রিকোয়েস্টে এবং non-main শাখায় পুশে চলে: যাচাই স্যুট ও codespell। এই সংগ্রহস্থল সাইট তৈরি বা স্থাপন করে না; রেন্ডারিং আলাদা software-engineering-metrics.github.io সংগ্রহস্থলে ঘটে।
  • .github/workflows/links.yml সাপ্তাহিকভাবে lychee দিয়ে বাহ্যিক লিঙ্ক যাচাই করে (উপেক্ষা ছাঁচ .lycheeignore-এ) এবং ফলাফল একটি একক “Link checker report” ইস্যুতে রাখে। বাহ্যিক লিঙ্ক ইচ্ছা করেই PR পথের বাইরে থাকে।

পরীক্ষা যা কভার করে না

স্যুট কাঠামো ও শৈলী যাচাই করে, সত্য নয়। কোনো তথ্যসূত্র বাস্তব কিনা বা গদ্য নির্ভুল কিনা তা এটি বলতে পারে না। উদ্ধৃতি ও তথ্য হাতে বা গবেষণা পাসে যাচাই করুন। উইকিপিডিয়া লিঙ্কের অস্তিত্বও (রূপের বিপরীতে) নেটওয়ার্ক যাচাই চায়, যা স্যুট ইচ্ছা করেই বাদ রাখে যাতে এটি অফলাইনে চলতে পারে।