Testes
Configuração
Verifica a tua alteração no teu computador antes de a enviares.
Antes de começares
Ligação para Antes de começares-
Termina a Configuração. Os testes de Go servem a app web compilada, por isso compila-a primeiro.
-
Instala uma vez o navegador de testes:
Terminal window npx --prefix app/frontend playwright install chromium
Executa as verificações do dia a dia
Ligação para Executa as verificações do dia a dia-
Compila e verifica o código Go:
Terminal window go build ./...go vet ./... -
Executa os testes de Go:
Terminal window go test ./... -
Verifica e testa a app web:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Executa as regras de camadas e de organização de ficheiros:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Não deves ver nenhuma falha. O CI executa os mesmos comandos, os de Go em amd64 e arm64, mais uma execução com o detetor de race (go test -race ./...).
Executa os testes de ponta a ponta
Ligação para Executa os testes de ponta a pontaOs testes de ponta a ponta controlam um navegador a sério contra um programa a sério. Executa o projeto da área que tocaste:
npm --prefix app/frontend run e2e -- --project=moviesA execução arranca o seu próprio HolyArrs com uma pasta de configuração nova. O projeto setup cria primeiro o proprietário, e a maioria dos outros projetos espera por ele. Executa a suite completa, sem --project, antes de uma versão.
Opções
Ligação para OpçõesQue projetos executar
Ligação para Que projetos executar| Mudaste | Executa |
|---|---|
| Filmes | movies |
| Séries | shows |
| Pedidos | requests, lists, reports |
| Transferências | sources, downloaders, downloads |
| Início de sessão e utilizadores | accounts, kid |
| Saúde e agendamentos | schedules, controls |
| Disposição das páginas | desktop, phone, a11y |
Os projetos estão nomeados em app/frontend/playwright.config.ts. Um projeto que depende de outro executa-o primeiro.
Onde vai um teste novo
Ligação para Onde vai um teste novo| Tipo | Onde |
|---|---|
| Go | Ao lado do ficheiro que testa |
| Unitário da web | Ao lado do ficheiro, como name.test.ts |
| Ponta a ponta | app/tests/<module>/ |
Nunca chames um serviço externo a sério. Acrescenta um substituto em app/tests/fakes. Um teste que só passa no teu computador está estragado.
Se não funcionar
Ligação para Se não funcionarSintoma. Uma verificação de estrutura falha. Causa. A mensagem indica o ficheiro e a regra que quebraste. Solução. Move o código, ou passa dados simples a partir do módulo superior. Vê Módulos.
Sintoma. Os testes de ponta a ponta não arrancam.
Causa. O navegador de testes não está instalado.
Solução. Executa a linha playwright install acima.
Sintoma. Os testes de Go falham por faltarem páginas.
Causa. A app web não está compilada.
Solução. Executa npm --prefix app/frontend run build.
Para especialistas
Ligação para Para especialistasBuild tags
Um teste com uma tag é ignorado num go test ./... simples. Passa -tags <tag> para o executar.
| Tag | Contém |
|---|---|
structure |
As regras de camadas, de organização de ficheiros, de localização do SQL e de comentários em tools/structurecheck |
measure |
Verificações de tempos de transferência |
lab |
Testes contra apps a sério num laboratório de testes. Leem HOLYARRS_LAB_* e são ignorados quando essas variáveis não estão definidas |
labms, livesubs |
Execuções de laboratório para servidores multimédia e sites de legendas reais |
Execuções longas e de falhas
O CI executa-as além dos testes simples. Executa-as antes de uma versão.
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| Variável | Faz |
|---|---|
HOLYARRS_FAULT_OUT |
Ficheiro onde as execuções de falhas escrevem a sua tabela |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Ativam a medição do tempo entre a falha e o início de sessão e indicam o ficheiro de saída |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Ativam as execuções de memória e indicam o ficheiro de saída |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
Rondas e semente do ciclo de falhas em app/backend/internal/mediafiles/dbtests (crash_test.go), que é ignorado com -short |
Servidores substitutos e variáveis
Os testes de ponta a ponta arrancam servidores substitutos para gestores de transferências, Fontes e o servidor de metadados, por isso nenhum teste chega a um serviço real. Os testes definem variáveis como HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL e HOLYARRS_QBITTORRENT_URL para apontar o programa para eles. Uma instalação real nunca precisa delas.
O contrato da API tem os seus próprios testes. O TestOpenAPIGenerated falha quando o openapi.json diverge das rotas, e o instantâneo da tabela de rotas em tools/structurecheck/testdata falha com qualquer rota acrescentada, removida ou movida.
Relacionado
Ligação para RelacionadoO HolyArrs é gratuito. Se te poupou tempo, dá-lhe uma estrela no GitHub, patrocina-o ou oferece-me um café.