diff = HtmlDiff().make_file(orig, new, fromdesc=name+'.'+origname, todesc=name+'.'+newname, context=True, numlines=3)
mail.attachText(diff, name + '.diff.html', 'html')
return nota
+ def usa_stdin():
+ return os.path.exists(os.path.join(caso_de_prueba.path, 'stdin'))
+ def usa_stdout():
+ return os.path.exists(os.path.join(caso_de_prueba.path, 'stdout'))
+ def usa_stderr():
+ return os.path.exists(os.path.join(caso_de_prueba.path, 'stderr'))
+
# Cosas útiles
global log, conn, conf, uid, gid
# Para manejo de SIGCHLD
'close_fds': True,
'preexec_fn': secure_process(intento.chrootPath, uid, gid, tiempo_cpu),
}
- if os.path.exists(os.path.join(caso_de_prueba.path, 'stdin')):
+ if usa_stdin():
options['stdin'] = file(os.path.join(caso_de_prueba.path, 'stdin'), 'r')
- if os.path.exists(os.path.join(caso_de_prueba.path, 'stdout')):
+ if usa_stdout():
options['stdout'] = subprocess.PIPE
- if os.path.exists(os.path.join(caso_de_prueba.path, 'stderr')):
+ if usa_stderr():
options['stderr'] = subprocess.PIPE
# Ejecuto programa
params = ['/tp']
return prueba
# Verifico salidas estándar/de error
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(),
- 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(),
+ if usa_stdout():
+ obs = diff(prueba, mail, proc.stdout.readlines(),
+ file(os.path.join(caso_de_prueba.path, 'stdout')).readlines(),
+ caso_de_prueba.nombre + '.stdout', longname='La salida estándar')
+ if usa_stderr():
+ obs += diff(prueba, mail, proc.stderr.readlines(),
+ file(os.path.join(caso_de_prueba.path, 'stderr')).readlines(),
caso_de_prueba.nombre + '.stderr', longname='La salida de error')
for f in caso_de_prueba.archivosSalida:
if f not in prueba.archivosSalida: