diff --git a/google/auth/transport/requests.py b/google/auth/transport/requests.py index cf5f0b1a0..f4a7c65d7 100644 --- a/google/auth/transport/requests.py +++ b/google/auth/transport/requests.py @@ -150,8 +150,14 @@ def __init__(self, session=None): self.session = session def __del__(self): - if hasattr(self, "session") and self.session is not None: - self.session.close() + try: + if hasattr(self, "session") and self.session is not None: + self.session.close() + except TypeError: + # NOTE: For certain Python binary built, the queue.Empty exception + # might not be considered a normal Python exception causing + # TypeError. + pass def __call__( self, diff --git a/tests/transport/test_requests.py b/tests/transport/test_requests.py index 9018e5c8d..7899419be 100644 --- a/tests/transport/test_requests.py +++ b/tests/transport/test_requests.py @@ -57,6 +57,12 @@ def test_session_closed_on_del(self): request.__del__() http.close.assert_called_with() + http = mock.create_autospec(requests.Session, instance=True) + http.close.side_effect = TypeError("test injected TypeError") + request = google.auth.transport.requests.Request(http) + request.__del__() + http.close.assert_called_with() + class TestTimeoutGuard(object): def make_guard(self, *args, **kwargs):