Ga naar inhoud

Testen

Installatie

Controleer je wijziging op je eigen computer voordat je die instuurt.

  • 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
  1. Bouw en controleer de Go-code met vet:

    Terminal window
    go build ./...
    go vet ./...
  2. Voer de Go-tests uit:

    Terminal window
    go test ./...
  3. Controleer en test de web-app:

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

End-to-end-tests sturen een echte browser aan tegen een echt programma. Voer het project uit voor het gebied dat je hebt aangeraakt:

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

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

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

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

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

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
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’s

HolyArrs is gratis. Heeft het je tijd bespaard, geef het een ster op GitHub, sponsor het of trakteer me op een kop koffie.