]> git.llucax.com Git - software/sercom.git/commitdiff
Agregar nombres especiales para stdin, stdout, stderr y stdouterr.
authorLeandro Lucarella <llucax@gmail.com>
Sun, 11 Mar 2007 19:29:42 +0000 (19:29 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sun, 11 Mar 2007 19:29:42 +0000 (19:29 +0000)
Se agregan constantes para poder cambiar fácilmente el nombre de los archivos
especiales y se agrega el archivo especial stdouterr, que sirve para indicar que
se quiere guardar stdout y stderr todos juntos (entrelazados) en un mismo
archivo.

doc/testdata.py
sercom/model.py

index 012c69e9a3fea59c3fadbf50effdb25f65d7ba5c..e8d3853ac530cc12c26e0cc61769588f163637db 100644 (file)
@@ -15,8 +15,8 @@ a = Alumno(padron='77891', nombre='Tito Puente', password='77891', roles=[r2])
 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__'),
+    max_cant_procesos=200, terminar_si_falla=True, rechazar_si_falla=True,
+    archivos_a_guardar=('__stdouterr__',),
     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,
index c3f2716588349106691fead2c9aacd68eb839e31..2e60294d0db1d23f190d642c337b7e4ceaff9efb 100644 (file)
@@ -324,8 +324,14 @@ class TareaPrueba(Tarea): #{{{
 #}}}
 
 class Comando(InheritableSQLObject): #{{{
+    # Tipos de retorno especiales
     RET_ANY = None
     RET_FAIL = -1
+    # Archivos especiales
+    STDIN = '__stdin__'
+    STDOUT = '__stdout__'
+    STDERR = '__stderr__'
+    STDOUTERR = '__stdouterr__'
     # Campos
     comando             = UnicodeCol(length=255, notNone=True)
     descripcion         = UnicodeCol(length=255, default=None)
@@ -341,13 +347,24 @@ class Comando(InheritableSQLObject): #{{{
     archivos_entrada    = BLOBCol(default=None) # ZIP con archivos de entrada
                                                 # __stdin__ es caso especial
     archivos_a_comparar = BLOBCol(default=None) # ZIP con archivos de salida
-                                                # __stdout__ y __stderr__
+                                                # __stdout__, __stderr__ y
+                                                # __stdouterr__ (ambos juntos)
                                                 # son casos especiales
-    archivos_a_guardar  = TupleCol(notNone=True, default=())
-                                                # __stdout__ y __stderr__
+    archivos_a_guardar  = TupleCol(notNone=True, default=()) # TODO SetCol
+                                                # __stdout__, __stderr__ y
+                                                # __stdouterr__ (ambos juntos)
                                                 # son casos especiales
     activo              = BoolCol(notNone=True, default=True)
 
+    def _get_guardar_stdout(self):
+        return self.STDOUT in self.archivos_a_guardar
+
+    def _get_guardar_stderr(self):
+        return self.STDERR in self.archivos_a_guardar
+
+    def _get_guardar_stdouterr(self):
+        return self.STDOUTERR in self.archivos_a_guardar
+
     def __repr__(self, clave='', mas=''):
         return ('%s(%s comando=%s, descripcion=%s, retorno=%s, '
             'max_tiempo_cpu=%s, max_memoria=%s, max_tam_archivo=%s, '