msg += 'ERROR (código de retorno: %d)' % make.returncode
mail.body += msg
if stderr:
- msg += '''Salida:
+ msg += '''
+Salida:
------------------------------------------------------------------------
%s
------------------------------------------------------------------------
# Salió con una señal?
if proc.returncode < 0:
sig = -proc.returncode
- log.debug('El programa salió con la señal %d', sig)
+ sigs = {}
+ for s in [s for s in dir(signal) if s.startswith('SIG') and s.isalpha()]:
+ sigs[getattr(signal, s)] = s
+ log.debug('El programa salió con la señal %s', sigs[sig])
prueba.pasada = False
#TODO otras señales conocidas
if sig == signal.SIGXCPU:
prueba.observaciones = 'Excedió el límite de tiempo de CPU ' \
'(%d seg)' % tiempo_cpu
else:
- prueba.observaciones = 'Salió con la señal %d' % sig
+ prueba.observaciones = 'Salió con la señal %s' % sigs[sig]
mail.agregarResultado(prueba)
return prueba
# Si tenemos que verificar el código de retorno
prueba.pasada = True # Asumo que está bien, ya habrá tiempo para cambiarlo
obs = diff(prueba, mail, proc.stdout.readlines(),
file(os.path.join(caso_de_prueba.path, 'stdout')).readlines(),
- 'stdout', longname='La salida estándar')
+ caso_de_prueba.nombre + '.stdout', longname='La salida estándar')
obs += diff(prueba, mail, proc.stderr.readlines(),
file(os.path.join(caso_de_prueba.path, 'stderr')).readlines(),
- 'stderr', longname='La salida de error')
+ caso_de_prueba.nombre + '.stderr', longname='La salida de error')
for f in caso_de_prueba.archivosSalida:
if f not in prueba.archivosSalida:
#TODO agregar error FALTA ARCHIVO
continue
obs += diff(prueba, mail,
file(os.path.join(intento.chrootPath, f)).readlines(),
- file(os.path.join(caso_de_prueba.pathSalidas, f)).readlines(), f)
+ file(os.path.join(caso_de_prueba.pathSalidas, f)).readlines(),
+ caso_de_prueba.nombre + '.' + f)
for f in prueba.archivosSalida - (caso_de_prueba.archivosSalida | caso_de_prueba.archivosEntrada):
#TODO agregar error SOBRA ARCHIVO
log.debug('El programa debía generar el archivo %s y no lo hizo.', f)
self['To'] = intento.mailRespuesta
self['Reply-To'] = conf.get('mail', 'admin')
self['Return-Path'] = conf.get('mail', 'admin')
- self['X-Mailer'] = 'sercom 0.3'
+ self['X-Mailer'] = 'sercom ' + sercom.VERSION
self['X-Priority'] = '5'
self.epilogue = 'Para ver correctamente este e-mail su cliente debe ' \
'soportar MIME.\n\n'
preparar(intento)
# Pruebo y agrego prueba a la lista
prueba = probar(intento, caso_de_prueba, mail)
- resultado = resultado and prueba.pasada
if not prueba.casoDePrueba.privado and not prueba.pasada:
resultado = False
# Limpio chroot