]> git.llucax.com Git - z.facultad/75.52/sercom.git/blobdiff - sercom/tester.py
Hacer que subclases hoja no sean _inheritables.
[z.facultad/75.52/sercom.git] / sercom / tester.py
index 6d2da80203f1427956b953ab27effb53c73d7063..0b00a15e1abb409da47e05a45182281c26148739 100644 (file)
@@ -165,10 +165,10 @@ class Tester(object): #{{{
         self.home = home
         self.queue = queue
         # Ahora somos mortales (oid mortales)
-        log.debug(_(u'Cambiando usuario y grupo efectivos a %s:%s (%s:%s)'),
-            user_info.user, user_info.group, user_info.uid, user_info.gid)
         os.setegid(user_info.gid)
         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)
 
     @property
     def build_path(self):
@@ -235,10 +235,10 @@ class Tester(object): #{{{
         try:
             sp.check_call(rsync)
         finally:
-            log.debug(_(u'Cambiando usuario y grupo efectivos a %s:%s (%s:%s)'),
-                user_info.user, user_info.group, user_info.uid, user_info.gid)
             os.setegid(user_info.gid) # Mortal de nuevo
             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(entrega.archivos, self.build_path)
 
     def clean_chroot(self, entrega):
@@ -317,7 +317,7 @@ TareaPrueba.ejecutar = ejecutar_tarea_prueba
 def ejecutar_comando_fuente(self, path, entrega): #{{{
     log.debug(_(u'ComandoFuente.ejecutar(path=%s, entrega=%s)'), path,
         entrega.shortrepr())
-    comando_ejecutado = entrega.add_comando_ejecutado(self)
+    comando_ejecutado = entrega.add_comando_ejecutado(self) # TODO debería rodear solo la ejecución del comando
     basetmp = '/tmp/sercom.tester.fuente' # FIXME TODO /var/run/sercom?
     unzip(self.archivos_entrada, path, # TODO try/except
         {self.STDIN: '%s.%s.stdin' % (basetmp, comando_ejecutado.id)})
@@ -361,15 +361,16 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{
         try:
             proc = sp.Popen(self.comando, **options)
         finally:
-            log.debug(_(u'Cambiando usuario y grupo efectivos a %s:%s (%s:%s)'),
-                user_info.user, user_info.group, user_info.uid, user_info.gid)
             os.setegid(user_info.gid) # Mortal de nuevo
             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)
     except Exception, e:
         if hasattr(e, 'child_traceback'):
             log.error(_(u'Error en el hijo: %s'), e.child_traceback)
         raise
     proc.wait() #TODO un sleep grande nos caga todo, ver sercom viejo
+    comando_ejecutado.fin = datetime.now() # TODO debería rodear solo la ejecución del comando
     if self.retorno != self.RET_ANY:
         if self.retorno == self.RET_FAIL:
             if proc.returncode == 0:
@@ -403,7 +404,6 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{
                     u'%s pero se obtuvo %s.\n'), self.retorno, proc.returncode)
     if comando_ejecutado.exito is None:
         log.debug(_(u'Código de retorno OK'))
-    comando_ejecutado.fin = datetime.now()
     if a_guardar:
         buffer = StringIO()
         zip = ZipFile(buffer, 'w')