Preskočiť na obsah

Testovanie

Nastavenie

Skontroluj zmenu na svojom počítači skôr, než ju pošleš.

Skôr než začneš

Odkaz na Skôr než začneš
  • Dokonči Nastavenie. Testy v Go servírujú zostavenú webovú aplikáciu, preto ju zostav ako prvú.

  • Raz nainštaluj testovací prehliadač:

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

Spusti bežné kontroly

Odkaz na Spusti bežné kontroly
  1. Zostav a skontroluj kód v Go:

    Terminal window
    go build ./...
    go vet ./...
  2. Spusti testy v Go:

    Terminal window
    go test ./...
  3. Skontroluj a otestuj webovú aplikáciu:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. Spusti pravidlá pre vrstvy a rozloženie súborov:

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

Mal by si vidieť, že nič nezlyhalo. CI spúšťa rovnaké príkazy, tie z Go na amd64 a arm64, plus jeden beh s detektorom súbehov (go test -race ./...).

Spusti end-to-end testy

Odkaz na Spusti end-to-end testy

End-to-end testy ovládajú skutočný prehliadač proti skutočnému programu. Spusti projekt pre oblasť, ktorej sa zmena týka:

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

Beh si spustí vlastný HolyArrs s čerstvým konfiguračným priečinkom. Projekt setup najprv vytvorí vlastníka a väčšina ostatných projektov naň čaká. Pred vydaním verzie spusti celú sadu bez --project.

Ktoré projekty spustiť

Odkaz na Ktoré projekty spustiť
Zmena sa týka Spusti
Filmy movies
Seriály shows
Žiadosti requests, lists, reports
Sťahovania sources, downloaders, downloads
Prihlásenie a používateľov accounts, kid
Zdravie a plány schedules, controls
Rozloženie stránok desktop, phone, a11y

Projekty sú pomenované v app/frontend/playwright.config.ts. Projekt, ktorý závisí od iného, ho spustí ako prvý.

Kam patrí nový test

Odkaz na Kam patrí nový test
Druh Kam
Go Vedľa súboru, ktorý testuje
Unit test webu Vedľa svojho súboru, ako name.test.ts
End-to-end app/tests/<module>/

Nikdy nevolaj skutočnú vonkajšiu službu. Pridaj náhradu do app/tests/fakes. Test, ktorý prejde iba na tvojom počítači, je pokazený.

Príznak. Zlyhá kontrola štruktúry. Príčina. Správa pomenuje súbor a pravidlo, ktoré sa porušilo. Riešenie. Presuň kód, alebo pošli obyčajné dáta z vyššieho modulu. Pozri Moduly.

Príznak. End-to-end testy sa nespustia. Príčina. Testovací prehliadač nie je nainštalovaný. Riešenie. Spusti riadok playwright install vyššie.

Príznak. Testy v Go zlyhajú pre chýbajúce stránky. Príčina. Webová aplikácia nie je zostavená. Riešenie. Spusti npm --prefix app/frontend run build.

Build tagy

Test s tagom sa v bežnom go test ./... preskočí. Spusti ho cez -tags <tag>.

Tag Obsahuje
structure Pravidlá vrstiev, rozloženia súborov, umiestnenia SQL a komentárov v tools/structurecheck
measure Kontroly časovania sťahovania
lab Testy proti skutočným aplikáciám v testovacom laboratóriu. Čítajú HOLYARRS_LAB_* a preskočia sa, keď nie sú nastavené
labms, livesubs Behy v laboratóriu pre mediálne servery a živé stránky s titulkami
Dlhé behy a behy s poruchami

CI ich spúšťa popri bežných testoch. Spusti ich pred vydaním verzie.

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
Premenná Robí
HOLYARRS_FAULT_OUT Súbor, do ktorého behy s poruchami zapíšu svoju tabuľku
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT Zapnú meranie času od pádu po prihlásenie a pomenujú jeho výstupný súbor
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT Zapnú pamäťové behy a pomenujú ich výstupný súbor
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED Počet kôl a seed pre slučku pádov v app/backend/internal/mediafiles/dbtests (crash_test.go), ktorá sa pri -short preskočí
Náhradné servery a premenné

End-to-end testy spúšťajú náhradné servery pre sťahovače, zdroje a metadátový server, takže žiaden test nevolá skutočnú službu. Testy nastavia premenné ako HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL a HOLYARRS_QBITTORRENT_URL, aby program namierili na ne. Skutočná inštalácia ich nikdy nepotrebuje.

Kontrakt API má vlastné testy. TestOpenAPIGenerated zlyhá, keď sa openapi.json rozchádza s cestami, a snímka tabuľky ciest v tools/structurecheck/testdata zlyhá pri každej pridanej, odstránenej alebo presunutej ceste.

Súvisiace stránky

Odkaz na Súvisiace stránky

HolyArrs je zadarmo. Ak ti ušetril čas, daj mu hviezdičku na GitHube, podpor ho alebo kúp mi kávu.