]> git.llucax.com Git - z.facultad/75.52/sercom.git/commitdiff
Priorizar archivos del caso de prueba sobre los del comando.
authorLeandro Lucarella <llucax@gmail.com>
Tue, 13 Mar 2007 16:04:55 +0000 (16:04 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Tue, 13 Mar 2007 16:04:55 +0000 (16:04 +0000)
Si un CasoDePrueba tiene algún archivo_a_comparar o archivo_entrada que está
también en algún ComandoPrueba del Enunciado al que pertenece, se priorizan los
archivos del CasoDePrueba.

sercom/model.py
sercom/tester.py

index 6894bddcbfa404295b51fd30f0c0f9dbaa6c7c32..480e19d59cb36361490a4fbf87b8f35e0c531919 100644 (file)
@@ -348,14 +348,23 @@ class Comando(InheritableSQLObject): #{{{
     archivos_entrada    = BLOBCol(default=None) # ZIP con archivos de entrada
                                                 # __stdin__ es caso especial
                                                 # Si un caso de prueba tiene
-                                                # comandos con stdin y el caso
-                                                # de prueba también tiene stdin
-                                                # se usa el stdin del comando.
+                                                # comandos que tiene algún
+                                                # archivo de entrada (incluyendo
+                                                # stdin) con los propios, se usa
+                                                # el archivo del caso de prueba,
+                                                # no del comando.
     archivos_a_comparar = BLOBCol(default=None) # ZIP con archivos de salida
                                                 # __stdout__, __stderr__ y
                                                 # __stdouterr__ (ambos juntos)
                                                 # son casos especiales
-    archivos_a_guardar  = TupleCol(notNone=True, default=()) # TODO SetCol
+                                                # Si un caso de prueba tiene
+                                                # comandos que tiene algún
+                                                # archivo a comparar (incluyendo
+                                                # stdout/err) con los propios,
+                                                # se compara contra el archivo
+                                                # del caso de prueba, no del
+                                                # comando.
+    archivos_a_guardar  = TupleCol(notNone=True, default=()) # TODO FrozenSetCol
                                                 # __stdout__, __stderr__ y
                                                 # __stdouterr__ (ambos juntos)
                                                 # son casos especiales
index 0326068acd5419f71fea526453fcef927ca21d41..69e2f3424c6cfbe21d8f84f2385f708b55ef589c 100644 (file)
@@ -520,11 +520,11 @@ def ejecutar_comando_prueba(self, path, prueba): #{{{
         os.seteuid(user_info.uid)
         log.debug(_(u'Usuario y grupo efectivos cambiados a %s:%s (%s:%s)'),
             user_info.user, user_info.group, user_info.uid, user_info.gid)
-    unzip(caso_de_prueba.archivos_entrada, path, # TODO try/except
-        {self.STDIN: '%s.%s.stdin' % (basetmp, comando_ejecutado.id)})
     #}}}
     unzip(self.archivos_entrada, path, # TODO try/except
         {self.STDIN: '%s.%s.stdin' % (basetmp, comando_ejecutado.id)})
+    unzip(caso_de_prueba.archivos_entrada, path, # TODO try/except     # FIXME Esto es propio de ComandoPrueba
+        {self.STDIN: '%s.%s.stdin' % (basetmp, comando_ejecutado.id)}) # FIXME Esto es propio de ComandoPrueba
     options = dict(
         close_fds=True,
         shell=True,
@@ -536,9 +536,9 @@ def ejecutar_comando_prueba(self, path, prueba): #{{{
     else:
         options['preexec_fn'].close_stdin = True
     a_guardar = set(self.archivos_a_guardar)
-    a_guardar |= set(caso_de_prueba.archivos_a_guardar) # FIXME Esto es propio de ComandoPrueba
-    zip_a_comparar = Multizip(self.archivos_a_comparar,
-        caso_de_prueba.archivos_a_comparar)             # FIXME Esto es propio de ComandoPrueba
+    a_guardar |= set(caso_de_prueba.archivos_a_guardar)           # FIXME Esto es propio de ComandoPrueba
+    zip_a_comparar = Multizip(caso_de_prueba.archivos_a_comparar, # FIXME Esto es propio de ComandoPrueba
+        self.archivos_a_comparar)                                 # FIXME Esto es propio de ComandoPrueba
     a_comparar = set(zip_a_comparar.namelist())
     a_usar = frozenset(a_guardar | a_comparar)
     if self.STDOUTERR in a_usar: