Тестване
Настройка
Провери промяната си на своя компютър, преди да я изпратиш.
Преди да започнеш
Връзка към Преди да започнеш-
Мини през Настройка. Тестовете на Go сервират build-натото уеб приложение, така че първо го build-ни.
-
Инсталирай браузъра за тестове веднъж:
Terminal window npx --prefix app/frontend playwright install chromium
Пусни ежедневните проверки
Връзка към Пусни ежедневните проверки-
Build-ни и провери кода на Go:
Terminal window go build ./...go vet ./... -
Пусни тестовете на Go:
Terminal window go test ./... -
Провери и тествай уеб приложението:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Пусни правилата за слоевете и подредбата на файловете:
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 тестовете управляват истински браузър срещу истинска програма. Пусни проекта за областта, която си пипал:
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 ги пуска върху обикновените тестове. Пусни ги преди версия.
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| Променлива | Прави |
|---|---|
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, подкрепи го или почерпи ме с кафе.