diff --git a/wpull/http/client.py b/wpull/http/client.py index 7ad2aac8..d6e1244f 100644 --- a/wpull/http/client.py +++ b/wpull/http/client.py @@ -3,6 +3,7 @@ import functools import gettext import logging +import warnings from trollius import From, Return import trollius @@ -157,7 +158,10 @@ def abort(self): self._session_complete = True def recycle(self): - assert self._session_complete + if not self._session_complete: + warnings.warn(_('HTTP session did not complete.')) + + self.abort() if self._connection: self._connection_pool.check_in(self._connection) diff --git a/wpull/http/client_test.py b/wpull/http/client_test.py index add5e139..be495130 100644 --- a/wpull/http/client_test.py +++ b/wpull/http/client_test.py @@ -2,6 +2,7 @@ import contextlib import functools import io +import warnings from trollius import From @@ -137,15 +138,19 @@ def test_client_recorder(self): self.assertIn(b'hello', recorder.response_data) @wpull.testing.async.async_test(timeout=DEFAULT_TIMEOUT) - def test_client_exception_close(self): + def test_client_did_not_complete(self): client = Client() - with self.assertRaises(AssertionError): + with warnings.catch_warnings(record=True) as warn_list: + warnings.simplefilter("always") + with client.session() as session: request = Request(self.get_url('/')) response = yield From(session.fetch(request)) self.assertFalse(session.done()) + self.assertEqual(1, len(warn_list)) + client = Client() with self.assertRaises(MyException):