ddouggs / test_command
Comandos para testes shell
README
Aqui está um exemplo de README.md bem estruturado para a sua classe TC:
📦 TestCommand (TC)
A classe TC é um utilitário abstrato para gerenciamento de testes, breakpoints e manipulação de arquivos dentro de um fluxo de execução. Ela atua como uma fachada (facade), centralizando chamadas para diferentes responsabilidades:
- 🧪 Testes (
Tests) - 📁 Arquivos (
Archives) - 🛑 Breakpoints (
Breakpoints)
🚀 Objetivo
Facilitar a execução de testes e depuração durante o desenvolvimento, fornecendo métodos estáticos simples e diretos para validações e controle de fluxo.
📂 Namespace
namespace test_command;
🧱 Estrutura
A classe depende das seguintes implementações:
Tests/TestsInterfaceArchives/ArchivesInterfaceBreakpoints/BreakpointsInterface
Essas classes são instanciadas automaticamente quando necessário (lazy loading).
⚙️ Inicialização
Ao instanciar a classe, o componente de arquivos é automaticamente carregado:
public function __construct() { $this->setArchives(new Archives()); }
🛑 Breakpoints
Permite controlar a execução do código em pontos específicos:
Métodos disponíveis:
TC::halt($output = [], $condition = true); TC::begin($output = [], $condition = true); TC::rollback($output = [], $condition = true);
Descrição:
- halt → Interrompe a execução
- begin → Marca o início de um bloco monitorado
- rollback → Reverte ou desfaz execução
🧪 Testes
Execução de testes
TC::testing($configs = null, $test = null);
✅ Asserções disponíveis
A classe fornece diversas asserções para validação de dados:
Tipos primitivos
TC::assertBool(fn() => true); TC::assertString(fn() => "texto"); TC::assertInt(fn() => 10); TC::assertFloat(fn() => 10.5); TC::assertArray(fn() => []); TC::assertObject(fn() => new stdClass()); TC::assertResource(fn() => fopen(...));
Comparações e validações
TC::assertTrue(fn() => true); TC::assertFalse(fn() => false); TC::assertNull(fn() => null); TC::assertEmpty(fn() => []); TC::assertEquals($expected, fn() => $value); TC::assertDiff($unexpected, fn() => $value);
Expressões e arquivos
TC::assertRegExp('/regex/', fn() => "valor"); TC::assertFileExists(fn() => "/caminho/arquivo");
Comparações numéricas
TC::assertGreaterThan(10, fn() => 20); TC::assertGreaterThanOrEqual(10, fn() => 10); TC::assertLessThan(10, fn() => 5); TC::assertLessThanOrEqual(10, fn() => 10);
Tipagem e instância
TC::assertInstanceOf(MinhaClasse::class, fn() => new MinhaClasse());
🧠 Funcionamento interno
A classe utiliza:
- Lazy initialization: Instancia objetos apenas quando necessário
- Singleton-like static storage: Mantém instâncias em propriedades estáticas
- Encapsulamento: Métodos
get*eset*controlam acesso interno
🔒 Métodos internos importantes
getTests()/setTests()getArchives()/setArchives()getBreakpoints()/setBreakpoints()
Esses métodos garantem que apenas uma instância de cada componente seja utilizada.
📌 Observações
- Todos os métodos são estáticos, facilitando o uso global
- Ideal para ambientes de desenvolvimento e debugging
- Depende da correta implementação das classes auxiliares (
Tests,Archives,Breakpoints)
💡 Exemplo de uso
use test_command\TC; // Teste simples TC::assertTrue(fn() => 1 === 1, 'Teste básico'); // Comparação TC::assertEquals(10, fn() => 5 + 5); // Breakpoint TC::halt(['Erro encontrado'], true);
📄 Licença
Defina aqui a licença do seu projeto.
Se quiser, posso melhorar esse README para:
- padrão de pacote Composer
- adicionar badges (build, cobertura, etc.)
- ou transformar isso em documentação estilo Laravel/PHPUnit 👌