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:
Mark Hammond 2003-12-03 22:16:47 +00:00
parent 07f1dfa91c
commit 2e8624c21a
2 changed files with 27 additions and 19 deletions

View File

@ -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

View File

@ -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()