Limit test scope to those platforms that can save the target filenames. Reference #11638.

This commit is contained in:
Jason R. Coombs 2011-12-28 11:42:22 -05:00
parent c32d5cb9ec
commit 79e50c659a
1 changed files with 17 additions and 0 deletions

View File

@ -4,6 +4,7 @@ __revision__ = "$Id$"
import unittest
import os
import sys
import tarfile
from os.path import splitdrive
import warnings
@ -34,6 +35,18 @@ try:
except ImportError:
zlib = None
def can_fs_encode(filename):
"""
Return True if the filename can be saved in the file system.
"""
if os.path.supports_unicode_filenames:
return True
try:
filename.encode(sys.getfilesystemencoding())
except UnicodeEncodeError:
return False
return True
class ArchiveUtilTestCase(support.TempdirManager,
support.LoggingSilencer,
@ -289,6 +302,8 @@ class ArchiveUtilTestCase(support.TempdirManager,
self._make_tarball(u'archive')
@unittest.skipUnless(zlib, "requires zlib")
@unittest.skipUnless(can_fs_encode(u'årchiv'),
'File system cannot handle this filename')
def test_make_tarball_unicode_latin1(self):
"""
Mirror test_make_tarball, except filename is unicode and contains
@ -297,6 +312,8 @@ class ArchiveUtilTestCase(support.TempdirManager,
self._make_tarball(u'årchiv') # note this isn't a real word
@unittest.skipUnless(zlib, "requires zlib")
@unittest.skipUnless(can_fs_encode(u'のアーカイブ'),
'File system cannot handle this filename')
def test_make_tarball_unicode_extended(self):
"""
Mirror test_make_tarball, except filename is unicode and contains