Commit 6c6f851e authored by Victor Stinner's avatar Victor Stinner

Issue #9425: skip tests if a filename is not encodable

parent 87c9d6cf
......@@ -291,6 +291,11 @@ class ImportTests(unittest.TestCase):
def test_import_by_filename(self):
path = os.path.abspath(TESTFN)
encoding = sys.getfilesystemencoding()
try:
path.encode(encoding)
except UnicodeEncodeError:
self.skipTest('path is not encodable to {}'.format(encoding))
with self.assertRaises(ImportError) as c:
__import__(path)
self.assertEqual("Import by filename is not supported.",
......
......@@ -18,6 +18,11 @@ import unittest
TEST_XMLFILE = findfile("test.xml", subdir="xmltestdata")
TEST_XMLFILE_OUT = findfile("test.xml.out", subdir="xmltestdata")
try:
TEST_XMLFILE.encode("utf8")
TEST_XMLFILE_OUT.encode("utf8")
except UnicodeEncodeError:
raise unittest.SkipTest("filename is not encodable to utf8")
ns_uri = "http://www.python.org/xml-ns/saxtest/"
......
......@@ -509,8 +509,10 @@ class SysModuleTest(unittest.TestCase):
p = subprocess.Popen([sys.executable, "-c", code], stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
self.assertEqual(p.returncode, 1)
self.assert_(b"UnicodeEncodeError:" in stderr,
"%r not in %s" % (b"UniodeEncodeError:", ascii(stderr)))
self.assertIn(
br"UnicodeEncodeError: 'utf-8' codec can't encode character "
br"'\udcff' in position 7: surrogates not allowed",
stderr)
def test_sys_flags(self):
self.assertTrue(sys.flags)
......
......@@ -232,8 +232,12 @@ class urlretrieve_FileTests(unittest.TestCase):
except: pass
def constructLocalFileUrl(self, filePath):
return "file://%s" % urllib.request.pathname2url(
os.path.abspath(filePath))
filePath = os.path.abspath(filePath)
try:
filePath.encode("utf8")
except UnicodeEncodeError:
raise unittest.SkipTest("filePath is not encodable to utf8")
return "file://%s" % urllib.request.pathname2url(filePath)
def createNewTempFile(self, data=b""):
"""Creates a new temporary file containing the specified data,
......
......@@ -597,6 +597,10 @@ class OpenerDirectorTests(unittest.TestCase):
def sanepathname2url(path):
try:
path.encode("utf8")
except UnicodeEncodeError:
raise unittest.SkipTest("path is not encodable to utf8")
urlpath = urllib.request.pathname2url(path)
if os.name == "nt" and urlpath.startswith("///"):
urlpath = urlpath[2:]
......
......@@ -13,6 +13,7 @@
import sys
import cgi
import unittest
from test import support
from test.support import findfile
......@@ -20,6 +21,10 @@ from test.support import findfile
from xml.etree import ElementTree as ET
SIMPLE_XMLFILE = findfile("simple.xml", subdir="xmltestdata")
try:
SIMPLE_XMLFILE.encode("utf8")
except UnicodeEncodeError:
raise unittest.SkipTest("filename is not encodable to utf8")
SIMPLE_NS_XMLFILE = findfile("simple-ns.xml", subdir="xmltestdata")
SAMPLE_XML = """\
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment