টেস্টিং
সেটআপ
পাঠানোর আগে নিজের কম্পিউটারে বদলটি যাচাই করুন।
শুরু করার আগে
শুরু করার আগে-এর লিংক-
সেটআপ শেষ করুন। Go টেস্ট বিল্ড করা ওয়েব অ্যাপ সার্ভ করে, তাই আগে সেটি বিল্ড করুন।
-
টেস্টের ব্রাউজার একবার ইনস্টল করুন:
Terminal window npx --prefix app/frontend playwright install chromium
রোজকার চেকগুলো চালান
রোজকার চেকগুলো চালান-এর লিংক-
Go কোড বিল্ড ও vet করুন:
Terminal window go build ./...go vet ./... -
Go টেস্ট চালান:
Terminal window go test ./... -
ওয়েব অ্যাপ চেক ও টেস্ট করুন:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
লেয়ার ও ফাইল-লেআউটের নিয়ম চালান:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
আপনি কোনো ব্যর্থতা দেখতে পাবেন না। CI একই কমান্ড চালায়, Go-গুলো amd64 ও arm64-এ, সঙ্গে রেস ডিটেক্টর দিয়ে একটি রান (go test -race ./...)।
এন্ড-টু-এন্ড টেস্ট চালান
এন্ড-টু-এন্ড টেস্ট চালান-এর লিংকএন্ড-টু-এন্ড টেস্ট আসল প্রোগ্রামের বিরুদ্ধে আসল ব্রাউজার চালায়। আপনি যে অংশ ছুঁয়েছেন তার প্রজেক্ট চালান:
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 সাধারণ টেস্টের ওপরে এগুলো চালায়। নতুন ভার্সন বের করার আগে এগুলো চালান।
go test -count=1 -run '^TestFault|^TestCrashInEveryLoopIsContained$' ./app/backend/cmd/holyarrsHOLYARRS_RESTART_TIMING=1 go test -count=1 -run '^TestCrashRestartTime$' ./app/backend/cmd/holyarrsHOLYARRS_MEMORY=1 go test -count=1 -timeout 30m -run '^TestMemoryPartsRuns$' ./app/backend/cmd/holyarrsgo 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-এ স্টার দিন, স্পনসর করুন অথবা এক কাপ কফি কিনে দিন।