import_test.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # flake8: noqa
  2. import subprocess
  3. import sys
  4. import unittest
  5. _import_everything = b"""
  6. # The event loop is not fork-safe, and it's easy to initialize an asyncio.Future
  7. # at startup, which in turn creates the default event loop and prevents forking.
  8. # Explicitly disallow the default event loop so that an error will be raised
  9. # if something tries to touch it.
  10. import asyncio
  11. asyncio.set_event_loop(None)
  12. import tornado.auth
  13. import tornado.autoreload
  14. import tornado.concurrent
  15. import tornado.escape
  16. import tornado.gen
  17. import tornado.http1connection
  18. import tornado.httpclient
  19. import tornado.httpserver
  20. import tornado.httputil
  21. import tornado.ioloop
  22. import tornado.iostream
  23. import tornado.locale
  24. import tornado.log
  25. import tornado.netutil
  26. import tornado.options
  27. import tornado.process
  28. import tornado.simple_httpclient
  29. import tornado.tcpserver
  30. import tornado.tcpclient
  31. import tornado.template
  32. import tornado.testing
  33. import tornado.util
  34. import tornado.web
  35. import tornado.websocket
  36. import tornado.wsgi
  37. try:
  38. import pycurl
  39. except ImportError:
  40. pass
  41. else:
  42. import tornado.curl_httpclient
  43. """
  44. class ImportTest(unittest.TestCase):
  45. def test_import_everything(self):
  46. # Test that all Tornado modules can be imported without side effects,
  47. # specifically without initializing the default asyncio event loop.
  48. # Since we can't tell which modules may have already beein imported
  49. # in our process, do it in a subprocess for a clean slate.
  50. proc = subprocess.Popen([sys.executable], stdin=subprocess.PIPE)
  51. proc.communicate(_import_everything)
  52. self.assertEqual(proc.returncode, 0)
  53. def test_import_aliases(self):
  54. # Ensure we don't delete formerly-documented aliases accidentally.
  55. import tornado.ioloop
  56. import tornado.gen
  57. import tornado.util
  58. self.assertIs(tornado.ioloop.TimeoutError, tornado.util.TimeoutError)
  59. self.assertIs(tornado.gen.TimeoutError, tornado.util.TimeoutError)