Testování
Nastavení
Zkontroluj svou změnu na svém počítači, než ji pošleš.
Než začneš
Odkaz na Než začneš-
Dokonči přípravu. Testy v Go servírují sestavenou webovou aplikaci, takže ji nejdřív sestav.
-
Jednou nainstaluj testovací prohlížeč:
Terminal window npx --prefix app/frontend playwright install chromium
Spusť běžné kontroly
Odkaz na Spusť běžné kontroly-
Sestav a zkontroluj kód v Go:
Terminal window go build ./...go vet ./... -
Spusť testy v Go:
Terminal window go test ./... -
Zkontroluj a otestuj webovou aplikaci:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Spusť pravidla pro vrstvy a rozložení souborů:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Neměl bys vidět žádné selhání. CI pouští stejné příkazy, ty v Go na amd64 a arm64, plus jeden běh s detektorem race (go test -race ./...).
Spusť end-to-end testy
Odkaz na Spusť end-to-end testyEnd-to-end testy ovládají skutečný prohlížeč proti skutečnému programu. Spusť projekt pro oblast, které ses dotkl:
npm --prefix app/frontend run e2e -- --project=moviesBěh si spustí vlastní HolyArrs na čerstvé konfigurační složce. Projekt setup nejdřív vytvoří vlastníka a většina ostatních projektů na něj čeká. Před vydáním spusť celou sadu bez --project.
Možnosti
Odkaz na MožnostiKteré projekty spustit
Odkaz na Které projekty spustit| Změnil jsi | Spusť |
|---|---|
| Filmy | movies |
| Seriály | shows |
| Žádosti | requests, lists, reports |
| Stahování | sources, downloaders, downloads |
| Přihlášení a uživatele | accounts, kid |
| Zdraví a plány | schedules, controls |
| Rozložení stránky | desktop, phone, a11y |
Projekty se jmenují v app/frontend/playwright.config.ts. Projekt, který závisí na jiném, ho spustí první.
Kam patří nový test
Odkaz na Kam patří nový test| Druh | Kam |
|---|---|
| Go | Vedle souboru, který testuje |
| Webový unit test | Vedle svého souboru, jako name.test.ts |
| End-to-end | app/tests/<module>/ |
Nikdy nevolej skutečnou vnější službu. Přidej náhradu do app/tests/fakes. Test, který projde jen na tvém počítači, je rozbitý.
Když to nefunguje
Odkaz na Když to nefungujePříznak. Selže kontrola struktury. Příčina. Zpráva jmenuje soubor a pravidlo, které jsi porušil. Řešení. Přesuň kód, nebo obyčejná data předej z vyššího modulu. Viz moduly.
Příznak. End-to-end testy se nespustí.
Příčina. Testovací prohlížeč není nainstalovaný.
Řešení. Spusť řádek playwright install výše.
Příznak. Testy v Go selžou kvůli chybějícím stránkám.
Příčina. Webová aplikace není sestavená.
Řešení. Spusť npm --prefix app/frontend run build.
Pro pokročilé
Odkaz na Pro pokročiléBuild tagy
Test s tagem se v obyčejném go test ./... přeskočí. Spustíš ho přes -tags <tag>.
| Tag | Obsahuje |
|---|---|
structure |
Pravidla pro vrstvy, rozložení souborů, umístění SQL a komentáře v tools/structurecheck |
measure |
Kontroly časování stahování |
lab |
Testy proti skutečným aplikacím v testovací laboratoři. Čtou HOLYARRS_LAB_* a přeskočí se, když nejsou nastavené |
labms, livesubs |
Běhy v laboratoři pro mediální servery a živé weby s titulky |
Dlouhé běhy a běhy poruch
CI je pouští navíc k obyčejným testům. Před vydáním je spusť také.
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| Proměnná | Dělá |
|---|---|
HOLYARRS_FAULT_OUT |
Soubor, do kterého běhy poruch zapíšou svou tabulku |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Zapnou měření času od pádu po přihlášení a pojmenují jeho výstupní soubor |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Zapnou paměťové běhy a pojmenují jejich výstupní soubor |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
Počet kol a seed pro smyčku pádů v app/backend/internal/mediafiles/dbtests (crash_test.go), která se při -short přeskočí |
Náhradní servery a proměnné
End-to-end testy spouštějí náhradní servery pro stahovače, zdroje a metadata server, takže žádný test nesáhne na skutečnou službu. Testy nastavují proměnné jako HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL a HOLYARRS_QBITTORRENT_URL, aby na ně program nasměrovaly. Skutečná instalace je nikdy nepotřebuje.
Kontrakt API má vlastní testy. TestOpenAPIGenerated selže, když se openapi.json rozejde s trasami, a snímek tabulky tras v tools/structurecheck/testdata selže při každé přidané, odebrané nebo přesunuté trase.
Související
Odkaz na SouvisejícíHolyArrs je zdarma. Pokud ti ušetřil čas, dej mu hvězdičku na GitHubu, podpoř ho sponzorstvím nebo kup mi kávu.