Testes: o conjunto de validação
Executá-lo
just test
# or
python3 tests/validate.py Corre a partir de qualquer lado e só precisa de Python 3 (sem pacotes de terceiros, sem rede). Imprime uma linha por verificação e termina com um valor diferente de zero se alguma falhar, por isso serve para CI e como hook de pre-commit.
O que verifica
- Número de temas esperado (uma constante no topo do script).
- Numeração contígua dentro de cada parte, a começar em N.0.
- H1 corresponde ao decimal do nome do ficheiro em todos os temas.
- O título H1 corresponde a
spec/structure.mdcarácter a carácter, não apenas ao decimal inicial. - Secções obrigatórias presentes em todos os temas de conteúdo (Partes 1 a 8, temas N.1 e superiores), exatamente pela ordem do modelo.
- Número mínimo de palavras para cada tema de conteúdo (1500 palavras), com uma lista de permissões no script para exceções deliberadas.
- Sem travessões em qualquer ficheiro Markdown.
- Meios-travessões apenas entre dígitos, por isso “2.1–2.8” passa e os outros falham.
- Sem expressões proibidas (“not only”, “but also”, “load-bearing”).
- Todas as ligações
.mdinternas resolvem. - As referências cruzadas na prosa apontam para temas reais: uma referência a um número de tema sem ficheiro correspondente em disco falha, usando o mesmo padrão de referência que a ligação automática de temas do site publicado.
- As ligações à Wikipédia têm a forma correta (
https://en.wikipedia.org/wiki/...). spec/structure.mdcorresponde aos ficheiros em disco, nos dois sentidos.- O README, a página inicial e as páginas de conteúdo ligam a todos os temas.
Quando uma verificação falha
A linha que falhou nomeia o ficheiro e o problema. Correções comuns:
- Travessão encontrado: reescreva a frase para eliminar o ”—“. Não se limite a apagá-lo.
- Secção em falta: acrescente a secção
##em falta a partir do modelo de tema. - Discrepância de estrutura: acrescentou ou mudou o nome de um tema sem atualizar
spec/structure.md, ou o inverso. Realinhe-os. - Ligação quebrada: corrija o caminho ou atualize-o depois de uma mudança de nome.
- Falha na numeração: renumere para que a parte fique contígua a partir de N.0.
Para além do conjunto de validação
just spellexecuta o codespell sobre o repositório. A configuração, incluindo uma lista de ignorados para falsos positivos, é a secção[tool.codespell]empyproject.toml.just statsimprime um relatório em Markdown (contagem de palavras por tema, temas finos, ligações à Wikipédia, entradas de referências) a partir detools/stats.py.
Integração contínua
.github/workflows/test.ymlcorre em cada pull request e em pushes para ramos que não sejam o main: o conjunto de validação e o codespell. Este repositório não compila nem implementa o site; a renderização acontece no repositório separadosoftware-engineering-metrics.github.io..github/workflows/links.ymlverifica semanalmente as ligações externas com lychee (padrões ignorados em.lycheeignore) e mantém o resultado numa única issue “Link checker report”. As ligações externas são deliberadamente mantidas fora do caminho dos PR.
Não coberto pelos testes
O conjunto verifica a estrutura e o estilo, não a verdade. Não consegue saber se uma referência é real ou se a prosa é exata. Verifique citações e factos à mão ou com uma ronda de investigação. A existência de uma ligação à Wikipédia (distinta da sua forma) também exige uma verificação de rede, que o conjunto deixa de fora deliberadamente para poder correr offline.