perl-testing
Orienta seu agente na criação de testes para código Perl. Ajuda a usar ferramentas como Test2::V0 e a medir a cobertura do código.
O que ela faz
Esta ferramenta ajuda você a escrever e organizar testes para seu código Perl. Ela usa métodos modernos como Test2::V0 e Test::More para garantir que seu código funcione corretamente e para verificar a cobertura dos testes.
Quando usar
- ✓Escrever novos testes para um programa Perl.
- ✓Verificar se os testes existentes em um projeto Perl estão funcionando bem.
- ✓Melhorar a forma como os testes são organizados em um projeto.
Exemplo do que pedir para a IA
“Como posso escrever um teste simples para verificar se uma função adiciona dois números corretamente em Perl?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta fornece exemplos e estruturas para escrever testes em Perl. Você pode usar 'Test::More' ou o mais moderno 'Test2::V0' para definir o que seu código deve fazer e verificar se ele faz. Ela também ajuda a organizar esses testes e a rodá-los com a ferramenta 'prove'.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill perl-testingOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/perl-testing/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Padrões de Teste em Perl
Estratégias abrangentes de teste para aplicações Perl usando Test2::V0, Test::More, prove e metodologia TDD.
Quando Ativar
- Escrevendo novo código Perl (siga TDD: vermelho, verde, refatorar)
- Projetando suítes de teste para módulos ou aplicações Perl
- Revisando a cobertura de testes Perl
- Configurando infraestrutura de testes Perl
- Migrando testes de Test::More para Test2::V0
- Depurando testes Perl que falham
Fluxo de Trabalho TDD
Sempre siga o ciclo VERMELHO-VERDE-REFATORAR.
# Step 1: RED — Write a failing test
# t/unit/calculator.t
use v5.36;
use Test2::V0;
use lib 'lib';
use Calculator;
subtest 'addition' => sub {
my $calc = Calculator->new;
is($calc->add(2, 3), 5, 'adds two numbers');
is($calc->add(-1, 1), 0, 'handles negatives');
};
done_testing;
# Step 2: GREEN — Write minimal implementation
# lib/Calculator.pm
package Calculator;
use v5.36;
use Moo;
sub add($self, $a, $b) {
return $a + $b;
}
1;
# Step 3: REFACTOR — Improve while tests stay green
# Run: prove -lv t/unit/calculator.t
Fundamentos do Test::More
O módulo de teste padrão do Perl — amplamente utilizado, vem com o core.
Asserções Básicas
use v5.36;
use Test::More;
# Plan upfront or use done_testing
# plan tests => 5; # Fixed plan (optional)
# Equality
is($result, 42, 'returns correct value');
isnt($result, 0, 'not zero');
# Boolean
ok($user->is_active, 'user is active');
ok(!$user->is_banned, 'user is not banned');
# Deep comparison
is_deeply(
$got,
{ name => 'Alice', roles => ['admin'] },
'returns expected structure'
);
# Pattern matching
like($error, qr/not found/i, 'error mentions not found');
unlike($output, qr/password/, 'output hides password');
# Type check
isa_ok($obj, 'MyApp::User');
can_ok($obj, 'save', 'delete');
done_testing;
SKIP e TODO
use v5.36;
use Test::More;
# Skip tests conditionally
SKIP: {
skip 'No database configured', 2 unless $ENV{TEST_DB};
my $db = connect_db();
ok($db->ping, 'database is reachable');
is($db->version, '15', 'correct PostgreSQL version');
}
# Mark expected failures
TODO: {
local $TODO = 'Caching not yet implemented';
is($cache->get('key'), 'value', 'cache returns value');
}
done_testing;
Test2::V0 Framework Moderno
Test2::V0 é o substituto moderno para Test::More — asserções mais ricas, melhores diagnósticos e extensível.
Por que Test2?
- Comparação profunda superior com construtores de hash/array
- Melhor saída de diagnóstico em falhas
- Subtestes com escopo mais limpo
- Extensível via plugins Test2::Tools::*
- Compatível com versões anteriores com testes Test::More
Comparação Profunda com Construtores
use v5.36;
use Test2::V0;
# Hash builder — check partial structure
is(
$user->to_hash,
hash {
field name => 'Alice';
field email => match(qr/\@example\.com$/);
field age => validator(sub { $_ >= 18 });
# Ignore other fields
etc();
},
'user has expected fields'
);
# Array builder
is(
$result,
array {
item 'first';
item match(qr/^second/);
item DNE(); # Does Not Exist — verify no extra items
},
'result matches expected list'
);
# Bag — order-independent comparison
is(
$tags,
bag {
item 'perl';
item 'testing';
item 'tdd';
},
'has all required tags regardless of order'
);
Subtestes
use v5.36;
use Test2::V0;
subtest 'User creation' => sub {
my $user = User->new(name => 'Alice', email => 'alice@example.com');
ok($user, 'user object created');
is($user->name, 'Alice', 'name is set');
is($user->email, 'alice@example.com', 'email is set');
};
subtest 'User validation' => sub {
my $warnings = warns {
User->new(name => '', email => 'bad');
};
ok($warnings, 'warns on invalid data');
};
done_testing;
Testando Exceções com Test2
use v5.36;
use Test2::V0;
# Test that code dies
like(
dies { divide(10, 0) },
qr/Division by zero/,
'dies on division by zero'
);
# Test that code lives
ok(lives { divide(10, 2) }, 'division succeeds') or note($@);
# Combined pattern
subtest 'error handling' => sub {
ok(lives { parse_config('valid.json') }, 'valid config parses');
like(
dies { parse_config('missing.json') },
qr/Cannot open/,
'missing file dies with message'
);
};
done_testing;
Organização de Testes e prove
Estrutura de Diretórios
t/
…
Perguntas frequentes
O que é TDD?
TDD significa Test-Driven Development (Desenvolvimento Guiado por Testes). É uma abordagem onde você escreve um teste primeiro, depois o código para fazer o teste passar, e então melhora o código.
Qual a diferença entre Test::More e Test2::V0?
Test2::V0 é uma versão mais nova e poderosa do Test::More, oferecendo mais recursos e melhores diagnósticos de erros.
O que é 'cobertura de teste'?
Cobertura de teste é uma métrica que mostra qual parte do seu código foi executada pelos seus testes. Ajuda a identificar partes do código que não foram testadas.
Detalhes
Descrição original do autor
Perl testing patterns using Test2::V0, Test::More, prove runner, mocking, coverage with Devel::Cover, and TDD methodology. Use when writing Perl tests with Test2::V0 or Test::More, or measuring coverage.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #97
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
webapp-testing
Permite testar aplicações web locais, verificar funcionalidades e depurar o comportamento da interface. Captura screenshots e logs do navegador.
anthropics/skills
ponytail-audit
Faz uma auditoria completa do código. Ele encontra bugs, falhas de segurança, código lento e sugere o que remover ou melhorar.
DietrichGebert/ponytail
ponytail-review
Revisa a qualidade de uma mudança no código. Verifica se a lógica está correta, se é segura, rápida e se todas as linhas são necessárias.
DietrichGebert/ponytail