= !RunTest = !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. == Tipos de tests == Por ahora sólo se encuentran los siguientes: 1. test de script: es un test basado en cualquier tipo de archivo ejecutable. Deben tener permiso de ejecución y puede tener cualquier extensión. Su funcionamiento es el siguiente: * Se ejecuta el script. * Si el script a devuelto 0 se considera que se ha ejecutado correctamente. * No imprime nada. * Sino se considera que ha habido error: * Muestra por pantalla la salida estandar que ha tenido el script. * Muestra por pantalla la salida de error que ha tenido el script. 1. test de python: en este caso no son unos ejecutables, sino un fichero de doctest de python. Si se encuentra errores se considera que ha fallado el test. Su extensión deben ser ''.pytest'' 1. pre-test: no son realmente tests pero tiene exactamente el mismo funcionamiento que test de script. Se usan para preparar cosas para el test. Son scripts que se ejecutan antes un test. Tienen el mismo nombre que el test pero se añade la extensión ''.pre''. Deben tener permiso de ejecución. Si fallan el test no se ejecutará. No son necesarios para el test. 1. post-test: iguales que los anteriores pero se ejecutan después del test y tienen extensión ''.post''. No son necesarios para el test. 1. prepare: tampoco son realmente test. Funcionan igual que los tests de script. El fichero debe llamarse prepare o prepare.* (siendo asterisco cualquier extensión). Sino lo encuentra lo obvia. Pueden existir errores y en tal caso no se ejecutará ningún test. Sirve para preparar algo en común para todos los tests. 1. cleanup: hace la función inversa que el prepare. Es un script llamado cleanup o cleanup.*; sino lo encuentra lo obvia. == Cronología == 1. Intenta ejecutar el prepare. Sino lo encuentra continua sin errores. 1. Ejecutar los test por orden alfabético: 1. Busca si tiene pre-test sino lo obvia. Si existe errores en el pre-test el test no se ejecuta. 1. Ejecuta el test ya sea de script o de python. 1. Si encuentra post-test este se ejecuta siempre. Pueden existir errores. 1. Por último, si cleanup es encontrado se ejecuta. == Errores == 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. == Valor de retorno == 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. == Test == !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 $ }}}