Към съдържанието

Тестване

Настройка

Провери промяната си на своя компютър, преди да я изпратиш.

  • Мини през Настройка. Тестовете на Go сервират build-натото уеб приложение, така че първо го build-ни.

  • Инсталирай браузъра за тестове веднъж:

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

Пусни ежедневните проверки

Връзка към Пусни ежедневните проверки
  1. Build-ни и провери кода на 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 До файла, който тества
Уеб unit До своя файл, като name.test.ts
End-to-end app/tests/<module>/

Никога не викай истинска външна услуга. Добави заместител в app/tests/fakes. Тест, който минава само на твоя компютър, е счупен.

Проблем. Проверка на структурата пада. Причина. Съобщението назовава файла и правилото, което си нарушил. Решение. Премести кода или подай обикновени данни от по-горния модул. Виж Модули.

Проблем. End-to-end тестовете не могат да стартират. Причина. Браузърът за тестове не е инсталиран. Решение. Изпълни реда с playwright install по-горе.

Проблем. Тестовете на Go падат заради липсващи страници. Причина. Уеб приложението не е build-нато. Решение. Изпълни 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 Кръгове и начална стойност за цикъла на сривове в 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, подкрепи го или почерпи ме с кафе.