Skip to content

test(integration): suíte de testes end-to-end com programas C reais#149

Merged
Bappoz merged 1 commit into
developerfrom
feat/integration-test-suite
Jun 19, 2026
Merged

test(integration): suíte de testes end-to-end com programas C reais#149
Bappoz merged 1 commit into
developerfrom
feat/integration-test-suite

Conversation

@matheuslemesam

@matheuslemesam matheuslemesam commented Jun 19, 2026

Copy link
Copy Markdown
Collaborator

Contexto

A suíte de testes atual cobre unitariamente lexer, parser e semântico, mas não há testes que exercitem o pipeline completo de ponta-a-ponta em programas C reais. Este PR adiciona essa suíte de integração.

O que foi feito

tests/integration_test.rs com helper compile_file() que executa o pipeline completo (lex → parse → semantic) e coleta diagnósticos de todas as fases, mais 15 testes:

Válidos (8) — zero diagnósticos

hello_world, arithmetic, fibonacci, structs, pointers, typedef, enum_usage, control_flow

Inválidos (7) — diagnóstico esperado

Arquivo SemanticErrorKind
undeclared_var UndefinedVariable
type_mismatch_assign TypeMismatch
assign_const AssignToConst
redeclaration Redeclaration
return_in_void ReturnInVoid
arity_mismatch ArityMismatch
call_non_function CallNonFunction

Notas de implementação

  • Sem alterações em src/ nem no CI (o workflow já roda cargo test --all, que coleta tests/ automaticamente).
  • Programas válidos evitam printf/stdlib (o lexer descarta #include e não há protótipos variádicos), usam funções próprias e return.
  • Funções chamadoras são definidas após as chamadas (callee-first) para evitar forward-ref/PrototypeMissingBody.
  • Toda variável local é inicializada e consumida (sem warnings de UnusedVariable/MayBeUninitialized), atendendo ao critério de zero diagnósticos.
  • Structs usam instâncias globais (não há struct-literal e struct local lida em p.x = dispara warning de uninit).

Critérios de aceite

  • 8 programas válidos sem falsos-positivos
  • 7 programas inválidos com diagnósticos corretos
  • Tudo roda em cargo test
  • CI verde

@matheuslemesam matheuslemesam requested a review from Bappoz June 19, 2026 11:10
@matheuslemesam

Copy link
Copy Markdown
Collaborator Author

#132

… C reais

Cria tests/integration_test.rs com helper compile_file() que executa o
pipeline completo (lex -> parse -> semantic) e 15 testes:

- 8 programas validos (zero diagnosticos): hello_world, arithmetic,
  fibonacci, structs, pointers, typedef, enum_usage, control_flow
- 7 programas invalidos com diagnostico esperado: undeclared_var,
  type_mismatch_assign, assign_const, redeclaration, return_in_void,
  arity_mismatch, call_non_function

Os testes sao coletados automaticamente por cargo test --all no CI.
@matheuslemesam matheuslemesam force-pushed the feat/integration-test-suite branch from 05c7717 to 8f8cd74 Compare June 19, 2026 11:38
@matheuslemesam matheuslemesam changed the base branch from master to developer June 19, 2026 11:38
@Bappoz

Bappoz commented Jun 19, 2026

Copy link
Copy Markdown
Owner

Encontrei só um code smell menor (struct CompileResult com único campo, abstração desnecessária) e simplifiquei localmente para retornar Vec direto — essa mudança não foi enviada ao PR remoto, ficou só no seu checkout local (branch pr-149).

@Bappoz Bappoz merged commit aef4719 into developer Jun 19, 2026
1 check passed
@Bappoz Bappoz deleted the feat/integration-test-suite branch June 19, 2026 14:35
@Bappoz Bappoz linked an issue Jun 19, 2026 that may be closed by this pull request
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[TEST] Testes de integração end-to-end: compilar e verificar programas C reais

2 participants