O framework de testes do Glide tem 3 camadas:
- L1 — Unit: lógica isolada de uma função ou struct.
- L2 — Integration: múltiplos módulos juntos, por exemplo
fs+os. - L3 — Golden: programa completo cuja
stdouté comparada com um arquivo.expected.
- Arquivos de teste ficam em
tests/com sufixo_test.glide. - Funções de teste começam com
test_e retornamint. - Retorno
0significa pass. - Goldens ficam em
tests/golden/ou ao lado dos.glidecorrespondentes. - Arquivos golden usam sufixo
.expected.
./glide testRoda todos os testes no diretório atual.
./glide test tests/Roda os arquivos *_test.glide do diretório.
./glide test tests/foo_test.glideRoda um arquivo de teste específico.
./glide test --golden tests/goldenRoda golden tests: build, run e diff da stdout contra o .expected.
As assertions ficam em stdlib::testing.
assert!(cond)— checagem booleana.assert_msg!(cond, msg)— checagem booleana com mensagem customizada. Suporta${interp}.assert_eq!(a, b)— igualdade paraint,boolechar.assert_str_eq!(a, b)— igualdade para string. Use isto para strings, nuncaassert_eq!com string.assert_not!(cond)— negação booleana.
Use para testar lógica isolada de uma função ou struct.
Exemplos:
- cálculo puro;
- validação de entrada;
- método de uma struct sem dependências externas.
Use para testar múltiplos módulos trabalhando juntos.
Exemplos:
fs+os;- parser + typechecker;
- biblioteca usando outra biblioteca.
Use para testar um programa completo.
O runner compila o programa, executa e compara a stdout com o arquivo .expected.
Exemplo curto:
import stdlib::testing::*;
import stdlib::math::*;
fn test_ipow_basic() -> int {
assert_eq!(ipow(2, 10), 1024);
return 0;
}
- O golden runner normaliza CRLF para LF, então
.expectedpode usar LF mesmo no Windows. - Tests rodam um arquivo por vez. Cada arquivo vira um binário, então state global não cruza arquivos.