Testning
Konfiguration
Kontrollera din ändring på din dator innan du skickar den.
Innan du börjar
Länk till Innan du börjar-
Slutför Konfiguration. Go-testerna serverar den byggda webbappen, så bygg den först.
-
Installera testwebbläsaren en gång:
Terminal window npx --prefix app/frontend playwright install chromium
Kör de vanliga kontrollerna
Länk till Kör de vanliga kontrollerna-
Bygg och granska Go-koden:
Terminal window go build ./...go vet ./... -
Kör Go-testerna:
Terminal window go test ./... -
Kontrollera och testa webbappen:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Kör reglerna för lager och filstruktur:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Du ska inte se något fel. CI kör samma kommandon, Go-kommandona på amd64 och arm64, plus en körning med race-detektorn (go test -race ./...).
Kör end-to-end-testerna
Länk till Kör end-to-end-testernaEnd-to-end-tester styr en riktig webbläsare mot ett riktigt program. Kör projektet för området du rörde:
npm --prefix app/frontend run e2e -- --project=moviesKörningen startar sitt eget HolyArrs på en ny konfigurationsmapp. Projektet setup skapar ägaren först, och de flesta andra projekt väntar på det. Kör hela sviten utan --project före en version.
Vilka projekt du ska köra
Länk till Vilka projekt du ska köra| Du ändrade | Kör |
|---|---|
| Filmer | movies |
| Serier | shows |
| Förfrågningar | requests, lists, reports |
| Nedladdningar | sources, downloaders, downloads |
| Inloggning och användare | accounts, kid |
| Hälsa och scheman | schedules, controls |
| Sidlayout | desktop, phone, a11y |
Projekten är namngivna i app/frontend/playwright.config.ts. Ett projekt som beror på ett annat kör det först.
Vart ett nytt test hör hemma
Länk till Vart ett nytt test hör hemma| Sort | Var |
|---|---|
| Go | Bredvid filen det testar |
| Webb-enhetstest | Bredvid sin fil, som name.test.ts |
| End-to-end | app/tests/<module>/ |
Anropa aldrig en riktig extern tjänst. Lägg till en ersättare under app/tests/fakes. Ett test som bara går igenom på din dator är trasigt.
Om det inte fungerar
Länk till Om det inte fungerarSymptom. En strukturkontroll misslyckas. Orsak. Meddelandet nämner filen och regeln du bröt. Lösning. Flytta koden, eller skicka ner vanlig data från den högre modulen. Se Moduler.
Symptom. End-to-end-testerna kan inte starta.
Orsak. Testwebbläsaren är inte installerad.
Lösning. Kör raden med playwright install ovan.
Symptom. Go-testerna misslyckas på att sidor saknas.
Orsak. Webbappen är inte byggd.
Lösning. Kör npm --prefix app/frontend run build.
För experter
Länk till För experterBuild-taggar
Ett test med en tagg hoppas över i en vanlig go test ./.... Ange -tags <tag> för att köra det.
| Tagg | Innehåller |
|---|---|
structure |
Reglerna för lager, filstruktur, SQL-placering och kommentarer i tools/structurecheck |
measure |
Tidskontroller för nedladdningar |
lab |
Tester mot riktiga appar i ett testlabb. De läser HOLYARRS_LAB_* och hoppas över när de inte är satta |
labms, livesubs |
Labbkörningar för mediaservrar och riktiga undertextsidor |
Långa körningar och felkörningar
CI kör dessa utöver de vanliga testerna. Kör dem före en version.
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 | Gör |
|---|---|
HOLYARRS_FAULT_OUT |
Filen som felkörningarna skriver sin tabell till |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Slår på tidtagningen från krasch till inloggning och namnger dess utdatafil |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Slår på minneskörningarna och namnger deras utdatafil |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
Antal rundor och frö för kraschloopen i app/backend/internal/mediafiles/dbtests (crash_test.go), som hoppas över under -short |
Ersättarservrar och variabler
End-to-end-testerna startar ersättarservrar för nedladdare, källor och metadataservern, så inget test når en riktig tjänst. Testerna sätter variabler som HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL och HOLYARRS_QBITTORRENT_URL för att peka programmet mot dem. En riktig installation behöver dem aldrig.
API-kontraktet har egna tester. TestOpenAPIGenerated misslyckas när openapi.json glider isär från routerna, och ögonblicksbilden av route-tabellen i tools/structurecheck/testdata misslyckas vid varje tillagd, borttagen eller flyttad route.
Relaterat
Länk till RelateratHolyArrs är gratis. Om det sparade dig tid kan du ge det en stjärna på GitHub, sponsra det eller bjuda mig på en kaffe.