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):
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")
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')