]> git.llucax.com Git - software/sercom.git/commitdiff
Bugfix: problema de encoding al grabar un archivo en un ZIP.
authorLeandro Lucarella <llucax@gmail.com>
Wed, 4 Apr 2007 03:08:07 +0000 (03:08 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Wed, 4 Apr 2007 03:08:07 +0000 (03:08 +0000)
ZipFile.write() hace unas manipulaciones binarias con el nombre del archivo y si
el nombre de archivo es unicode da error, por lo que hay que decodificarlo
previamente. Este arreglo es temporal, habría que acordar una codificación para
nombres de archivo en los ZIP (AFAIK el formato ZIP no sabe de codificaciones) y
guardarlos/leerlos siempre en esa codificación (UTF-8 seguramente).

TODO.txt
sercom/tester.py

index e34e58f576690add705b94d62191814ac7e2bdde..984929b60cb986b4434a87f12ea59dac7a86c859 100644 (file)
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,5 +1,8 @@
 - Backend (luca)
-  * Ver por qué no anda valgrind en chroot.
+  * Arreglar / pensar problemas de encoding. Lugares donde es necesario
+    codificar los strings unicode:
+    * Guardar/leer nombres de archivos de ZipFile.
+    * Logging.
   * Hacer que se usen los parametros ComandoPrueba como multiplicadores de
     CasoDePrueba.
   * Arreglar bug. Al mezclar los archivos_entrada, archivos_a_comparar y
index 18b7e586a36d904936340ef39b9abf2612d30ae4..8ff77641e6d3c552c0dabed9b6540fe6e7383211 100644 (file)
@@ -433,7 +433,7 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{
                 log.debug(_(u'Se esperaba un archivo "%s" para guardar pero '
                     u'no fue encontrado'), f)
             else:
-                zip.write(join(path, f), f)
+                zip.write(str(join(path, f)), str(f)) # FIXME encoding de unicode
         zip.close()
         comando_ejecutado.archivos = buffer.getvalue()
     def diff(new, zip_in, zip_out, name, longname=None, origname='correcto',
@@ -646,7 +646,7 @@ def ejecutar_comando_prueba(self, path, prueba): #{{{
                 log.debug(_(u'Se esperaba un archivo "%s" para guardar pero '
                     u'no fue encontrado'), f)
             else:
-                zip.write(join(path, f), f)
+                zip.write(str(join(path, f)), str(f)) # FIXME encoding de unicode
         zip.close()
         comando_ejecutado.archivos = buffer.getvalue()
     def diff(new, zip_in, zip_out, name, longname=None, origname='correcto',