Gå til innholdet

Testing

Oppsett

Sjekk endringen din på maskinen din før du sender den inn.

  • 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
  1. Bygg og kontroller Go-koden:

    Terminal window
    go build ./...
    go vet ./...
  2. Kjør Go-testene:

    Terminal window
    go test ./...
  3. Sjekk og test web-appen:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. 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-testene

Ende-til-ende-tester styrer en ekte nettleser mot et ekte program. Kjør prosjektet for området du rørte:

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

Kjø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.

Hvilke 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 fungerer

Symptom. 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.

Build-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.

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
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.

HolyArrs er gratis. Hvis det sparte deg tid, kan du gi det en stjerne på GitHub, sponse det eller spandere en kaffe.