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-
Zostav a skontroluj kód v Go:
Terminal window go build ./...go vet ./... -
Spusti testy v Go:
Terminal window go test ./... -
Skontroluj a otestuj webovú aplikáciu:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
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 testyEnd-to-end testy ovládajú skutočný prehliadač proti skutočnému programu. Spusti projekt pre oblasť, ktorej sa zmena týka:
npm --prefix app/frontend run e2e -- --project=moviesBeh 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.
Možnosti
Odkaz na MožnostiKtoré 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ý.
Ak to nefunguje
Odkaz na Ak to nefungujePrí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.
Pre expertov
Odkaz na Pre expertovBuild 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.
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| 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ánkyHolyArrs je zadarmo. Ak ti ušetril čas, daj mu hviezdičku na GitHube, podpor ho alebo kúp mi kávu.