]> granicus.if.org Git - python/commitdiff
asyncio: Fix NameError in sslproto _fatal_error()
authorYury Selivanov <yury@magic.io>
Tue, 28 Jun 2016 14:55:36 +0000 (10:55 -0400)
committerYury Selivanov <yury@magic.io>
Tue, 28 Jun 2016 14:55:36 +0000 (10:55 -0400)
Patch by Richard Walker.

Lib/asyncio/sslproto.py
Lib/test/test_asyncio/test_sslproto.py

index f58b5ac50235dc925fad2f77c5a94b216b6d115d..33d5de2db0ee1ac120f6f8b6f6d84ac81e3291c5 100644 (file)
@@ -5,6 +5,7 @@ try:
 except ImportError:  # pragma: no cover
     ssl = None
 
+from . import base_events
 from . import compat
 from . import protocols
 from . import transports
index e4121a018440d6ab1df85b1290f310ea2d589dac..8d5233565e4612a518fa10a413f3e4e584a87ce5 100644 (file)
@@ -1,5 +1,6 @@
 """Tests for asyncio/sslproto.py."""
 
+import logging
 import unittest
 from unittest import mock
 try:
@@ -8,6 +9,7 @@ except ImportError:
     ssl = None
 
 import asyncio
+from asyncio import log
 from asyncio import sslproto
 from asyncio import test_utils
 
@@ -66,6 +68,20 @@ class SslProtoHandshakeTests(test_utils.TestCase):
         test_utils.run_briefly(self.loop)
         self.assertIsInstance(waiter.exception(), ConnectionResetError)
 
+    def test_fatal_error_no_name_error(self):
+        # From issue #363.
+        # _fatal_error() generates a NameError if sslproto.py
+        # does not import base_events.
+        waiter = asyncio.Future(loop=self.loop)
+        ssl_proto = self.ssl_protocol(waiter)
+        # Temporarily turn off error logging so as not to spoil test output.
+        log_level = log.logger.getEffectiveLevel()
+        log.logger.setLevel(logging.FATAL)
+        try:
+            ssl_proto._fatal_error(None)
+        finally:
+            # Restore error logging.
+            log.logger.setLevel(log_level)
 
 if __name__ == '__main__':
     unittest.main()