Testy
Konfiguracja
Sprawdź zmianę na swoim komputerze, zanim ją wyślesz.
Zanim zaczniesz
Link do: Zanim zaczniesz-
Przejdź Konfigurację środowiska. Testy Go serwują zbudowaną aplikację webową, więc najpierw ją zbuduj.
-
Zainstaluj raz przeglądarkę testową:
Terminal window npx --prefix app/frontend playwright install chromium
Uruchom codzienne kontrole
Link do: Uruchom codzienne kontrole-
Zbuduj i sprawdź kod Go:
Terminal window go build ./...go vet ./... -
Uruchom testy Go:
Terminal window go test ./... -
Sprawdź i przetestuj aplikację webową:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Uruchom reguły warstw i układu plików:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Nie powinno być żadnego błędu. CI uruchamia te same polecenia, te z Go na amd64 i arm64, plus jedno uruchomienie z detektorem wyścigów (go test -race ./...).
Uruchom testy end-to-end
Link do: Uruchom testy end-to-endTesty end-to-end sterują prawdziwą przeglądarką na prawdziwym programie. Uruchom projekt dla obszaru, który zmieniasz:
npm --prefix app/frontend run e2e -- --project=moviesUruchomienie startuje własny HolyArrs na świeżym folderze konfiguracji. Projekt setup najpierw tworzy właściciela, a większość pozostałych projektów na niego czeka. Przed wydaniem wersji uruchom pełny zestaw bez --project.
Opcje
Link do: OpcjeKtóre projekty uruchomić
Link do: Które projekty uruchomić| Zmieniasz | Uruchom |
|---|---|
| Filmy | movies |
| Seriale | shows |
| Prośby | requests, lists, reports |
| Pobieranie | sources, downloaders, downloads |
| Logowanie i użytkowników | accounts, kid |
| Kondycję i harmonogramy | schedules, controls |
| Układ stron | desktop, phone, a11y |
Projekty są nazwane w app/frontend/playwright.config.ts. Projekt zależny od innego najpierw uruchamia tamten.
Gdzie trafia nowy test
Link do: Gdzie trafia nowy test| Rodzaj | Gdzie |
|---|---|
| Go | Obok pliku, który testuje |
| Jednostkowy webowy | Obok swojego pliku, jako name.test.ts |
| End-to-end | app/tests/<module>/ |
Nigdy nie wołaj prawdziwej usługi zewnętrznej. Dodaj zamiennik w app/tests/fakes. Test, który przechodzi tylko na twoim komputerze, jest zepsuty.
Jeśli to nie działa
Link do: Jeśli to nie działaObjaw. Kontrola struktury kończy się błędem. Przyczyna. Komunikat podaje plik i złamaną regułę. Rozwiązanie. Przenieś kod albo przekaż zwykłe dane z wyższego modułu. Zobacz Moduły.
Objaw. Testy end-to-end nie startują.
Przyczyna. Przeglądarka testowa nie jest zainstalowana.
Rozwiązanie. Wykonaj powyższe polecenie playwright install.
Objaw. Testy Go kończą się błędem o brakujących stronach.
Przyczyna. Aplikacja webowa nie jest zbudowana.
Rozwiązanie. Wykonaj npm --prefix app/frontend run build.
Dla zaawansowanych
Link do: Dla zaawansowanychTagi buildu
Test z tagiem jest pomijany w zwykłym go test ./.... Żeby go uruchomić, dodaj -tags <tag>.
| Tag | Zawiera |
|---|---|
structure |
Reguły warstw, układu plików, miejsca SQL i komentarzy w tools/structurecheck |
measure |
Kontrole czasu pobierania |
lab |
Testy na prawdziwych aplikacjach w laboratorium testowym. Czytają HOLYARRS_LAB_* i są pomijane, gdy te zmienne nie są ustawione |
labms, livesubs |
Uruchomienia laboratoryjne dla serwerów multimediów i działających serwisów z napisami |
Długie uruchomienia i awaryjne
CI uruchamia je dodatkowo, poza zwykłymi testami. Uruchom je przed wydaniem wersji.
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| Zmienna | Robi |
|---|---|
HOLYARRS_FAULT_OUT |
Plik, do którego uruchomienia awaryjne zapisują swoją tabelę |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Włączają pomiar czasu od awarii do logowania i nazywają plik wyjściowy |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Włączają uruchomienia pamięciowe i nazywają ich plik wyjściowy |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
Liczba rund i ziarno pętli awarii w app/backend/internal/mediafiles/dbtests (crash_test.go), która jest pomijana przy -short |
Serwery zastępcze i zmienne
Testy end-to-end startują serwery zastępcze dla downloaderów, źródeł i serwera metadanych, więc żaden test nie sięga do prawdziwej usługi. Testy ustawiają zmienne, takie jak HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL i HOLYARRS_QBITTORRENT_URL, żeby skierować program na te serwery. Prawdziwa instalacja nigdy ich nie potrzebuje.
Kontrakt API ma własne testy. TestOpenAPIGenerated przerywa build, gdy openapi.json rozjedzie się z trasami, a migawka tabeli tras w tools/structurecheck/testdata przerywa go przy każdej dodanej, usuniętej lub przeniesionej trasie.
Powiązane strony
Link do: Powiązane stronyHolyArrs jest darmowy. Jeśli oszczędził ci czas, daj mu gwiazdkę na GitHubie, zostań sponsorem albo postaw mi kawę.