Пређи на садржај

Тестирање

Подешавање

Провери своју измену на свом рачунару пре него што је пошаљеш.

Пре него што почнеш

Линк до Пре него што почнеш
  • Заврши Подешавање. Go тестови служе изграђену веб апликацију, па је прво изгради.

  • Једном инсталирај тест претраживач:

    Terminal window
    npx --prefix app/frontend playwright install chromium

Покрени свакодневне провере

Линк до Покрени свакодневне провере
  1. Изгради и провери Go код:

    Terminal window
    go build ./...
    go vet ./...
  2. Покрени Go тестове:

    Terminal window
    go test ./...
  3. Провери и тестирај веб апликацију:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. Покрени правила о слојевима и распореду фајлова:

    Terminal window
    go test -tags structure ./app/backend/tools/structurecheck

Не би требало да видиш ниједну грешку. CI покреће исте команде, Go на amd64 и arm64, плус једно покретање са детектором трка (go test -race ./...).

Покрени end-to-end тестове

Линк до Покрени end-to-end тестове

End-to-end тестови воде прави претраживач против правог програма. Покрени пројекат за област коју си дирао:

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

Покретање подиже свој HolyArrs на свежем конфигурационом фолдеру. Пројекат setup прво прави власника, а већина осталих пројеката чека на њега. Пре објављивања верзије покрени цео скуп без --project.

Које пројекте покренути

Линк до Које пројекте покренути
Променио си Покрени
Филмове movies
Серије shows
Захтеве requests, lists, reports
Преузимања sources, downloaders, downloads
Пријаву и кориснике accounts, kid
Исправност и распореде schedules, controls
Распоред странице desktop, phone, a11y

Пројекти су наведени у app/frontend/playwright.config.ts. Пројекат који зависи од другог прво покреће тај други.

Где иде нови тест

Линк до Где иде нови тест
Врста Где
Go Поред фајла који тестира
Web unit Поред свог фајла, као name.test.ts
End-to-end app/tests/<module>/

Никада не зови прави спољни сервис. Додај замену у app/tests/fakes. Тест који пролази само на твом рачунару је покварен.

Симптом. Структурна провера пада. Узрок. Порука наводи фајл и правило које си прекршио. Решење. Премести код, или проследи обичне податке из вишег модула. Погледај Модули.

Симптом. End-to-end тестови не могу да се покрену. Узрок. Тест претраживач није инсталиран. Решење. Изврши playwright install линију одозго.

Симптом. Go тестови падају због недостајућих страница. Узрок. Веб апликација није изграђена. Решење. Изврши npm --prefix app/frontend run build.

Build тагови

Тест са тагом се прескаче у обичном go test ./.... Проследи -tags <tag> да га покренеш.

Таг Садржи
structure Правила о слојевима, распореду фајлова, месту SQL-а и коментарима у tools/structurecheck
measure Провере времена преузимања
lab Тестове против правих апликација у тест лабораторији. Читају HOLYARRS_LAB_* и прескачу се када то није постављено
labms, livesubs Лабораторијска покретања за медија сервере и живе сајтове за титлове
Дуга покретања и покретања са падовима

CI ово покреће преко обичних тестова. Покрени их пре верзије.

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
Променљива Ради
HOLYARRS_FAULT_OUT Фајл у који покретања са падовима пишу своју табелу
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT Укључују мерење времена од пада до пријаве и именују његов излазни фајл
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT Укључују покретања за меморију и именују њихов излазни фајл
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED Рунде и seed за петљу пада у app/backend/internal/mediafiles/dbtests (crash_test.go), која се прескаче под -short
Замене за сервере и променљиве

End-to-end тестови покрећу замене за сервере преузимача, извора и сервер метаподатака, тако да ниједан тест не додирује прави сервис. Тестови постављају променљиве као што су HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL и HOLYARRS_QBITTORRENT_URL да упуте програм на њих. Права инсталација их никада не треба.

API уговор има своје тестове. TestOpenAPIGenerated пада када се openapi.json разиђе са рутама, а снимак табеле рута у tools/structurecheck/testdata пада на свакој додатој, уклоњеној или премештеној рути.

Повезане странице

Линк до Повезане странице

HolyArrs је бесплатан. Ако ти је уштедео време, остави звездицу на GitHub-у, постани спонзор или купи ми кафу.