From 6025b39278d3ed9a7e6ff62f7815441447038e08 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Sat, 10 Mar 2007 22:19:56 +0000 Subject: [PATCH] Agregar archivos a guardar y a comparar en el modelo. Ahora Comando tiene archivos_a_guardar (una lista de nombre de archivos) y archivos_a_comparar (un ZIP con el contenido de los archivos con resultados esperados a comparar con los resultados obtenidos), en vez del archivos_salida. ComandoEjecutado tiene, por su parte, archivos_comparados y archivos_guardados, conteniendo los diff y archivos a guardar respectivamente. Como CasoDePrueba y Prueba heredan de los ComandoXxx, se extiende a ellos. --- doc/testdata.py | 1 + sercom/model.py | 21 ++++++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/doc/testdata.py b/doc/testdata.py index a461157..012c69e 100644 --- a/doc/testdata.py +++ b/doc/testdata.py @@ -16,6 +16,7 @@ tf = TareaFuente(nombre='Compilar C con Makefile', terminar_si_falla=True, rechazar_si_falla=True) cf = tf.add_comando(1, 'make tito', retorno=0, max_cant_archivos=15, max_cant_procesos=100, terminar_si_falla=True, rechazar_si_falla=True, + archivos_a_guardar=('__stdout__', '__stderr__'), descripcion='Compila un programa en C con make ' \ 'sin usar un Makefile (debe ser un solo archivo que se llame tito.c)') tp = TareaPrueba(nombre='Probar', terminar_si_falla=True, diff --git a/sercom/model.py b/sercom/model.py index a9ef27b..f11cfbc 100644 --- a/sercom/model.py +++ b/sercom/model.py @@ -17,6 +17,7 @@ __all__ = ('Curso', 'Usuario', 'Docente', 'Alumno', 'CasoDePrueba') #{{{ Custom Columns +# TODO Esto debería implementarse con CSV para mayor legibilidad class TupleValidator(PickleValidator): """ Validator for tuple types. A tuple type is simply a pickle type @@ -338,9 +339,13 @@ class Comando(InheritableSQLObject): #{{{ terminar_si_falla = BoolCol(notNone=True, default=True) rechazar_si_falla = BoolCol(notNone=True, default=True) archivos_entrada = BLOBCol(default=None) # ZIP con archivos de entrada - # stdin es caso especial - archivos_salida = BLOBCol(default=None) # ZIP con archivos de salida - # stdout y stderr son especiales + # __stdin__ es caso especial + archivos_a_comparar = BLOBCol(default=None) # ZIP con archivos de salida + # __stdout__ y __stderr__ + # son casos especiales + archivos_a_guardar = TupleCol(notNone=True, default=()) + # __stdout__ y __stderr__ + # son casos especiales activo = BoolCol(notNone=True, default=True) def __repr__(self, clave='', mas=''): @@ -774,10 +779,12 @@ class Correccion(SQLObject): #{{{ class ComandoEjecutado(InheritableSQLObject): #{{{ # Campos - inicio = DateTimeCol(notNone=True, default=DateTimeCol.now) - fin = DateTimeCol(default=None) - exito = IntCol(default=None) - observaciones = UnicodeCol(notNone=True, default=u'') + inicio = DateTimeCol(notNone=True, default=DateTimeCol.now) + fin = DateTimeCol(default=None) + exito = IntCol(default=None) + archivos_comparados = BLOBCol(default=None) # ZIP con archivos diff + archivos_guardados = BLOBCol(default=None) # ZIP con archivos guardados + observaciones = UnicodeCol(notNone=True, default=u'') def __repr__(self, clave='', mas=''): return ('%s(%s inicio=%s, fin=%s, exito=%s, observaciones=%s%s)' -- 2.43.0