Preskoči na sadržaj

Testiranje

Postavljanje

Provjeri promjenu na svom računalu prije nego je pošalješ.

  • 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
  1. Izgradi i provjeri Go kod:

    Terminal window
    go build ./...
    go vet ./...
  2. Pokreni Go testove:

    Terminal window
    go test ./...
  3. Provjeri i testiraj web aplikaciju:

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

End-to-end testovi upravljaju pravim preglednikom nad pravim programom. Pokreni projekt za područje koje diraš:

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

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

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.

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.

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

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

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

HolyArrs je besplatan. Ako ti je uštedio vrijeme, daj mu zvjezdicu na GitHubu, podrži ga ili počasti me kavom.