From 5806f23492918f8d04fe52dfb4486f3893942172 Mon Sep 17 00:00:00 2001 From: Roy Hyunjin Han Date: Sun, 22 Feb 2015 18:59:05 -0500 Subject: [PATCH] Fail unit tests without errors --- socketIO_client/__init__.py | 25 +++++++++++++++---------- socketIO_client/parsers.py | 2 +- socketIO_client/tests/__init__.py | 16 +++++++++------- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/socketIO_client/__init__.py b/socketIO_client/__init__.py index e791b51..e472083 100644 --- a/socketIO_client/__init__.py +++ b/socketIO_client/__init__.py @@ -1,7 +1,9 @@ from .exceptions import ConnectionError, TimeoutError, PacketError from .heartbeats import HeartbeatThread from .logs import LoggingMixin -from .namespaces import EngineIONamespace, SocketIONamespace, find_callback +from .namespaces import ( + EngineIONamespace, SocketIONamespace, LoggingSocketIONamespace, + find_callback) from .parsers import ( parse_host, parse_engineIO_session, format_socketIO_packet_data, parse_socketIO_packet_data, @@ -12,6 +14,8 @@ from .transports import XHR_PollingTransport, prepare_http_session, TRANSPORTS __all__ = 'SocketIO', 'SocketIONamespace' __version__ = '0.6.1' +BaseNamespace = SocketIONamespace +LoggingNamespace = LoggingSocketIONamespace class EngineIO(LoggingMixin): @@ -34,24 +38,23 @@ class EngineIO(LoggingMixin): @property def connected(self): try: - transport = self.__transport + return self._connected except AttributeError: return False - else: - return transport.connected @property def _transport(self): try: if self.connected: - return self.__transport + return self._transport_instance except AttributeError: pass self._engineIO_session = self._get_engineIO_session() self._negotiate_transport() - self._reset_heartbeat() self._connect_namespaces() - return self.__transport + self._connected = True + self._reset_heartbeat() + return self._transport_instance def _get_engineIO_session(self): warning_screen = self._yield_warning_screen() @@ -61,6 +64,7 @@ class EngineIO(LoggingMixin): try: engineIO_packet_type, engineIO_packet_data = next( transport.recv_packet()) + break except (TimeoutError, ConnectionError) as e: if not self._wait_for_connection: raise @@ -71,7 +75,7 @@ class EngineIO(LoggingMixin): def _negotiate_transport(self): transport_name = 'xhr-polling' - self.__transport = self._get_transport(transport_name) + self._transport_instance = self._get_transport(transport_name) self._transport_name = transport_name def _reset_heartbeat(self): @@ -143,6 +147,7 @@ class EngineIO(LoggingMixin): return engineIO_packet_type = 1 self._transport.send_packet(engineIO_packet_type, '') + self._connected = False def _ping(self, engineIO_packet_data=''): engineIO_packet_type = 2 @@ -278,7 +283,7 @@ class SocketIO(EngineIO): def _connect_namespaces(self): for path, namespace in self._namespace_by_path.items(): - namespace._transport = self.__transport + namespace._transport = self._transport_instance if path: self.connect(path) @@ -294,7 +299,7 @@ class SocketIO(EngineIO): def define(self, Namespace, path=''): if path: - self._connect(path) + self.connect(path) self._namespace_by_path[path] = namespace = Namespace(self, path) return namespace diff --git a/socketIO_client/parsers.py b/socketIO_client/parsers.py index ba1a4e6..1ee9f2f 100644 --- a/socketIO_client/parsers.py +++ b/socketIO_client/parsers.py @@ -86,7 +86,7 @@ def parse_socketIO_packet_data(socketIO_packet_data): def get_namespace_path(socketIO_packet_data): - if '/' != get_character(socketIO_packet_data, 0): + if not socketIO_packet_data.startswith(b'/'): return '' # Loop incrementally in case there is binary data parts = [] diff --git a/socketIO_client/tests/__init__.py b/socketIO_client/tests/__init__.py index a5ab078..d0e7e8f 100644 --- a/socketIO_client/tests/__init__.py +++ b/socketIO_client/tests/__init__.py @@ -2,7 +2,7 @@ import logging import time from unittest import TestCase -from .. import SocketIO, LoggingSocketIONamespace, find_callback +from .. import SocketIO, LoggingNamespace, find_callback HOST = 'localhost' @@ -15,14 +15,16 @@ logging.basicConfig(level=logging.DEBUG) class BaseMixin(object): def setUp(self): + super(BaseMixin, self).setUp() self.called_on_response = False def tearDown(self): + super(BaseMixin, self).tearDown() del self.socketIO def test_disconnect(self): 'Disconnect' - self.socketIO.define(LoggingSocketIONamespace) + self.socketIO.define(LoggingNamespace) self.assertTrue(self.socketIO.connected) self.socketIO.disconnect() self.assertFalse(self.socketIO.connected) @@ -63,14 +65,14 @@ class BaseMixin(object): def test_emit_with_callback(self): 'Emit with callback' - self.socketIO.define(LoggingSocketIONamespace) + self.socketIO.define(LoggingNamespace) self.socketIO.emit('emit_with_callback', self.on_response) self.socketIO.wait_for_callbacks(seconds=self.wait_time_in_seconds) self.assertTrue(self.called_on_response) def test_emit_with_callback_with_payload(self): 'Emit with callback with payload' - self.socketIO.define(LoggingSocketIONamespace) + self.socketIO.define(LoggingNamespace) self.socketIO.emit( 'emit_with_callback_with_payload', self.on_response) self.socketIO.wait_for_callbacks(seconds=self.wait_time_in_seconds) @@ -78,7 +80,7 @@ class BaseMixin(object): def test_emit_with_callback_with_multiple_payloads(self): 'Emit with callback with multiple payloads' - self.socketIO.define(LoggingSocketIONamespace) + self.socketIO.define(LoggingNamespace) self.socketIO.emit( 'emit_with_callback_with_multiple_payloads', self.on_response) self.socketIO.wait_for_callbacks(seconds=self.wait_time_in_seconds) @@ -156,7 +158,7 @@ class BaseMixin(object): self.called_on_response = True -class Test_XHR_PollingTransport(TestCase, BaseMixin): +class Test_XHR_PollingTransport(BaseMixin, TestCase): def setUp(self): super(Test_XHR_PollingTransport, self).setUp() @@ -164,7 +166,7 @@ class Test_XHR_PollingTransport(TestCase, BaseMixin): self.wait_time_in_seconds = 1 -class Namespace(LoggingSocketIONamespace): +class Namespace(LoggingNamespace): def initialize(self): self.called_on_disconnect = False