Testen
Installatie
Controleer je wijziging op je eigen computer voordat je die instuurt.
Voor je begint
Link naar Voor je begint-
Rond de Configuratie af. De Go-tests serveren de gebouwde web-app, dus bouw die eerst.
-
Installeer de testbrowser één keer:
Terminal window npx --prefix app/frontend playwright install chromium
De dagelijkse controles uitvoeren
Link naar De dagelijkse controles uitvoeren-
Bouw en controleer de Go-code met vet:
Terminal window go build ./...go vet ./... -
Voer de Go-tests uit:
Terminal window go test ./... -
Controleer en test de web-app:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Voer de regels voor lagen en bestandsindeling uit:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Je ziet geen enkele fout. CI draait dezelfde opdrachten, de Go-opdrachten op amd64 en arm64, plus één run met de race-detector (go test -race ./...).
De end-to-end-tests uitvoeren
Link naar De end-to-end-tests uitvoerenEnd-to-end-tests sturen een echte browser aan tegen een echt programma. Voer het project uit voor het gebied dat je hebt aangeraakt:
npm --prefix app/frontend run e2e -- --project=moviesDe run start zijn eigen HolyArrs met een verse configuratiemap. Het project setup maakt eerst de eigenaar aan en de meeste andere projecten wachten erop. Voer voor een versie de volledige suite uit zonder --project.
Keuzes
Link naar KeuzesWelke projecten je uitvoert
Link naar Welke projecten je uitvoert| Je hebt gewijzigd | Voer uit |
|---|---|
| Films | movies |
| Series | shows |
| Aanvragen | requests, lists, reports |
| Downloads | sources, downloaders, downloads |
| Aanmelden en gebruikers | accounts, kid |
| Gezondheid en schema’s | schedules, controls |
| Pagina-indeling | desktop, phone, a11y |
Projecten staan met naam in app/frontend/playwright.config.ts. Een project dat van een ander afhangt, draait dat eerst.
Waar een nieuwe test heen gaat
Link naar Waar een nieuwe test heen gaat| Soort | Waar |
|---|---|
| Go | Naast het bestand dat hij test |
| Web-unit | Naast het bestand, als name.test.ts |
| End-to-end | app/tests/<module>/ |
Roep nooit een echte externe dienst aan. Voeg een vervanger toe onder app/tests/fakes. Een test die alleen op jouw computer slaagt, is kapot.
Als het niet werkt
Link naar Als het niet werktSymptoom. Een structuurcontrole mislukt. Oorzaak. De melding noemt het bestand en de regel die je hebt overtreden. Oplossing. Verplaats de code, of geef gewone data door vanuit de hogere module. Zie Modules.
Symptoom. End-to-end-tests kunnen niet starten.
Oorzaak. De testbrowser is niet geïnstalleerd.
Oplossing. Voer de regel met playwright install hierboven uit.
Symptoom. De Go-tests mislukken door ontbrekende pagina’s.
Oorzaak. De web-app is niet gebouwd.
Oplossing. Voer npm --prefix app/frontend run build uit.
Voor gevorderden
Link naar Voor gevorderdenBuild-tags
Een test met een tag wordt overgeslagen in een gewone go test ./.... Geef -tags <tag> mee om hem uit te voeren.
| Tag | Bevat |
|---|---|
structure |
De regels voor lagen, bestandsindeling, plek van SQL en commentaar in tools/structurecheck |
measure |
Controles op downloadtijden |
lab |
Tests tegen echte apps in een testlab. Ze lezen HOLYARRS_LAB_* en worden overgeslagen als die niet zijn ingesteld |
labms, livesubs |
Lab-runs voor mediaservers en live ondertitelsites |
Lange runs en foutruns
CI draait deze bovenop de gewone tests. Voer ze uit voor een versie.
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| Variabele | Doet |
|---|---|
HOLYARRS_FAULT_OUT |
Bestand waarin de foutruns hun tabel schrijven |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Zetten de meting van crash tot aanmelden aan en geven het uitvoerbestand een naam |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Zetten de geheugenruns aan en geven hun uitvoerbestand een naam |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
Rondes en seed voor de crashlus in app/backend/internal/mediafiles/dbtests (crash_test.go), die onder -short wordt overgeslagen |
Vervangende servers en variabelen
End-to-end-tests starten vervangende servers voor downloaders, bronnen en de metadataserver, dus geen enkele test bereikt een echte dienst. De tests stellen variabelen in zoals HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL en HOLYARRS_QBITTORRENT_URL om het programma ernaar te laten wijzen. Een echte installatie heeft ze nooit nodig.
Het API-contract heeft eigen tests. TestOpenAPIGenerated mislukt als openapi.json afwijkt van de routes, en de momentopname van de routetabel in tools/structurecheck/testdata mislukt bij elke toegevoegde, verwijderde of verplaatste route.
Gerelateerde pagina’s
Link naar Gerelateerde pagina’sHolyArrs is gratis. Heeft het je tijd bespaard, geef het een ster op GitHub, sponsor het of trakteer me op een kop koffie.