Testavimas
Sąranka
Patikrink pakeitimą savo kompiuteryje prieš siųsdamas.
Prieš pradedant
Nuoroda į Prieš pradedant-
Pabaik sąranką. Go testai aptarnauja sukompiliuotą žiniatinklio programą, todėl pirmiausia ją sukompiliuok.
-
Vieną kartą įdiek testų naršyklę:
Terminal window npx --prefix app/frontend playwright install chromium
Paleisk kasdienes patikras
Nuoroda į Paleisk kasdienes patikras-
Sukompiliuok ir patikrink Go kodą:
Terminal window go build ./...go vet ./... -
Paleisk Go testus:
Terminal window go test ./... -
Patikrink ir ištestuok žiniatinklio programą:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Paleisk sluoksnių ir failų išdėstymo taisykles:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Turėtum pamatyti, kad nieko nenulūžo. CI vykdo tas pačias komandas, Go komandas su amd64 ir arm64, ir dar vieną paleidimą su race detektoriumi (go test -race ./...).
Paleisk end-to-end testus
Nuoroda į Paleisk end-to-end testusEnd-to-end testai valdo tikrą naršyklę su tikra programa. Paleisk projektą sričiai, kurią lietei:
npm --prefix app/frontend run e2e -- --project=moviesPaleidimas pats pasileidžia HolyArrs su švariu konfigūracijos aplanku. Projektas setup pirmiausia sukuria savininką, ir daugelis kitų projektų jo laukia. Prieš versiją paleisk visą rinkinį be --project.
Pasirinkimai
Nuoroda į PasirinkimaiKuriuos projektus paleisti
Nuoroda į Kuriuos projektus paleisti| Ką pakeitei | Paleisk |
|---|---|
| Filmus | movies |
| Serialus | shows |
| Prašymus | requests, lists, reports |
| Atsisiuntimus | sources, downloaders, downloads |
| Prisijungimą ir naudotojus | accounts, kid |
| Būklę ir tvarkaraščius | schedules, controls |
| Puslapio išdėstymą | desktop, phone, a11y |
Projektai įvardyti app/frontend/playwright.config.ts. Projektas, kuris priklauso nuo kito, pirmiausia paleidžia jį.
Kur dedamas naujas testas
Nuoroda į Kur dedamas naujas testas| Rūšis | Kur |
|---|---|
| Go | Šalia failo, kurį testuoja |
| Žiniatinklio unit | Šalia savo failo, kaip name.test.ts |
| End-to-end | app/tests/<module>/ |
Niekada nekviesk tikros išorinės paslaugos. Pridėk pakaitalą aplanke app/tests/fakes. Testas, kuris praeina tik tavo kompiuteryje, yra sugedęs.
Jei neveikia
Nuoroda į Jei neveikiaPožymis. Struktūros patikra nepavyksta. Priežastis. Pranešime nurodytas failas ir taisyklė, kurią sulaužei. Sprendimas. Perkelk kodą arba perduok paprastus duomenis iš aukštesnio modulio. Žiūrėk modulius.
Požymis. End-to-end testai nepasileidžia.
Priežastis. Neįdiegta testų naršyklė.
Sprendimas. Vykdyk aukščiau esančią playwright install eilutę.
Požymis. Go testai nepavyksta dėl trūkstamų puslapių.
Priežastis. Žiniatinklio programa nesukompiliuota.
Sprendimas. Vykdyk npm --prefix app/frontend run build.
Pažengusiems
Nuoroda į PažengusiemsBuild tag
Testas su tag paprastame go test ./... praleidžiamas. Kad jį paleistum, perduok -tags <tag>.
| Tag | Laiko |
|---|---|
structure |
Sluoksnių, failų išdėstymo, SQL vietos ir komentarų taisykles tools/structurecheck |
measure |
Atsisiuntimo laiko patikras |
lab |
Testus su tikromis programomis bandymų lab. Jie skaito HOLYARRS_LAB_* ir praleidžiami, kai tų nėra |
labms, livesubs |
Lab bandymus medijos serveriams ir gyvoms subtitrų svetainėms |
Ilgi ir fault bandymai
CI juos paleidžia papildomai prie paprastų testų. Paleisk juos prieš versiją.
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| Kintamasis | Ką daro |
|---|---|
HOLYARRS_FAULT_OUT |
Failas, į kurį fault bandymai rašo savo lentelę |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Įjungia laiko matavimą nuo strigties iki prisijungimo ir nurodo jo išvesties failą |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Įjungia atminties bandymus ir nurodo jų išvesties failą |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
Ciklų skaičius ir seed strigčių ciklui app/backend/internal/mediafiles/dbtests (crash_test.go), kuris praleidžiamas su -short |
Pakaitiniai serveriai ir kintamieji
End-to-end testai paleidžia pakaitinius serverius atsisiuntimo programoms, šaltiniams ir metaduomenų serveriui, todėl joks testas nepasiekia tikros paslaugos. Testai nustato kintamuosius, pavyzdžiui, HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL ir HOLYARRS_QBITTORRENT_URL, kad nukreiptų programą į juos. Tikram diegimui jų niekada nereikia.
API sutartis turi savo testus. TestOpenAPIGenerated nepavyksta, kai openapi.json nutolsta nuo maršrutų, o maršrutų lentelės momentinė kopija tools/structurecheck/testdata nepavyksta dėl bet kurio pridėto, pašalinto ar perkelto maršruto.
Susiję puslapiai
Nuoroda į Susiję puslapiaiHolyArrs yra nemokama. Jei sutaupė tau laiko, pažymėk jį žvaigždute GitHub, paremk jį arba nupirk man kavos.