X-Git-Url: https://git.llucax.com/z.facultad/75.52/sercom.git/blobdiff_plain/b8de3c015410306fb01522f4316b40ae230ded7c..2b48a56672d7f8ea8eb4ba49a4abe926ae11ddf0:/sercom/tester.py diff --git a/sercom/tester.py b/sercom/tester.py index 982ad71..51c861e 100644 --- a/sercom/tester.py +++ b/sercom/tester.py @@ -338,12 +338,13 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{ comando_ejecutado.id), 'w') else: options['preexec_fn'].close_stderr = True - log.debug(_(u'Ejecutando como root: %s'), self.comando) + comando = self.comando # FIXME Acá tiene que diferenciarse de ComandoPrueba + log.debug(_(u'Ejecutando como root: %s'), comando) os.seteuid(0) # Dios! (para chroot) os.setegid(0) try: try: - proc = sp.Popen(self.comando, **options) + proc = sp.Popen(comando, **options) finally: os.setegid(user_info.gid) # Mortal de nuevo os.seteuid(user_info.uid) @@ -355,8 +356,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 @@ -368,24 +370,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: @@ -520,6 +521,7 @@ def ejecutar_comando_prueba(self, path, prueba): #{{{ else: options['preexec_fn'].close_stdin = True a_guardar = set(self.archivos_a_guardar) + a_guardar |= set(prueba.caso_de_prueba.archivos_a_guardar) # FIXME Esto es propio de ComandoPrueba if self.archivos_a_comparar: zip_a_comparar = ZipFile(StringIO(self.archivos_a_comparar), 'r') a_comparar = set(zip_a_comparar.namelist()) @@ -542,12 +544,13 @@ def ejecutar_comando_prueba(self, path, prueba): #{{{ comando_ejecutado.id), 'w') else: options['preexec_fn'].close_stderr = True - log.debug(_(u'Ejecutando como root: %s'), self.comando) + comando = self.comando + ' ' + prueba.caso_de_prueba.comando # FIXME Esto es propio de ComandoPrueba + log.debug(_(u'Ejecutando como root: %s'), comando) os.seteuid(0) # Dios! (para chroot) os.setegid(0) try: try: - proc = sp.Popen(self.comando, **options) + proc = sp.Popen(comando, **options) finally: os.setegid(user_info.gid) # Mortal de nuevo os.seteuid(user_info.uid) @@ -559,8 +562,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 @@ -572,24 +578,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: