From: Leandro Lucarella Date: Tue, 13 Mar 2007 16:04:55 +0000 (+0000) Subject: Priorizar archivos del caso de prueba sobre los del comando. X-Git-Tag: 0_9_0~162 X-Git-Url: https://git.llucax.com/z.facultad/75.52/sercom.git/commitdiff_plain/461575586dd9f8c59020898450fd281fd352f8f8?hp=3c4da757a970603c965f33970053295a54b57a02 Priorizar archivos del caso de prueba sobre los del comando. 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. --- diff --git a/sercom/model.py b/sercom/model.py index 6894bdd..480e19d 100644 --- a/sercom/model.py +++ b/sercom/model.py @@ -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 diff --git a/sercom/tester.py b/sercom/tester.py index 0326068..69e2f34 100644 --- a/sercom/tester.py +++ b/sercom/tester.py @@ -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: