EndBASIC crea suite de pruebas ejecutables escribir tests en Markdown

Fuentes: A Markdown-based test suite
EndBASIC crea suite de pruebas ejecutables escribir tests en Markdown
Imagen generada con IA

Este artículo presenta una suite de pruebas innovadora desarrollada por Julio Merino para el proyecto EndBASIC, donde todos los casos de prueba se escriben en archivos Markdown en lugar de usar código Rust tradicional. Esta metodología surge tras un experimento con agentes de IA que reveló la necesidad de documentación ejecutable y legible por máquinas. El objetivo principal era crear pruebas que sirvieran tanto para validación humana como para el entrenamiento de modelos de IA, aprovechando que Markdown es el lenguaje común de la IA.

Cada archivo Markdown contiene múltiples casos de prueba estructurados con secciones específicas: Source (código fuente en Basic), Disassembly (bytecode compilado), Output (salida por consola), Exit code, Compilation errors y Runtime errors. Por ejemplo, una prueba simple valida el comando END con un código como «END 42» y verifica que el bytecode generado sea correcto y el código de salida sea 42.

El driver de pruebas procesa estos archivos enumerando todos los casos, compilando el código fuente, ejecutándolo en la VM, capturando los resultados y generando nuevos archivos Markdown con los valores obtenidos. Luego compara el archivo generado (actual) contra el archivo golden (esperado) registrado en el repositorio; si difieren, la prueba falla. La regeneración de archivos golden es automática estableciendo REGEN=true.

Esta metodología tiene ventajas significativas: las pruebas funcionan como documentación canónica, los archivos generados son fáciles de revisar por humanos, y los modelos de IA pueden extraer reglas automáticamente del conjunto de pruebas. Además, permite que un agente de IA analice los archivos de prueba y entienda las particularidades del dialecto EndBASIC sin intervención manual.

Actualmente existen 448 casos de prueba y 13k líneas de Markdown, lo que demuestra escalabilidad. Las limitaciones incluyen que no comprueba actualmente el interior del lexer/parser, aunque el autor considera agregar dumps de AST. También requiere mantener coherencia entre los archivos golden y el código del compilador cuando se realizan cambios.

Esta metodología sería útil para proyectos que buscan documentación ejecutable y compatible con IA, particularmente lenguajes de programación, VMs o herramientas educativas.