آزمایش
راهاندازی
پیش از ارسال، تغییر خود را روی رایانهٔ خودتان بررسی کنید.
پیش از شروع
پیوند به پیش از شروع-
راهاندازی را تمام کنید. آزمایشهای 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، بهعلاوهٔ یک اجرا با race detector (go test -race ./...).
آزمایشهای end-to-end را اجرا کنید
پیوند به آزمایشهای end-to-end را اجرا کنیدآزمایشهای end-to-end یک مرورگر واقعی را روی یک برنامهٔ واقعی راه میبرند. پروژهٔ بخشی را که دست زدهاید اجرا کنید:
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 |
| End-to-end | app/tests/<module>/ |
هرگز سرویس بیرونی واقعی را صدا نزنید. یک جایگزین در app/tests/fakes اضافه کنید. آزمایشی که فقط روی رایانهٔ شما میگذرد خراب است.
اگر کار نکرد
پیوند به اگر کار نکردنشانه. یک بررسی ساختار رد میشود. علت. پیام نام فایل و قانونی را میگوید که شکستهاید. راهحل. کد را جابهجا کنید، یا دادههای ساده را از ماژول بالاتر پایین بدهید. ماژولها را ببینید.
نشانه. آزمایشهای end-to-end شروع نمیشوند.
علت. مرورگر آزمایش نصب نیست.
راهحل. خط playwright install بالا را اجرا کنید.
نشانه. آزمایشهای Go بهخاطر نبودن صفحهها رد میشوند.
علت. برنامهٔ وب ساخته نشده است.
راهحل. npm --prefix app/frontend run build را اجرا کنید.
برای حرفهایها
پیوند به برای حرفهایهاtagهای بیلد
آزمایشی که tag دارد در go test ./... ساده نادیده گرفته میشود. برای اجرای آن -tags <tag> بدهید.
| tag | محتوا |
|---|---|
structure |
قوانین لایه، چیدمان فایل، جای SQL و کامنت در tools/structurecheck |
measure |
بررسی زمان دانلود |
lab |
آزمایش روی برنامههای واقعی در یک lab آزمایشی. HOLYARRS_LAB_* را میخوانند و اگر تنظیم نباشد نادیده گرفته میشوند |
labms، livesubs |
اجراهای lab برای سرورهای رسانه و سایتهای زندهٔ زیرنویس |
اجراهای طولانی و fault
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 |
فایلی که اجراهای fault جدولشان را در آن مینویسند |
HOLYARRS_RESTART_TIMING، HOLYARRS_RESTART_TIMING_OUT |
زمانسنجی از کرش تا ورود را روشن میکنند و فایل خروجی را نام میبرند |
HOLYARRS_MEMORY، HOLYARRS_MEMORY_OUT |
اجراهای حافظه را روشن میکنند و فایل خروجی را نام میبرند |
HOLYARRS_CRASH_RUNS، HOLYARRS_CRASH_SEED |
تعداد دورها و seed برای حلقهٔ کرش در app/backend/internal/mediafiles/dbtests (crash_test.go) که زیر -short نادیده گرفته میشود |
سرورهای جایگزین و متغیرها
آزمایشهای end-to-end برای دانلودرها، منبعها و سرور فراداده سرورهای جایگزین شروع میکنند، پس هیچ آزمایشی به سرویس واقعی نمیرسد. آزمایشها متغیرهایی مثل HOLYARRS_TMDB_URL، HOLYARRS_MUSICBRAINZ_URL، HOLYARRS_PLEX_URL و HOLYARRS_QBITTORRENT_URL را تنظیم میکنند تا برنامه را به آنها وصل کنند. نصب واقعی هرگز به آنها نیاز ندارد.
قرارداد API آزمایشهای خودش را دارد. TestOpenAPIGenerated وقتی openapi.json از مسیرها جدا شود رد میشود، و snapshot جدول مسیرها در tools/structurecheck/testdata با هر مسیر اضافه، حذف یا جابهجاشده رد میشود.
صفحههای مرتبط
پیوند به صفحههای مرتبطHolyArrs رایگان است. اگر در وقتتان صرفهجویی کرد، در GitHub به آن ستاره بدهید، حمایت مالی کنید یا برای من یک قهوه بخرید.