]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Fix error in coverage runs under Py3 with a C locale 1893/head
authorAntoine Pitrou <antoine@python.org>
Wed, 16 Nov 2016 10:57:00 +0000 (11:57 +0100)
committerAntoine Pitrou <antoine@python.org>
Wed, 16 Nov 2016 10:58:00 +0000 (11:58 +0100)
tornado/test/template_test.py
tornado/test/util.py

index dfcf380564be310ea30acb2175ad8bb497c88036..176d41a7cda611081fada2a596e4375e37a12123 100644 (file)
@@ -6,8 +6,8 @@ import traceback
 
 from tornado.escape import utf8, native_str, to_unicode
 from tornado.template import Template, DictLoader, ParseError, Loader
-from tornado.test.util import unittest
-from tornado.util import ObjectDict, unicode_type
+from tornado.test.util import unittest, is_coverage_running
+from tornado.util import ObjectDict, unicode_type, PY3
 
 
 class TemplateTest(unittest.TestCase):
@@ -175,6 +175,11 @@ try{% set y = 1/x %}
         self.assertEqual(template.generate(), '0')
 
     def test_non_ascii_name(self):
+        if PY3 and is_coverage_running():
+            try:
+                os.fsencode(u"t\u00e9st.html")
+            except UnicodeEncodeError:
+                self.skipTest("coverage tries to access unencodable filename")
         loader = DictLoader({u"t\u00e9st.html": "hello"})
         self.assertEqual(loader.load(u"t\u00e9st.html").generate(), b"hello")
 
index 2e3d779fd1f6dfc8ede702c04cc8f44b8a300fe2..429bc02404c44daf7a7f13af4ec1c7fc92e0261d 100644 (file)
@@ -76,3 +76,21 @@ def exec_test(caller_globals, caller_locals, s):
     local_namespace = {}
     exec(textwrap.dedent(s), global_namespace, local_namespace)
     return local_namespace
+
+
+def is_coverage_running():
+    """Return whether coverage is currently running.
+    """
+    if 'coverage' not in sys.modules:
+        return False
+    tracer = sys.gettrace()
+    if tracer is None:
+        return False
+    try:
+        mod = tracer.__module__
+    except AttributeError:
+        try:
+            mod = tracer.__class__.__module__
+        except AttributeError:
+            return False
+    return mod.startswith('coverage')