Przejdź do głównej zawartości

Testy

Konfiguracja

Sprawdź zmianę na swoim komputerze, zanim ją wyślesz.

  • 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
  1. Zbuduj i sprawdź kod Go:

    Terminal window
    go build ./...
    go vet ./...
  2. Uruchom testy Go:

    Terminal window
    go test ./...
  3. Sprawdź i przetestuj aplikację webową:

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

Testy end-to-end sterują prawdziwą przeglądarką na prawdziwym programie. Uruchom projekt dla obszaru, który zmieniasz:

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

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

Któ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ła

Objaw. 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 zaawansowanych
Tagi 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.

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

HolyArrs jest darmowy. Jeśli oszczędził ci czas, daj mu gwiazdkę na GitHubie, zostań sponsorem albo postaw mi kawę.