Testiranje
Postavljanje
Provjeri promjenu na svom računalu prije nego je pošalješ.
Prije nego počneš
Poveznica na Prije nego počneš-
Završi Postavljanje. Go testovi poslužuju izgrađenu web aplikaciju, pa je prvo izgradi.
-
Jednom instaliraj testni preglednik:
Terminal window npx --prefix app/frontend playwright install chromium
Pokreni svakodnevne provjere
Poveznica na Pokreni svakodnevne provjere-
Izgradi i provjeri Go kod:
Terminal window go build ./...go vet ./... -
Pokreni Go testove:
Terminal window go test ./... -
Provjeri i testiraj web aplikaciju:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Pokreni pravila slojeva i rasporeda datoteka:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Ne bi smjelo biti nijedne greške. CI pokreće iste naredbe, Go naredbe na amd64 i arm64, uz jedno pokretanje s detektorom race uvjeta (go test -race ./...).
Pokreni end-to-end testove
Poveznica na Pokreni end-to-end testoveEnd-to-end testovi upravljaju pravim preglednikom nad pravim programom. Pokreni projekt za područje koje diraš:
npm --prefix app/frontend run e2e -- --project=moviesPokretanje samo diže vlastiti HolyArrs na svježoj mapi s konfiguracijom. Projekt setup prvo napravi vlasnika, a većina ostalih projekata čeka na njega. Prije izdavanja verzije pokreni cijeli paket bez --project.
Izbori
Poveznica na IzboriKoje projekte pokrenuti
Poveznica na Koje projekte pokrenuti| Mijenjaš | Pokreni |
|---|---|
| Filmove | movies |
| Serije | shows |
| Zahtjeve | requests, lists, reports |
| Preuzimanja | sources, downloaders, downloads |
| Prijavu i korisnike | accounts, kid |
| Stanje i rasporede | schedules, controls |
| Raspored stranice | desktop, phone, a11y |
Projekti su imenovani u app/frontend/playwright.config.ts. Projekt koji ovisi o drugome prvo pokreće taj drugi.
Kamo ide novi test
Poveznica na Kamo ide novi test| Vrsta | Gdje |
|---|---|
| Go | Pokraj datoteke koju testira |
| Web unit | Pokraj svoje datoteke, kao name.test.ts |
| End-to-end | app/tests/<module>/ |
Nikad ne zovi pravi vanjski servis. Dodaj zamjenu u app/tests/fakes. Test koji prolazi samo na tvom računalu je pokvaren.
Ako ne radi
Poveznica na Ako ne radiSimptom. Provjera strukture ne prolazi. Uzrok. Poruka navodi datoteku i pravilo koje je prekršeno. Rješenje. Premjesti kod ili predaj obične podatke iz višeg modula. Vidi Moduli.
Simptom. End-to-end testovi se ne mogu pokrenuti.
Uzrok. Testni preglednik nije instaliran.
Rješenje. Izvrši gornju naredbu playwright install.
Simptom. Go testovi ne prolaze jer nedostaju stranice.
Uzrok. Web aplikacija nije izgrađena.
Rješenje. Izvrši npm --prefix app/frontend run build.
Za napredne
Poveznica na Za napredneBuild tagovi
Test s tagom preskače se u običnom go test ./.... Predaj -tags <tag> da ga pokreneš.
| Tag | Sadrži |
|---|---|
structure |
Pravila slojeva, rasporeda datoteka, smještaja SQL-a i komentara u tools/structurecheck |
measure |
Provjere vremena preuzimanja |
lab |
Testove na pravim aplikacijama u testnom labu. Čitaju HOLYARRS_LAB_* i preskaču se kad nisu postavljeni |
labms, livesubs |
Lab pokretanja za medijske poslužitelje i žive stranice s titlovima |
Duga i fault pokretanja
CI ih pokreće povrh običnih testova. Pokreni ih prije izdavanja verzije.
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| Varijabla | Radi |
|---|---|
HOLYARRS_FAULT_OUT |
Datoteka u koju fault pokretanja pišu svoju tablicu |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Uključuju mjerenje vremena od rušenja do prijave i imenuju izlaznu datoteku |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Uključuju pokretanja s memorijom i imenuju izlaznu datoteku |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
Broj krugova i seed za petlju rušenja u app/backend/internal/mediafiles/dbtests (crash_test.go), koja se preskače pod -short |
Zamjenski serveri i varijable
End-to-end testovi pokreću zamjenske servere za preuzimatelje, izvore i server s metapodacima, pa nijedan test ne dira pravi servis. Testovi postavljaju varijable poput HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL i HOLYARRS_QBITTORRENT_URL da usmjere program na njih. Prava instalacija ih nikad ne treba.
API ugovor ima vlastite testove. TestOpenAPIGenerated ne prolazi kad se openapi.json razilazi s rutama, a snimka tablice ruta u tools/structurecheck/testdata ne prolazi pri svakoj dodanoj, uklonjenoj ili premještenoj ruti.
Povezane stranice
Poveznica na Povezane straniceHolyArrs je besplatan. Ako ti je uštedio vrijeme, daj mu zvjezdicu na GitHubu, podrži ga ili počasti me kavom.