Pular para o conteúdo

Testes

Configuração

Verifica a tua alteração no teu computador antes de a enviares.

  • 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
  1. Compila e verifica o código Go:

    Terminal window
    go build ./...
    go vet ./...
  2. Executa os testes de Go:

    Terminal window
    go test ./...
  3. Verifica e testa a app web:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. 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 ponta

Os testes de ponta a ponta controlam um navegador a sério contra um programa a sério. Executa o projeto da área que tocaste:

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

A 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.

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.

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.

Sintoma. 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.

Build 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.

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
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.

O HolyArrs é gratuito. Se te poupou tempo, dá-lhe uma estrela no GitHub, patrocina-o ou oferece-me um café.