!RunTest es un script simple para ejecutar pruebas de manera automatizada. El código actual se encuentra en source:branches/version2/runtest
Una vez instalado, es decir, una vez que se ha copiado el ejecutable a algún directorio del path como /usr/local/bin, se accede al directorio de tests a probar y se ejecuta sin argumentos. Por ahora es necesario que se ejecute en el mismo directorio donde los test se encuentran.
Lo único que necesita es Python3. Instalando el paquete en Ubuntu o Debian, que no sobreescribe al anterior python (sólo añade el ejecutable python3); ya se debe ejecutar sin problemas.
Por ahora sólo se encuentran los siguientes:
Cuando cualquier script devuelve algo distinto de 0 se considerá que ha fallado, se lee su salida estándar y su salida de errores para mostrarlo por pantalla. En caso de que devuelva 0 no se mostrará nada, aunque el script haya escrito en la salida estándar o de errores y se considerará que no ha habido errores.
El script devuelve el número de test que han fallado. Si no ha habido errores devolverá 0 y no mostrará nada. Si los ha habido entonces mostrará toda la información que el test o el script haya proporcionado, además de dónde ha fallado.
!RunTest también tiene tests que comprueban su funcionamiento. Vamos a la carpeta test del y ejecutamos RunTest allí. También es útil para entender el funcionamiento de RunTest.
alex@Huevo ~/projects/opengnsys $ cd branches/version2/runtest/tests/
alex@Huevo ~/projects/opengnsys/branches/version2/runtest/tests $ ../runtest.py
alex@Huevo ~/projects/opengnsys/branches/version2/runtest/tests $
La estructura del fichero es bastante simple. Runtest considera un comando la linea que comience por el carácter '$'. Cuando encuentra un comando las lineas siguiente son el resultado que el comando, al ejecutarse, va a mostrar. Se consideran resultado todas las lineas hasta que:
Cualquier otra linea que no cumpla el criterio de comando o resultado será considerado como un comentario, que pueden ser usado para explicar en que consiste el test y que se espera comprobar con él.
En el caso que se necesitará tener lineas en blanco en el resultado de un comando sustituirlas por :
$ cat fichero_cualquiera
Esto es un fichero
<BLANKLINE>
que tiene varias
<BLANKLINE>
líneas vacías.
<BLANKLINE>
Para ver un ejemplo completo se puede mirar el test14 de los tests del propio Runtest.
Según la versión de Python las excepciones pueden mostrarse de manera distinta. Actualmente se usa Python 3.2 que es la última estable de Python. Puede que los test de Runtest muestren errores por esa razón pero no es debido a un mal funcionamiento del script.