Тестування
Налаштування
Перевір свою зміну на власному комп’ютері, перш ніж надсилати.
Перш ніж почати
Посилання на Перш ніж почати-
Пройди Налаштування. Тести Go віддають зібраний вебзастосунок, тож спершу збери його.
-
Один раз встанови браузер для тестів:
Terminal window npx --prefix app/frontend playwright install chromium
Запусти щоденні перевірки
Посилання на Запусти щоденні перевірки-
Збери й перевір код 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 ./...).
Запусти наскрізні тести
Посилання на Запусти наскрізні тестиНаскрізні тести керують справжнім браузером проти справжньої програми. Запусти проєкт для області, якої торкнувся:
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 | Поруч із файлом, який він тестує |
| Модульний тест вебзастосунку | Поруч зі своїм файлом, як name.test.ts |
| Наскрізний | app/tests/<module>/ |
Ніколи не звертайся до справжнього зовнішнього сервісу. Додай заглушку в app/tests/fakes. Тест, що проходить лише на твоєму комп’ютері, зламаний.
Якщо не працює
Посилання на Якщо не працюєОзнака. Не проходить структурна перевірка. Причина. Повідомлення називає файл і правило, яке ти порушив. Рішення. Перенеси код або передай прості дані з вищого модуля. Дивись Модулі.
Ознака. Наскрізні тести не запускаються.
Причина. Не встановлено браузер для тестів.
Рішення. Виконай рядок playwright install вище.
Ознака. Тести Go падають через відсутні сторінки.
Причина. Вебзастосунок не зібрано.
Рішення. Виконай npm --prefix app/frontend run 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 |
Сервери-заглушки та змінні
Наскрізні тести запускають сервери-заглушки для завантажувачів, джерел і сервера метаданих, тож жоден тест не звертається до справжнього сервісу. Тести задають змінні, як-от HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL і HOLYARRS_QBITTORRENT_URL, щоб спрямувати програму на них. Справжній установці вони ніколи не потрібні.
Контракт API має власні тести. TestOpenAPIGenerated падає, коли openapi.json розходиться з маршрутами, а знімок таблиці маршрутів у tools/structurecheck/testdata падає при будь-якому доданому, прибраному чи переміщеному маршруті.
Пов’язане
Посилання на Пов’язанеHolyArrs безкоштовний. Якщо він заощадив тобі час, познач його зіркою на GitHub, підтримай проєкт або пригости мене кавою.