X-Git-Url: https://git.llucax.com/z.facultad/75.52/sercom.git/blobdiff_plain/7a20432786bc102f1378926a0dd2a1e45159bb6b..332f04295e93700fb9e60df7d6eabcd864702057:/sercom/tester.py diff --git a/sercom/tester.py b/sercom/tester.py index 225e13d..d610781 100644 --- a/sercom/tester.py +++ b/sercom/tester.py @@ -208,8 +208,7 @@ class Tester(object): #{{{ self.ejecutar_tareas_prueba(entrega) self.clean_chroot(entrega) except ExecutionFailure, e: - entrega.exito = False - log.info(_(u'Entrega incorrecta: %s'), entrega) + pass except Exception, e: if isinstance(e, SystemExit): raise entrega.observaciones += error_interno @@ -217,11 +216,14 @@ class Tester(object): #{{{ except: entrega.observaciones += error_interno log.exception(_('Hubo una excepcion inesperada desconocida')) # FIXME encoding - else: - entrega.exito = True - log.debug(_(u'Entrega correcta: %s'), entrega) finally: entrega.fin = datetime.now() + if entrega.exito is None: + entrega.exito = True + if entrega.exito: + log.info(_(u'Entrega correcta: %s'), entrega) + else: + log.info(_(u'Entrega incorrecta: %s'), entrega) #}}} def setup_chroot(self, entrega): #{{{ y clean_chroot() @@ -274,15 +276,15 @@ def ejecutar_caso_de_prueba(self, path, entrega): #{{{ for tarea in tareas: tarea.ejecutar(path, prueba) except ExecutionFailure, e: - prueba.exito = False - if self.rechazar_si_falla: - entrega.exito = False - if self.terminar_si_falla: - raise ExecutionFailure(e.comando, e.tarea, self) - else: - prueba.exito = True + pass finally: prueba.fin = datetime.now() + if prueba.exito is None: + prueba.exito = True + if not prueba.exito and self.rechazar_si_falla: + entrega.exito = False + if not prueba.exito and self.terminar_si_falla: + raise ExecutionFailure(prueba) CasoDePrueba.ejecutar = ejecutar_caso_de_prueba #}}} @@ -353,8 +355,9 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{ raise proc.wait() #TODO un sleep grande nos caga todo, ver sercom viejo comando_ejecutado.fin = datetime.now() # TODO debería rodear solo la ejecución del comando - if self.retorno != self.RET_ANY: - if self.retorno == self.RET_FAIL: + retorno = self.retorno + if retorno != self.RET_ANY: + if retorno == self.RET_FAIL: if proc.returncode == 0: if self.rechazar_si_falla: entrega.exito = False @@ -366,24 +369,23 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{ log.debug(_(u'Se esperaba que el programa termine ' u'con un error (código de retorno distinto de 0) pero ' u'terminó bien (código de retorno 0).\n')) - elif self.retorno != proc.returncode: + elif retorno != proc.returncode: if self.rechazar_si_falla: entrega.exito = False comando_ejecutado.exito = False if proc.returncode < 0: comando_ejecutado.observaciones += _(u'Se esperaba terminar ' u'con un código de retorno %s pero se obtuvo una señal %s ' - u'(%s).\n') % (self.retorno, -proc.returncode, - -proc.returncode) # TODO poner con texto + u'(%s).\n') % (retorno, -proc.returncode, -proc.returncode) # TODO poner con texto log.debug(_(u'Se esperaba terminar con un código ' u'de retorno %s pero se obtuvo una señal %s (%s).\n'), - self.retorno, -proc.returncode, -proc.returncode) + retorno, -proc.returncode, -proc.returncode) else: comando_ejecutado.observaciones += _(u'Se esperaba terminar ' u'con un código de retorno %s pero se obtuvo %s.\n') \ - % (self.retorno, proc.returncode) + % (retorno, proc.returncode) log.debug(_(u'Se esperaba terminar con un código de retorno ' - u'%s pero se obtuvo %s.\n'), self.retorno, proc.returncode) + u'%s pero se obtuvo %s.\n'), retorno, proc.returncode) if comando_ejecutado.exito is None: log.debug(_(u'Código de retorno OK')) if a_guardar: @@ -557,8 +559,11 @@ def ejecutar_comando_prueba(self, path, prueba): #{{{ raise proc.wait() #TODO un sleep grande nos caga todo, ver sercom viejo comando_ejecutado.fin_tareas = datetime.now() # TODO debería rodear solo la ejecución del comando - if self.retorno != self.RET_ANY: - if self.retorno == self.RET_FAIL: + retorno = self.retorno + if retorno == self.RET_PRUEBA: # FIXME Esto es propio de ComandoPrueba + retorno = prueba.caso_de_prueba.retorno # FIXME Esto es propio de ComandoPrueba + if retorno != self.RET_ANY: + if retorno == self.RET_FAIL: if proc.returncode == 0: if self.rechazar_si_falla: prueba.exito = False @@ -570,24 +575,23 @@ def ejecutar_comando_prueba(self, path, prueba): #{{{ log.debug(_(u'Se esperaba que el programa termine ' u'con un error (código de retorno distinto de 0) pero ' u'terminó bien (código de retorno 0).\n')) - elif self.retorno != proc.returncode: + elif retorno != proc.returncode: if self.rechazar_si_falla: prueba.exito = False comando_ejecutado.exito = False if proc.returncode < 0: comando_ejecutado.observaciones += _(u'Se esperaba terminar ' u'con un código de retorno %s pero se obtuvo una señal %s ' - u'(%s).\n') % (self.retorno, -proc.returncode, - -proc.returncode) # TODO poner con texto + u'(%s).\n') % (retorno, -proc.returncode, -proc.returncode) # TODO poner con texto log.debug(_(u'Se esperaba terminar con un código ' u'de retorno %s pero se obtuvo una señal %s (%s).\n'), - self.retorno, -proc.returncode, -proc.returncode) + retorno, -proc.returncode, -proc.returncode) else: comando_ejecutado.observaciones += _(u'Se esperaba terminar ' u'con un código de retorno %s pero se obtuvo %s.\n') \ - % (self.retorno, proc.returncode) + % (retorno, proc.returncode) log.debug(_(u'Se esperaba terminar con un código de retorno ' - u'%s pero se obtuvo %s.\n'), self.retorno, proc.returncode) + u'%s pero se obtuvo %s.\n'), retorno, proc.returncode) if comando_ejecutado.exito is None: log.debug(_(u'Código de retorno OK')) if a_guardar: