رفتن به محتوا

آزمایش

راه‌اندازی

پیش از ارسال، تغییر خود را روی رایانهٔ خودتان بررسی کنید.

  • راه‌اندازی را تمام کنید. آزمایش‌های 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، به‌علاوهٔ یک اجرا با race detector (go test -race ./...).

آزمایش‌های end-to-end را اجرا کنید

پیوند به آزمایش‌های end-to-end را اجرا کنید

آزمایش‌های end-to-end یک مرورگر واقعی را روی یک برنامهٔ واقعی راه می‌برند. پروژهٔ بخشی را که دست زده‌اید اجرا کنید:

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
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 این‌ها را علاوه بر آزمایش‌های ساده اجرا می‌کند. پیش از انتشار آن‌ها را اجرا کنید.

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 فایلی که اجراهای 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 به آن ستاره بدهید، حمایت مالی کنید یا برای من یک قهوه بخرید.