homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author jaraco
Recipients RonnyPfannschmidt, alexis, eric.araujo, jaraco, jens, lars.gustaebel, mikehoy, mu_mind, tarek, vstinner
Date 2011年12月26日.05:39:28
SpamBayes Score 2.404953e-09
Marked as misclassified No
Message-id <1324877970.1.0.754580260686.issue11638@psf.upfronthosting.co.za>
In-reply-to
Content
Thanks to Lars for suggesting the fix, replacing 'w|gz' with 'w:gz'. I attempted this change in the latest revision of my fork (774933cf7775.diff). While this change does address the issue if a unicode string is passed which can be encoded using the default encoding. However, if a latin-1 string is passed or another multi-byte unicode character is passed, a UnicodeDecodeError still occurs (though now in gzip.py). Here's the test results and tracebacks:
PS C:\Users\jaraco\projects\public\cpython> python .\lib\distutils\tests\test_archive_util.py
test_check_archive_formats (__main__.ArchiveUtilTestCase) ... ok
test_compress_deprecated (__main__.ArchiveUtilTestCase) ... skipped 'The compress program is required'
test_make_archive (__main__.ArchiveUtilTestCase) ... ok
test_make_archive_cwd (__main__.ArchiveUtilTestCase) ... ok
test_make_archive_owner_group (__main__.ArchiveUtilTestCase) ... ok
test_make_tarball (__main__.ArchiveUtilTestCase) ... ok
test_make_tarball_unicode (__main__.ArchiveUtilTestCase) ... ok
test_make_tarball_unicode_extended (__main__.ArchiveUtilTestCase) ... ERROR
test_make_tarball_unicode_latin1 (__main__.ArchiveUtilTestCase) ... ERROR
test_make_zipfile (__main__.ArchiveUtilTestCase) ... ok
test_tarfile_root_owner (__main__.ArchiveUtilTestCase) ... skipped 'Requires grp and pwd support'
test_tarfile_vs_tar (__main__.ArchiveUtilTestCase) ... skipped 'Need the tar command to run'
======================================================================
ERROR: test_make_tarball_unicode_extended (__main__.ArchiveUtilTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
 File ".\lib\distutils\tests\test_archive_util.py", line 305, in test_make_tarball_unicode_extended
 self._make_tarball(u'πü«πéóπâ╝πé1⁄2πéñπâû') # japanese for archive
 File ".\lib\distutils\tests\test_archive_util.py", line 64, in _make_tarball
 make_tarball(splitdrive(base_name)[1], '.')
 File "C:\Users\jaraco\projects\public\cpython\Lib\distutils\archive_util.py",
line 101, in make_tarball
 tar = tarfile.open(archive_name, 'w:%s' % tar_compression[compress])
 File "C:\Users\jaraco\projects\public\cpython\Lib\tarfile.py", line 1676, in open
 return func(name, filemode, fileobj, **kwargs)
 File "C:\Users\jaraco\projects\public\cpython\Lib\tarfile.py", line 1724, in gzopen
 gzip.GzipFile(name, mode, compresslevel, fileobj),
 File "C:\Users\jaraco\projects\public\cpython\Lib\gzip.py", line 127, in __init__
 self._write_gzip_header()
 File "C:\Users\jaraco\projects\public\cpython\Lib\gzip.py", line 172, in _write_gzip_header
 self.fileobj.write(fname + '000円')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)
======================================================================
ERROR: test_make_tarball_unicode_latin1 (__main__.ArchiveUtilTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
 File ".\lib\distutils\tests\test_archive_util.py", line 297, in test_make_tarball_unicode_latin1
 self._make_tarball(u'årchiv') # note this isn't a real word
 File ".\lib\distutils\tests\test_archive_util.py", line 64, in _make_tarball
 make_tarball(splitdrive(base_name)[1], '.')
 File "C:\Users\jaraco\projects\public\cpython\Lib\distutils\archive_util.py",
line 101, in make_tarball
 tar = tarfile.open(archive_name, 'w:%s' % tar_compression[compress])
 File "C:\Users\jaraco\projects\public\cpython\Lib\tarfile.py", line 1676, in open
 return func(name, filemode, fileobj, **kwargs)
 File "C:\Users\jaraco\projects\public\cpython\Lib\tarfile.py", line 1724, in gzopen
 gzip.GzipFile(name, mode, compresslevel, fileobj),
 File "C:\Users\jaraco\projects\public\cpython\Lib\gzip.py", line 127, in __init__
 self._write_gzip_header()
 File "C:\Users\jaraco\projects\public\cpython\Lib\gzip.py", line 172, in _write_gzip_header
 self.fileobj.write(fname + '000円')
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe5' in position 0:
ordinal not in range(128)
----------------------------------------------------------------------
Ran 12 tests in 0.058s
FAILED (errors=2, skipped=3)
Traceback (most recent call last):
 File ".\lib\distutils\tests\test_archive_util.py", line 311, in <module>
 run_unittest(test_suite())
 File "C:\Users\jaraco\projects\public\cpython\Lib\test\test_support.py", line
1094, in run_unittest
 _run_suite(suite)
 File "C:\Users\jaraco\projects\public\cpython\Lib\test\test_support.py", line
1077, in _run_suite
 raise TestFailed(err)
test.test_support.TestFailed: multiple errors occurred
History
Date User Action Args
2011年12月26日 05:39:30jaracosetrecipients: + jaraco, lars.gustaebel, vstinner, tarek, eric.araujo, RonnyPfannschmidt, alexis, mu_mind, mikehoy, jens
2011年12月26日 05:39:30jaracosetmessageid: <1324877970.1.0.754580260686.issue11638@psf.upfronthosting.co.za>
2011年12月26日 05:39:29jaracolinkissue11638 messages
2011年12月26日 05:39:28jaracocreate

AltStyle によって変換されたページ (->オリジナル) /