@c English version 2012-01-29
@menu
* Funciones y variables para la detección e informe de fallos::
@end menu


@node Funciones y variables para la detección e informe de fallos,  , Detección e informe de fallos, Detección e informe de fallos

@section Funciones y variables para la detección e informe de fallos

@deffn {Función} run_testsuite ([@var{options}])

Ejecuta el conjunto de pruebas de Maxima. Los tests que producen las 
respuestas deseadas son considerados como ``pruebas superadas'', como
los tests que no producen las respuestas deseadas, son marcados como
fallos conocidos. 

@code{run_testsuite} admite las siguientes opciones:

@table @code
@item display_all
Muestra todas las pruebas. Normalmente no se muestran las pruebas,
a menos que produzcan fallos. (Su valor por defecto es @code{false}).
@item display_known_bugs
Muestra las pruebas marcadas como fallos ya conocidos. (Su valor
por defecto es @code{false}).
@item tests
Esta es la lista de las pruebas que se deben ejecutar. Cada prueba
se puede especificar, tanto mediante una cadena de texto como
por un símbolo. Por defecto, todas las pruebas se ejecutan. El
conjunto completo de pruebas está especificado en @code{testsuite_files}.
@item time
Muestra información sobre tiempos de ejecución. Si vale @code{true},
se muestran los tiempos de los ficheros de prueba. Si vale @code{all},
se muestran los tiempos de cada prueba individual si @code{display_all}
vale @code{true}. El valor por defecto es @code{false}, por lo que no
se muestra información temporal alguna.
@end table

Por ejemplo, @code{run_testsuite(display_known_bugs = true, tests=[rtest5])}
ejecuta la prueba @code{rtest5} y muestra si está marcada como fallo
conocido.

@code{run_testsuite(display_all = true, tests=["rtest1", rtest1a])} ejecutará
las pruebas @code{rtest1} y @code{rtest2}, mostrando cada una de ellas.

@code{run_testsuite} cambia el entorno de Maxima. 
Típicamente un script de test ejecuta @code{kill} para establecer un entorno conocido (llámese uno sin funciones ni variables definidas por el usuario) y entonces define una serie de funciones y variables apropiadas para el test. 

@code{run_testsuite} retorna @code{done}.
@end deffn


@defvr {Variable opcional} testsuite_files

@code{testsuite_files} es el conjunto de tests a ejecutar por @code{run_testsuite}. Se trata de una lista con los nombres de los ficheros que contienen los tests a ejecutar. Si se sabe que alguno de los tests de un fichero falla, entonces en lugar de listar el nombre del fichero, se utiliza una lista que contiene el nombre del fichero y los números de los tests que fallan.

Por ejemplo, esta es una parte de los tests por defecto:

@example
 ["rtest13s", ["rtest14", 57, 63]]
@end example

Con esto se especifica que el conjunto de tests está formado por los ficheros "rtest13s"  y "rtest14", pero que "rtest14" contiene dos tests que se sabe que causan fallos, el 57 y el 63.
@end defvr


@deffn {Función} bug_report ()
Imprime las versiones de Maxima y de Lisp y proporciona un enlace a la
página web sobre informe de fallos del proyecto Maxima. 
La información respecto a las versiones es la misma que reporta la 
función @code{build_info}. 

Cuando se informa sobre un fallo, es de gran ayuda que se copie la
información relacionada con la versión de Maxima y de Lisp usada,
dentro del propio informe. 

@code{bug_report} retorna una cadena vacía @code{""}.
@end deffn

@deffn {Función} build_info ()
Devuelve un resumen de los parÃ¡metros con los que se ha compilado Maxima
en formato de estructura @code{defstruct}. Los campos de la estructura son:
@code{version}, @code{timestamp}, @code{host}, @code{lisp_name} y @code{lisp_version}.
Cuando @code{display2d} toma el valor @code{true}, la estructura se muestra como una
pequeña tabla.

Véase también @code{bug_report}.

Ejemplos:

@c ===beg===
@c build_info ();
@c x : build_info ()$
@c x@version;
@c x@timestamp;
@c x@host;
@c x@lisp_name;
@c x@lisp_version;
@c x;
@c ===end===
@example
@group
(%i1) build_info ();
(%o1) 
Maxima version: "5.26.0_16_gb72c64c_dirty"
Maxima build date: "2012-01-29 12:29:04"
Host type: "i686-pc-linux-gnu"
Lisp implementation type: "CMU Common Lisp"
Lisp implementation version: "CVS release-19a 19a-release-20040728 + minimal debian patches"
@end group
(%i2) x : build_info ()$
@group
(%i3) x@@version;
(%o3)               5.26.0_16_gb72c64c_dirty
@end group
@group
(%i4) x@@timestamp;
(%o4)                  2012-01-29 12:29:04
@end group
@group
(%i5) x@@host;
(%o5)                   i686-pc-linux-gnu
@end group
@group
(%i6) x@@lisp_name;
(%o6)                    CMU Common Lisp
@end group
@group
(%i7) x@@lisp_version;
(%o7) 
    CVS release-19a 19a-release-20040728 + minimal debian patches
@end group
@group
(%i8) x;
(%o8) 
Maxima version: "5.26.0_16_gb72c64c_dirty"
Maxima build date: "2012-01-29 12:29:04"
Host type: "i686-pc-linux-gnu"
Lisp implementation type: "CMU Common Lisp"
Lisp implementation version: "CVS release-19a 19a-release-20040728 + minimal debian patches"
@end group
@end example
@end deffn

