]> git.llucax.com Git - z.facultad/75.52/sercom.git/blobdiff - sercom/tester.py
Permitir pasar el el archivo de configuración por línea de comandos al tester.
[z.facultad/75.52/sercom.git] / sercom / tester.py
index abc1d9052f9d7394d4646ff40300967b182739b8..2e6f9f86ef2e9c7e091c34a84df0550b56063187 100644 (file)
@@ -23,7 +23,7 @@ class UserInfo(object): #{{{
         try:
             info = pwd.getpwnam(user)
         except:
-            info = pwd.get(int(user))
+            info = pwd.getpwuid(int(user))
         self.user = info[0]
         self.uid = info[2]
         self.gid = info[3]
@@ -433,7 +433,7 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{
                 log.debug(_(u'Se esperaba un archivo "%s" para guardar pero '
                     u'no fue encontrado'), f)
             else:
-                zip.write(join(path, f), f)
+                zip.write(str(join(path, f)), str(f)) # FIXME encoding de unicode
         zip.close()
         comando_ejecutado.archivos = buffer.getvalue()
     def diff(new, zip_in, zip_out, name, longname=None, origname='correcto',
@@ -461,22 +461,23 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{
         else:
             return False
     if a_comparar:
+        condiff = False
         buffer = StringIO()
         zip = ZipFile(buffer, 'w')
         # Comparamos stdout/stderr
         if self.STDOUTERR in a_comparar:
             a_comparar.remove(self.STDOUTERR)
-            diff('%s.%s.stdouterr' % (basetmp, comando_ejecutado.id),
+            condiff |= diff('%s.%s.stdouterr' % (basetmp, comando_ejecutado.id),
                 zip_a_comparar, zip, self.STDOUTERR,
                 _(u'La salida estándar y de error combinada'))
         else:
             if self.STDOUT in a_comparar:
                 a_comparar.remove(self.STDOUT)
-                diff('%s.%s.stdout' % (basetmp, comando_ejecutado.id),
+                condiff |= diff('%s.%s.stdout' % (basetmp, comando_ejecutado.id),
                     zip_a_comparar, zip, self.STDOUT, _(u'La salida estándar'))
             if self.STDERR in a_comparar:
                 a_comparar.remove(self.STDERR)
-                diff('%s.%s.stderr' % (basetmp, comando_ejecutado.id),
+                condiff |= diff('%s.%s.stderr' % (basetmp, comando_ejecutado.id),
                     zip_a_comparar, zip, self.STDERR, _(u'La salida de error'))
         # Comparamos otros
         for f in a_comparar:
@@ -489,9 +490,10 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{
                 log.debug(_(u'Se esperaba un archivo "%s" para comparar pero '
                     u'no fue encontrado'), f)
             else:
-                diff(join(path, f), zip_a_comparar, zip, f)
+                condiff |= diff(join(path, f), zip_a_comparar, zip, f)
         zip.close()
-        comando_ejecutado.diferencias = buffer.getvalue()
+        if condiff:
+            comando_ejecutado.diferencias = buffer.getvalue()
     if comando_ejecutado.exito is None:
         comando_ejecutado.exito = True
     elif self.terminar_si_falla:
@@ -644,7 +646,7 @@ def ejecutar_comando_prueba(self, path, prueba): #{{{
                 log.debug(_(u'Se esperaba un archivo "%s" para guardar pero '
                     u'no fue encontrado'), f)
             else:
-                zip.write(join(path, f), f)
+                zip.write(str(join(path, f)), str(f)) # FIXME encoding de unicode
         zip.close()
         comando_ejecutado.archivos = buffer.getvalue()
     def diff(new, zip_in, zip_out, name, longname=None, origname='correcto',
@@ -672,23 +674,24 @@ def ejecutar_comando_prueba(self, path, prueba): #{{{
         else:
             return False
     if a_comparar:
+        condiff = False
         buffer = StringIO()
         zip = ZipFile(buffer, 'w')
         # Comparamos stdout/stderr
         if self.STDOUTERR in a_comparar:
             a_comparar.remove(self.STDOUTERR)
-            diff('%s.%s.stdouterr' % (basetmp, comando_ejecutado.id),
+            condiff |= diff('%s.%s.stdouterr' % (basetmp, comando_ejecutado.id),
                 zip_a_comparar, zip, self.STDOUTERR,
                 _(u'La salida estándar y de error combinada'))
         else:
             if self.STDOUT in a_comparar:
                 log.debug('comparando salida con: %s.%s.stdout', basetmp, comando_ejecutado.id)
                 a_comparar.remove(self.STDOUT)
-                diff('%s.%s.stdout' % (basetmp, comando_ejecutado.id),
+                condiff |= diff('%s.%s.stdout' % (basetmp, comando_ejecutado.id),
                     zip_a_comparar, zip, self.STDOUT, _(u'La salida estándar'))
             if self.STDERR in a_comparar:
                 a_comparar.remove(self.STDERR)
-                diff('%s.%s.stderr' % (basetmp, comando_ejecutado.id),
+                condiff |= diff('%s.%s.stderr' % (basetmp, comando_ejecutado.id),
                     zip_a_comparar, zip, self.STDERR, _(u'La salida de error'))
         # Comparamos otros
         for f in a_comparar:
@@ -701,9 +704,10 @@ def ejecutar_comando_prueba(self, path, prueba): #{{{
                 log.debug(_(u'Se esperaba un archivo "%s" para comparar pero '
                     u'no fue encontrado'), f)
             else:
-                diff(join(path, f), zip_a_comparar, zip, f)
+                condiff |= diff(join(path, f), zip_a_comparar, zip, f)
         zip.close()
-        comando_ejecutado.diferencias = buffer.getvalue()
+        if condiff:
+            comando_ejecutado.diferencias = buffer.getvalue()
     if comando_ejecutado.exito is None:
         comando_ejecutado.exito = True
     elif self.terminar_si_falla: