]> git.llucax.com Git - software/sercom-old.git/commitdiff
Bugfix. Hacía diff de stdout y stderr aunque no se usen.
authorLeandro Lucarella <llucax@gmail.com>
Sun, 13 Mar 2005 02:29:06 +0000 (02:29 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sun, 13 Mar 2005 02:29:06 +0000 (02:29 +0000)
src/sc_test

index 30f8cc2569b7c9a33a04a7035d7f5193abcee3a4..ac63104e100ab964e09b0a2f0902ae43a8d5ed89 100755 (executable)
@@ -116,6 +116,13 @@ def probar(intento, caso_de_prueba, mail):
                 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
@@ -137,11 +144,11 @@ def probar(intento, caso_de_prueba, mail):
         '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']
@@ -211,11 +218,13 @@ def probar(intento, caso_de_prueba, mail):
             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: