Início Tecnologia Tc – estrutura de teste independente de linguagem de Theodore Calvin |...

Tc – estrutura de teste independente de linguagem de Theodore Calvin | cinetotal.com.br

8
0
Tc – estrutura de teste independente de linguagem de Theodore Calvin
| cinetotal.com.br

Tc – estrutura de teste independente de linguagem de Theodore Calvin

testes independentes de linguagem para hackers unix theodore “tc” calvin – piloto de helicóptero, estrutura de testes homônima, lenda |=o=o=o=o=o=o=o=o=o=o=o=| tc v1.0.0 – funil de ilha | testando qualquer idioma, em qualquer lugar ___/ \___ (o) voe com segurança, teste bem (( tc ))======\ \_______/ (o) ^ ^ ^———–^ O que: estrutura de teste independente de idioma. Escreva testes uma vez, execute em qualquer linguagem (bash, python, ferrugem, go, qualquer que seja). Como: Os testes são diretórios. Seu código lê input.json de stdin, grava expect.json em stdout. É isso. Primeiros passos: # clone e instale git clone https://github.com/ahoward/tc.git cd tc # IMPORTANTE: Adicione ao PATH (evita conflito com o comando de controle de tráfego Unix) export PATH=”$PWD/tc/bin:$PATH” # verifique tc –version # tente o exemplo hello-world tc exemplos/hello-world # crie seu primeiro teste tc novos testes/my-feature É isso. Veja a documentação completa para recursos avançados. Configuração de PATH (evite conflito tc Unix) tc entra em conflito com o comando de controle de tráfego Unix. Você DEVE adicionar o tc deste projeto ao seu PATH. # Adicione ao PATH para a sessão atual export PATH=”$PWD/tc/bin:$PATH” # Adicione à configuração do shell para persistência (opcional) echo ‘export PATH=”$PWD/tc/bin:$PATH”‘ >> ~/.bashrc # ou ~/.zshrc Verifique: qual tc # deve mostrar: ./tc/bin/tc (NÃO /usr/sbin/tc) tc –version # deve mostrar: tc v1.0.0 – island hopper tc é uma estrutura de teste extremamente simples que permite: testar qualquer linguagem com o mesmo conjunto de testes organizar testes como diretórios com entrada/saída json executar testes com zero dependências (apenas jq) código de porta entre linguagens sem reescrever testes simples • portátil • independente de linguagem • unix • orientado a especificações Na era da IA, especificações e testes são permanentes enquanto as implementações são descartáveis. Os testes são as especificações. O código é um artefato de construção. Porte idiomas livremente, guarde testes para sempre. experimental: demonstração dao multilíngue Veja projetos/ e exemplos/multi-lang-dao/ para obter um exemplo funcional de interfaces DAO idênticas em 5 linguagens (Ruby, Go, Python, JavaScript, Rust), todas passando no mesmo conjunto de testes. Visão: Aplicações descartáveis. Troque de idioma livremente, guarde os testes para sempre. Consulte docs/THEORY.md para obter a visão completa do padrão do adaptador do sistema. # execução do teste tc # executa todos os testes (KISS!) tc # executa o conjunto de testes único tc –all # executa todas as suítes na árvore de diretórios tc –tags TAG # executa suítes correspondentes à tag tc –parallel # executa todos os conjuntos em paralelo (detecção automática de CPU) tc –parallel N # executado com N trabalhadores paralelos # geração de teste tc new # gera novo conjunto de testes tc init (diretório) # inicializa o diretório de teste com README # descoberta e lista tc de metadados (caminho) # lista todos os conjuntos de testes com tags tc de metadados (caminho) # mostra todas as tags disponíveis tc explicam # explica o que um conjunto de testes faz # info tc –version # mostra a versão tc –help # mostra a ajuda Modo TTY (terminal): Limpa o status de linha única com spinner, comportamento fail-fast Modo não TTY (CI/CD): Saída detalhada tradicional com logs completos Substituição: TC_FANCY_OUTPUT=true/false → documentação completa | → tc novo guia | → teoria do adaptador de sistema (WIP) my-feature/ ├── run # executável: lê input.json, grava json em stdout └── data/ └── cenário-1/ ├── input.json # test input └── esperado.json # saída esperada tc my-feature # ✓ passa ou ✗ fail tc suporta correspondência de padrões simples em esperado.json para valores dinâmicos: { “id”: “”, “status”: “pending”, “created_at”: “”, “count”: “”, “message”: “” } Padrões: – valida o formato UUID v4 – valida o carimbo de data / hora ISO 8601 (AAAA-MM-DDTHH:MM:SS) – qualquer número JSON – qualquer valor de string – verdadeiro ou falso – valor nulo – corresponde qualquer coisa Funciona em qualquer lugar: Objetos aninhados Elementos da matriz Misturados com valores exatos Nenhuma configuração necessária – os padrões são detectados automaticamente. Defina seus próprios padrões via TC_CUSTOM_PATTERNS: export TC_CUSTOM_PATTERNS=”email:^(a-zA-Z0-9._%+-)+@(a-zA-Z0-9.-)+\.(a-zA-Z){2,}$ ipv4:^((0-9){1,3}\.){3}(0-9){1,3}$ phone:^\+?(0-9){10,15}$” Em seguida, use em esperado.json: { “email”: “”, “server”: “”, “contact”: “” } Formato: pattern_name:regex (um por linha, sintaxe regex padrão) execução de teste: geração de teste: descoberta e metadados: qualidade: roteiro: → tc-kit: teste orientado por IA EXPERIMENTAL tc-kit integra-se com spec-kit para teste automático geração a partir de especificações. Perfeito para fluxos de trabalho de desenvolvimento assistidos por IA, onde as especificações e os testes são permanentes, enquanto as implementações são descartáveis. Início rápido: # Gere testes a partir da especificação /tc.specify # Implemente para passar nos testes, edite tc/tests/my-feature/user-story-01/run # Valide e refine /tc.validate /tc.refine Consulte AI.md para obter a documentação completa. Pré-requisitos: bash 4.0+, jq # Instale jq brew install jq # macOS sudo apt-get install jq # Ubuntu/Debian # Clone tc git clone https://github.com/ahoward/tc.git cd tc # Adicione ao PATH export PATH=”$PWD/tc/bin:$PATH” # Verifique tc –version Consulte a seção TL;DR acima para obter detalhes de configuração do PATH. licença mit – veja LICENÇA feita com e helicópteros “o helicóptero está abastecido e pronto para partir. vamos testar algum código.” — tc voe seguro, teste bem um baseado #n5


Publicado: 2025-12-22 22:03:00

fonte: github.com