mirror of https://github.com/python/cpython
Fix test_unicode_file errors on platforms without Unicode file support,
by setting TESTFN_UNICODE_UNENCODEABLE on these platforms. test_unicode_file only attempts to use the name for testing if not None.
This commit is contained in:
parent
07f1dfa91c
commit
2e8624c21a
|
@ -136,22 +136,28 @@ else:
|
||||||
TESTFN_ENCODING=sys.getfilesystemencoding()
|
TESTFN_ENCODING=sys.getfilesystemencoding()
|
||||||
# TESTFN_UNICODE_UNENCODEABLE is a filename that should *not* be
|
# TESTFN_UNICODE_UNENCODEABLE is a filename that should *not* be
|
||||||
# able to be encoded by *either* the default or filesystem encoding.
|
# able to be encoded by *either* the default or filesystem encoding.
|
||||||
# Japanese characters (I think - from bug 846133)
|
# This test really only makes sense on Windows NT platforms
|
||||||
TESTFN_UNICODE_UNENCODEABLE = u"@test-\u5171\u6709\u3055\u308c\u308b"
|
# which have special Unicode support in posixmodule.
|
||||||
try:
|
if not hasattr(sys, "getwindowsversion") or \
|
||||||
# XXX - Note - should be using TESTFN_ENCODING here - but for
|
sys.getwindowsversion()[3]<2:
|
||||||
# Windows, "mbcs" currently always operates as if in
|
TESTFN_UNICODE_UNENCODABLE = None
|
||||||
# errors=ignore' mode - hence we get '?' characters rather than
|
|
||||||
# the exception. 'Latin1' operates as we expect - ie, fails.
|
|
||||||
# See [ 850997 ] mbcs encoding ignores errors
|
|
||||||
TESTFN_UNICODE_UNENCODEABLE.encode("Latin1")
|
|
||||||
except UnicodeEncodeError:
|
|
||||||
pass
|
|
||||||
else:
|
else:
|
||||||
print \
|
# Japanese characters (I think - from bug 846133)
|
||||||
'WARNING: The filename %r CAN be encoded by the filesystem. ' \
|
TESTFN_UNICODE_UNENCODEABLE = u"@test-\u5171\u6709\u3055\u308c\u308b"
|
||||||
'Unicode filename tests may not be effective' \
|
try:
|
||||||
% TESTFN_UNICODE_UNENCODEABLE
|
# XXX - Note - should be using TESTFN_ENCODING here - but for
|
||||||
|
# Windows, "mbcs" currently always operates as if in
|
||||||
|
# errors=ignore' mode - hence we get '?' characters rather than
|
||||||
|
# the exception. 'Latin1' operates as we expect - ie, fails.
|
||||||
|
# See [ 850997 ] mbcs encoding ignores errors
|
||||||
|
TESTFN_UNICODE_UNENCODEABLE.encode("Latin1")
|
||||||
|
except UnicodeEncodeError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
print \
|
||||||
|
'WARNING: The filename %r CAN be encoded by the filesystem. ' \
|
||||||
|
'Unicode filename tests may not be effective' \
|
||||||
|
% TESTFN_UNICODE_UNENCODEABLE
|
||||||
|
|
||||||
# Make sure we can write to TESTFN, try in /tmp if we can't
|
# Make sure we can write to TESTFN, try in /tmp if we can't
|
||||||
fp = None
|
fp = None
|
||||||
|
|
|
@ -140,7 +140,8 @@ class TestUnicodeFiles(unittest.TestCase):
|
||||||
def test_single_files(self):
|
def test_single_files(self):
|
||||||
self._test_single(TESTFN_ENCODED)
|
self._test_single(TESTFN_ENCODED)
|
||||||
self._test_single(TESTFN_UNICODE)
|
self._test_single(TESTFN_UNICODE)
|
||||||
self._test_single(TESTFN_UNICODE_UNENCODEABLE)
|
if TESTFN_UNICODE_UNENCODEABLE is not None:
|
||||||
|
self._test_single(TESTFN_UNICODE_UNENCODEABLE)
|
||||||
|
|
||||||
def test_equivalent_files(self):
|
def test_equivalent_files(self):
|
||||||
self._test_equivalent(TESTFN_ENCODED, TESTFN_UNICODE)
|
self._test_equivalent(TESTFN_ENCODED, TESTFN_UNICODE)
|
||||||
|
@ -156,9 +157,10 @@ class TestUnicodeFiles(unittest.TestCase):
|
||||||
self._do_directory(TESTFN_UNICODE+ext, TESTFN_ENCODED+ext, os.getcwdu)
|
self._do_directory(TESTFN_UNICODE+ext, TESTFN_ENCODED+ext, os.getcwdu)
|
||||||
self._do_directory(TESTFN_UNICODE+ext, TESTFN_UNICODE+ext, os.getcwdu)
|
self._do_directory(TESTFN_UNICODE+ext, TESTFN_UNICODE+ext, os.getcwdu)
|
||||||
# Our directory name that can't use a non-unicode name.
|
# Our directory name that can't use a non-unicode name.
|
||||||
self._do_directory(TESTFN_UNICODE_UNENCODEABLE+ext,
|
if TESTFN_UNICODE_UNENCODEABLE is not None:
|
||||||
TESTFN_UNICODE_UNENCODEABLE+ext,
|
self._do_directory(TESTFN_UNICODE_UNENCODEABLE+ext,
|
||||||
os.getcwdu)
|
TESTFN_UNICODE_UNENCODEABLE+ext,
|
||||||
|
os.getcwdu)
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
suite = unittest.TestSuite()
|
suite = unittest.TestSuite()
|
||||||
|
|
Loading…
Reference in New Issue