mirror of https://github.com/python/cpython
Issue #11638: Adding test to ensure .tar.gz files can be generated by sdist command with unicode metadata, based on David Barnett's patch.
Issue #11638: Added tests to capture failures in make_tarball with various unicode strings. Following fix for Issue #13639, these tests now pass.
This commit is contained in:
parent
2c9eee1af9
commit
042370e750
|
@ -1,3 +1,4 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
"""Tests for distutils.archive_util."""
|
"""Tests for distutils.archive_util."""
|
||||||
__revision__ = "$Id$"
|
__revision__ = "$Id$"
|
||||||
|
|
||||||
|
@ -40,6 +41,9 @@ class ArchiveUtilTestCase(support.TempdirManager,
|
||||||
|
|
||||||
@unittest.skipUnless(zlib, "requires zlib")
|
@unittest.skipUnless(zlib, "requires zlib")
|
||||||
def test_make_tarball(self):
|
def test_make_tarball(self):
|
||||||
|
self._make_tarball('archive')
|
||||||
|
|
||||||
|
def _make_tarball(self, target_name):
|
||||||
# creating something to tar
|
# creating something to tar
|
||||||
tmpdir = self.mkdtemp()
|
tmpdir = self.mkdtemp()
|
||||||
self.write_file([tmpdir, 'file1'], 'xxx')
|
self.write_file([tmpdir, 'file1'], 'xxx')
|
||||||
|
@ -51,7 +55,7 @@ class ArchiveUtilTestCase(support.TempdirManager,
|
||||||
unittest.skipUnless(splitdrive(tmpdir)[0] == splitdrive(tmpdir2)[0],
|
unittest.skipUnless(splitdrive(tmpdir)[0] == splitdrive(tmpdir2)[0],
|
||||||
"source and target should be on same drive")
|
"source and target should be on same drive")
|
||||||
|
|
||||||
base_name = os.path.join(tmpdir2, 'archive')
|
base_name = os.path.join(tmpdir2, target_name)
|
||||||
|
|
||||||
# working with relative paths to avoid tar warnings
|
# working with relative paths to avoid tar warnings
|
||||||
old_dir = os.getcwd()
|
old_dir = os.getcwd()
|
||||||
|
@ -66,7 +70,7 @@ class ArchiveUtilTestCase(support.TempdirManager,
|
||||||
self.assertTrue(os.path.exists(tarball))
|
self.assertTrue(os.path.exists(tarball))
|
||||||
|
|
||||||
# trying an uncompressed one
|
# trying an uncompressed one
|
||||||
base_name = os.path.join(tmpdir2, 'archive')
|
base_name = os.path.join(tmpdir2, target_name)
|
||||||
old_dir = os.getcwd()
|
old_dir = os.getcwd()
|
||||||
os.chdir(tmpdir)
|
os.chdir(tmpdir)
|
||||||
try:
|
try:
|
||||||
|
@ -277,6 +281,29 @@ class ArchiveUtilTestCase(support.TempdirManager,
|
||||||
finally:
|
finally:
|
||||||
del ARCHIVE_FORMATS['xxx']
|
del ARCHIVE_FORMATS['xxx']
|
||||||
|
|
||||||
|
@unittest.skipUnless(zlib, "requires zlib")
|
||||||
|
def test_make_tarball_unicode(self):
|
||||||
|
"""
|
||||||
|
Mirror test_make_tarball, except filename is unicode.
|
||||||
|
"""
|
||||||
|
self._make_tarball(u'archive')
|
||||||
|
|
||||||
|
@unittest.skipUnless(zlib, "requires zlib")
|
||||||
|
def test_make_tarball_unicode_latin1(self):
|
||||||
|
"""
|
||||||
|
Mirror test_make_tarball, except filename is unicode and contains
|
||||||
|
latin characters.
|
||||||
|
"""
|
||||||
|
self._make_tarball(u'årchiv') # note this isn't a real word
|
||||||
|
|
||||||
|
@unittest.skipUnless(zlib, "requires zlib")
|
||||||
|
def test_make_tarball_unicode_extended(self):
|
||||||
|
"""
|
||||||
|
Mirror test_make_tarball, except filename is unicode and contains
|
||||||
|
characters outside the latin charset.
|
||||||
|
"""
|
||||||
|
self._make_tarball(u'のアーカイブ') # japanese for archive
|
||||||
|
|
||||||
def test_suite():
|
def test_suite():
|
||||||
return unittest.makeSuite(ArchiveUtilTestCase)
|
return unittest.makeSuite(ArchiveUtilTestCase)
|
||||||
|
|
||||||
|
|
|
@ -165,6 +165,28 @@ class SDistTestCase(PyPIRCCommandTestCase):
|
||||||
result.sort()
|
result.sort()
|
||||||
self.assertEqual(result, ['fake-1.0.tar', 'fake-1.0.tar.gz'])
|
self.assertEqual(result, ['fake-1.0.tar', 'fake-1.0.tar.gz'])
|
||||||
|
|
||||||
|
@unittest.skipUnless(zlib, "requires zlib")
|
||||||
|
def test_unicode_metadata_tgz(self):
|
||||||
|
"""
|
||||||
|
Unicode name or version should not break building to tar.gz format.
|
||||||
|
Reference issue #11638.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# create the sdist command with unicode parameters
|
||||||
|
dist, cmd = self.get_cmd({'name': u'fake', 'version': u'1.0'})
|
||||||
|
|
||||||
|
# create the sdist as gztar and run the command
|
||||||
|
cmd.formats = ['gztar']
|
||||||
|
cmd.ensure_finalized()
|
||||||
|
cmd.run()
|
||||||
|
|
||||||
|
# The command should have created the .tar.gz file
|
||||||
|
dist_folder = join(self.tmp_dir, 'dist')
|
||||||
|
result = os.listdir(dist_folder)
|
||||||
|
self.assertEqual(result, ['fake-1.0.tar.gz'])
|
||||||
|
|
||||||
|
os.remove(join(dist_folder, 'fake-1.0.tar.gz'))
|
||||||
|
|
||||||
@unittest.skipUnless(zlib, "requires zlib")
|
@unittest.skipUnless(zlib, "requires zlib")
|
||||||
def test_add_defaults(self):
|
def test_add_defaults(self):
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,9 @@ What's New in Python 2.7.3?
|
||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #11638: Unicode strings in 'name' and 'version' no longer cause
|
||||||
|
UnicodeDecodeErrors.
|
||||||
|
|
||||||
- Fix the fix for issue #12149: it was incorrect, although it had the side
|
- Fix the fix for issue #12149: it was incorrect, although it had the side
|
||||||
effect of appearing to resolve the issue. Thanks to Mark Shannon for
|
effect of appearing to resolve the issue. Thanks to Mark Shannon for
|
||||||
noticing.
|
noticing.
|
||||||
|
|
Loading…
Reference in New Issue