Testing
Oppsett
Sjekk endringen din på maskinen din før du sender den inn.
Før du begynner
Lenke til Før du begynner-
Fullfør Oppsett. Go-testene serverer den bygde web-appen, så bygg den først.
-
Installer testnettleseren én gang:
Terminal window npx --prefix app/frontend playwright install chromium
Kjør de vanlige sjekkene
Lenke til Kjør de vanlige sjekkene-
Bygg og kontroller Go-koden:
Terminal window go build ./...go vet ./... -
Kjør Go-testene:
Terminal window go test ./... -
Sjekk og test web-appen:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Kjør reglene for lag og filoppsett:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Du skal ikke se noen feil. CI kjører de samme kommandoene, Go-kommandoene på amd64 og arm64, pluss én kjøring med race-detektoren (go test -race ./...).
Kjør ende-til-ende-testene
Lenke til Kjør ende-til-ende-testeneEnde-til-ende-tester styrer en ekte nettleser mot et ekte program. Kjør prosjektet for området du rørte:
npm --prefix app/frontend run e2e -- --project=moviesKjøringen starter sitt eget HolyArrs på en fersk konfigurasjonsmappe. Prosjektet setup lager eieren først, og de fleste andre prosjektene venter på det. Kjør hele suiten uten --project før en versjon.
Valg
Lenke til ValgHvilke prosjekter du skal kjøre
Lenke til Hvilke prosjekter du skal kjøre| Du endret | Kjør |
|---|---|
| Filmer | movies |
| Serier | shows |
| Forespørsler | requests, lists, reports |
| Nedlastinger | sources, downloaders, downloads |
| Innlogging og brukere | accounts, kid |
| Helse og tidsplaner | schedules, controls |
| Sideoppsett | desktop, phone, a11y |
Prosjektene har navn i app/frontend/playwright.config.ts. Et prosjekt som avhenger av et annet, kjører det først.
Hvor en ny test hører hjemme
Lenke til Hvor en ny test hører hjemme| Type | Hvor |
|---|---|
| Go | Ved siden av filen den tester |
| Enhetstest for web | Ved siden av filen, som name.test.ts |
| Ende-til-ende | app/tests/<module>/ |
Kall aldri en ekte tjeneste utenfra. Legg til en falsk tjeneste under app/tests/fakes. En test som bare består på maskinen din, er ødelagt.
Hvis det ikke fungerer
Lenke til Hvis det ikke fungererSymptom. En struktursjekk feiler. Årsak. Meldingen nevner filen og regelen du brøt. Løsning. Flytt koden, eller send rene data inn fra den høyere modulen. Se Moduler.
Symptom. Ende-til-ende-testene kommer ikke i gang.
Årsak. Testnettleseren er ikke installert.
Løsning. Kjør playwright install-linjen over.
Symptom. Go-testene feiler på manglende sider.
Årsak. Web-appen er ikke bygget.
Løsning. Kjør npm --prefix app/frontend run build.
For viderekomne
Lenke til For viderekomneBuild-tagger
En test med en tagg hoppes over i en vanlig go test ./.... Gi -tags <tag> for å kjøre den.
| Tagg | Inneholder |
|---|---|
structure |
Reglene for lag, filoppsett, SQL-plassering og kommentarer i tools/structurecheck |
measure |
Tidssjekker for nedlasting |
lab |
Tester mot ekte apper i et testlab. De leser HOLYARRS_LAB_* og hoppes over når de ikke er satt |
labms, livesubs |
Lab-kjøringer for medieservere og levende undertekstsider |
Lange kjøringer og feilkjøringer
CI kjører disse i tillegg til de vanlige testene. Kjør dem før en versjon.
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| Variabel | Gjør |
|---|---|
HOLYARRS_FAULT_OUT |
Filen feilkjøringene skriver tabellen sin til |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Slår på tidtakingen fra krasj til innlogging og navngir utdatafilen |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Slår på minnekjøringene og navngir utdatafilen |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
Antall runder og seed for krasjløkken i app/backend/internal/mediafiles/dbtests (crash_test.go), som hoppes over under -short |
Falske servere og variabler
Ende-til-ende-tester starter falske servere for nedlastere, kilder og metadataserveren, så ingen test når en ekte tjeneste. Testene setter variabler som HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL og HOLYARRS_QBITTORRENT_URL for å peke programmet mot dem. En ekte installasjon trenger dem aldri.
API-kontrakten har egne tester. TestOpenAPIGenerated feiler når openapi.json avviker fra rutene, og snapshotet av rutetabellen i tools/structurecheck/testdata feiler ved enhver rute som er lagt til, fjernet eller flyttet.
Relatert
Lenke til RelatertHolyArrs er gratis. Hvis det sparte deg tid, kan du gi det en stjerne på GitHub, sponse det eller spandere en kaffe.