Testaus
Käyttöönotto
Tarkista muutoksesi omalla koneellasi ennen kuin lähetät sen.
Ennen kuin aloitat
Linkki otsikkoon Ennen kuin aloitat-
Käy läpi Käyttöönotto. Go-testit tarjoavat rakennetun verkkosovelluksen, joten rakenna se ensin.
-
Asenna testiselain kerran:
Terminal window npx --prefix app/frontend playwright install chromium
Aja päivittäiset tarkistukset
Linkki otsikkoon Aja päivittäiset tarkistukset-
Rakenna ja tarkista Go-koodi:
Terminal window go build ./...go vet ./... -
Aja Go-testit:
Terminal window go test ./... -
Tarkista ja testaa verkkosovellus:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Aja kerros- ja tiedostorakennesäännöt:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Virheitä ei pitäisi tulla. CI ajaa samat komennot, Go-komennot arkkitehtuureilla amd64 ja arm64, sekä yhden ajon race-tunnistimella (go test -race ./...).
Aja end-to-end-testit
Linkki otsikkoon Aja end-to-end-testitEnd-to-end-testit ohjaavat oikeaa selainta oikeaa ohjelmaa vasten. Aja projekti alueelle, jota muutit:
npm --prefix app/frontend run e2e -- --project=moviesAjo käynnistää oman HolyArrsinsa tuoreella asetuskansiolla. Projekti setup tekee ensin omistajan, ja useimmat muut projektit odottavat sitä. Aja koko sarja ilman --project-lippua ennen versiota.
Vaihtoehdot
Linkki otsikkoon VaihtoehdotMitkä projektit ajetaan
Linkki otsikkoon Mitkä projektit ajetaan| Muutit | Aja |
|---|---|
| Elokuvat | movies |
| Sarjat | shows |
| Pyynnöt | requests, lists, reports |
| Lataukset | sources, downloaders, downloads |
| Kirjautuminen ja käyttäjät | accounts, kid |
| Kunto ja aikataulut | schedules, controls |
| Sivun asettelu | desktop, phone, a11y |
Projektit on nimetty tiedostossa app/frontend/playwright.config.ts. Projekti, joka riippuu toisesta, ajaa sen ensin.
Minne uusi testi menee
Linkki otsikkoon Minne uusi testi menee| Laji | Minne |
|---|---|
| Go | Testattavan tiedoston viereen |
| Web-yksikkötesti | Tiedostonsa viereen nimellä name.test.ts |
| End-to-end | app/tests/<module>/ |
Älä koskaan kutsu oikeaa ulkoista palvelua. Lisää sijaispalvelin kansioon app/tests/fakes. Testi, joka läpäisee vain sinun koneellasi, on rikki.
Jos se ei toimi
Linkki otsikkoon Jos se ei toimiOire. Rakennetarkistus epäonnistuu. Syy. Virheilmoitus nimeää tiedoston ja säännön, jonka rikoit. Ratkaisu. Siirrä koodi tai välitä tavallista dataa ylemmältä moduulilta. Katso Moduulit.
Oire. End-to-end-testit eivät käynnisty.
Syy. Testiselainta ei ole asennettu.
Ratkaisu. Suorita yllä oleva playwright install -rivi.
Oire. Go-testit epäonnistuvat, koska sivuja puuttuu.
Syy. Verkkosovellusta ei ole rakennettu.
Ratkaisu. Suorita npm --prefix app/frontend run build.
Asiantuntijoille
Linkki otsikkoon AsiantuntijoilleBuild-tagit
Testi, jolla on tagi, ohitetaan tavallisessa go test ./... -ajossa. Aja se antamalla -tags <tag>.
| Tagi | Sisältö |
|---|---|
structure |
Kerros-, tiedostorakenne-, SQL-sijainti- ja kommenttisäännöt kohdassa tools/structurecheck |
measure |
Latausten ajoitustarkistukset |
lab |
Testit oikeita sovelluksia vasten testilabrassa. Ne lukevat HOLYARRS_LAB_* ja ohittavat itsensä, jos niitä ei ole asetettu |
labms, livesubs |
Labra-ajot mediapalvelimille ja live-tekstityssivustoille |
Pitkät ajot ja vika-ajot
CI ajaa nämä tavallisten testien lisäksi. Aja ne ennen versiota.
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| Muuttuja | Tehtävä |
|---|---|
HOLYARRS_FAULT_OUT |
Tiedosto, johon vika-ajot kirjoittavat taulukkonsa |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Ottavat käyttöön kaatumisesta kirjautumiseen -ajoituksen ja nimeävät sen tulostetiedoston |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Ottavat käyttöön muistiajot ja nimeävät niiden tulostetiedoston |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
Kierrokset ja siemen kaatumissilmukalle kohdassa app/backend/internal/mediafiles/dbtests (crash_test.go), joka ohitetaan komennolla -short |
Sijaispalvelimet ja muuttujat
End-to-end-testit käynnistävät sijaispalvelimet latausohjelmille, lähteille ja metadatapalvelimelle, joten mikään testi ei tavoita oikeaa palvelua. Testit asettavat muuttujia, kuten HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL ja HOLYARRS_QBITTORRENT_URL, ohjatakseen ohjelman niihin. Oikea asennus ei koskaan tarvitse niitä.
API-sopimuksella on omat testinsä. TestOpenAPIGenerated epäonnistuu, kun openapi.json eroaa reiteistä, ja reittitaulun tilannekuva kansiossa tools/structurecheck/testdata epäonnistuu jokaisesta lisätystä, poistetusta tai siirretystä reitistä.
Aiheesta lisää
Linkki otsikkoon Aiheesta lisääHolyArrs on ilmainen. Jos se säästi aikaasi, anna sille tähti GitHubissa, tue sitä tai tarjoa minulle kahvit.