বিষয়বস্তুতে যান

টেস্টিং

সেটআপ

পাঠানোর আগে নিজের কম্পিউটারে বদলটি যাচাই করুন।

  • সেটআপ শেষ করুন। Go টেস্ট বিল্ড করা ওয়েব অ্যাপ সার্ভ করে, তাই আগে সেটি বিল্ড করুন।

  • টেস্টের ব্রাউজার একবার ইনস্টল করুন:

    Terminal window
    npx --prefix app/frontend playwright install chromium

রোজকার চেকগুলো চালান

রোজকার চেকগুলো চালান-এর লিংক
  1. Go কোড বিল্ড ও vet করুন:

    Terminal window
    go build ./...
    go vet ./...
  2. Go টেস্ট চালান:

    Terminal window
    go test ./...
  3. ওয়েব অ্যাপ চেক ও টেস্ট করুন:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. লেয়ার ও ফাইল-লেআউটের নিয়ম চালান:

    Terminal window
    go test -tags structure ./app/backend/tools/structurecheck

আপনি কোনো ব্যর্থতা দেখতে পাবেন না। CI একই কমান্ড চালায়, Go-গুলো amd64 ও arm64-এ, সঙ্গে রেস ডিটেক্টর দিয়ে একটি রান (go test -race ./...)।

এন্ড-টু-এন্ড টেস্ট চালান

এন্ড-টু-এন্ড টেস্ট চালান-এর লিংক

এন্ড-টু-এন্ড টেস্ট আসল প্রোগ্রামের বিরুদ্ধে আসল ব্রাউজার চালায়। আপনি যে অংশ ছুঁয়েছেন তার প্রজেক্ট চালান:

Terminal window
npm --prefix app/frontend run e2e -- --project=movies

রানটি নতুন কনফিগ ফোল্ডারে নিজের HolyArrs চালু করে। setup প্রজেক্ট আগে মালিক বানায়, আর বেশিরভাগ অন্য প্রজেক্ট তার জন্য অপেক্ষা করে। নতুন ভার্সন বের করার আগে --project ছাড়া পুরো স্যুট চালান।

কোন প্রজেক্ট চালাবেন

কোন প্রজেক্ট চালাবেন-এর লিংক
আপনি যা বদলেছেন যা চালাবেন
মুভি movies
সিরিজ shows
অনুরোধ requests, lists, reports
ডাউনলোডস sources, downloaders, downloads
সাইন ইন ও ইউজার accounts, kid
হেলথ ও সময়সূচি schedules, controls
পেজের লেআউট desktop, phone, a11y

প্রজেক্টের নাম app/frontend/playwright.config.ts-এ আছে। যে প্রজেক্ট অন্যটির ওপর নির্ভর করে, সে আগে সেটি চালায়।

নতুন টেস্ট কোথায় যাবে

নতুন টেস্ট কোথায় যাবে-এর লিংক
ধরন কোথায়
Go যে ফাইল টেস্ট করে তার পাশে
ওয়েব ইউনিট ফাইলের পাশে, name.test.ts নামে
এন্ড-টু-এন্ড app/tests/<module>/

কখনো আসল বাইরের সার্ভিস ডাকবেন না। app/tests/fakes-এর নিচে একটি বদলি যোগ করুন। যে টেস্ট শুধু আপনার কম্পিউটারে পাস করে, সেটি ভাঙা।

লক্ষণ: একটি স্ট্রাকচার চেক ফেল করে। কারণ: বার্তায় আপনি যে ফাইল ও নিয়ম ভেঙেছেন তার নাম থাকে। সমাধান: কোডটি সরান, অথবা ওপরের মডিউল থেকে সাধারণ ডেটা পাঠান। দেখুন মডিউল।

লক্ষণ: এন্ড-টু-এন্ড টেস্ট চালু হয় না। কারণ: টেস্টের ব্রাউজার ইনস্টল করা নেই। সমাধান: ওপরের playwright install লাইনটি চালান।

লক্ষণ: পেজ না পেয়ে Go টেস্ট ফেল করে। কারণ: ওয়েব অ্যাপ বিল্ড করা হয়নি। সমাধান: npm --prefix app/frontend run build চালান।

বিশেষজ্ঞদের জন্য

বিশেষজ্ঞদের জন্য-এর লিংক
বিল্ড ট্যাগ

ট্যাগ দেওয়া টেস্ট সাধারণ go test ./...-এ বাদ পড়ে। চালাতে -tags <tag> দিন।

ট্যাগ কী থাকে
structure tools/structurecheck-এর লেয়ার, ফাইল-লেআউট, SQL-এর জায়গা ও কমেন্টের নিয়ম
measure ডাউনলোডের সময় মাপার চেক
lab টেস্ট ল্যাবে আসল অ্যাপের বিরুদ্ধে টেস্ট। এগুলো HOLYARRS_LAB_* পড়ে এবং সেগুলো সেট না থাকলে বাদ যায়
labms, livesubs মিডিয়া সার্ভার ও লাইভ সাবটাইটেল সাইটের ল্যাব রান
লম্বা ও ফল্ট রান

CI সাধারণ টেস্টের ওপরে এগুলো চালায়। নতুন ভার্সন বের করার আগে এগুলো চালান।

Terminal window
go test -count=1 -run '^TestFault|^TestCrashInEveryLoopIsContained$' ./app/backend/cmd/holyarrs
HOLYARRS_RESTART_TIMING=1 go test -count=1 -run '^TestCrashRestartTime$' ./app/backend/cmd/holyarrs
HOLYARRS_MEMORY=1 go test -count=1 -timeout 30m -run '^TestMemoryPartsRuns$' ./app/backend/cmd/holyarrs
go test -count=1 -run '^TestDownloaderConformance$' ./app/backend/internal/downloads
ভেরিয়েবল কী করে
HOLYARRS_FAULT_OUT ফল্ট রান যে ফাইলে তাদের টেবিল লেখে
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT ক্র্যাশ থেকে সাইন ইন পর্যন্ত সময় মাপা চালু করে এবং আউটপুট ফাইলের নাম দেয়
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT মেমরি রান চালু করে এবং আউটপুট ফাইলের নাম দেয়
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED app/backend/internal/mediafiles/dbtests-এর (crash_test.go) ক্র্যাশ লুপের রাউন্ড ও সিড, যা -short-এ বাদ যায়
বদলি সার্ভার ও ভেরিয়েবল

এন্ড-টু-এন্ড টেস্ট ডাউনলোডার, সোর্স ও মেটাডেটা সার্ভারের জন্য বদলি সার্ভার চালু করে, তাই কোনো টেস্ট আসল সার্ভিসে পৌঁছায় না। টেস্ট HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL ও HOLYARRS_QBITTORRENT_URL-এর মতো ভেরিয়েবল সেট করে প্রোগ্রামকে সেগুলোর দিকে ঘুরিয়ে দেয়। আসল ইনস্টলে এগুলো কখনো লাগে না।

API কন্ট্রাক্টের নিজস্ব টেস্ট আছে। openapi.json রুট থেকে সরে গেলে TestOpenAPIGenerated ফেল করে, আর tools/structurecheck/testdata-এর রুট-টেবিল স্ন্যাপশট কোনো রুট যোগ, বাদ বা সরালে ফেল করে।

HolyArrs বিনামূল্যে। এটি আপনার সময় বাঁচিয়ে থাকলে GitHub-এ স্টার দিন, স্পনসর করুন অথবা এক কাপ কফি কিনে দিন।