From afb6ea99a523d9770e507ceebb99d189fbdc2605 Mon Sep 17 00:00:00 2001 From: Andrew Rabert Date: Wed, 20 Jan 2021 16:01:13 -0500 Subject: [PATCH] Fix postgres_status before first connection attempt It's possible to call postgres_status before the first connection is established. Before this fix, an exception was raised due to `self._postgres_connected` being `None`. ``` File "/home/ar/code/github/sprockets/sprockets-postgres/sprockets_postgres.py", line 411, in postgres_status if not self._postgres_connected.is_set(): AttributeError: 'NoneType' object has no attribute 'is_set' ``` --- sprockets_postgres.py | 3 ++- tests.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/sprockets_postgres.py b/sprockets_postgres.py index 783ba73..4bec921 100644 --- a/sprockets_postgres.py +++ b/sprockets_postgres.py @@ -408,7 +408,8 @@ class ApplicationMixin: } """ - if not self._postgres_connected.is_set(): + if not self._postgres_connected or \ + not self._postgres_connected.is_set(): return { 'available': False, 'pool_size': 0, diff --git a/tests.py b/tests.py index ea1a2c9..ee2bfd4 100644 --- a/tests.py +++ b/tests.py @@ -349,6 +349,18 @@ class TestCase(testing.SprocketsHttpTestCase): return self.app +class PostgresStatusTestCase(asynctest.TestCase): + + async def test_postgres_status_before_first_connection(self): + app = Application() + status = await app.postgres_status() + self.assertEqual( + status, + {'available': False, + 'pool_size': 0, + 'pool_free': 0}) + + class RequestHandlerMixinTestCase(TestCase): def test_postgres_status(self):