File pytest-plugins-pr186-fix-psycopg29.patch of Package python-pytest-server-fixtures

From 291995b3cfe60a5b30d5c6e1f3279ea40d35c7bb Mon Sep 17 00:00:00 2001
From: Ben Greiner <code@bnavigator.de>
Date: Sun, 17 Oct 2021 18:57:06 +0200
Subject: [PATCH] Don't use context manager for CREATE DATABASE

Psycopg 2.9 uses transaction blocks withing context managers,
which is not allowed for CREATE DATABASE
https://github.com/psycopg/psycopg2/issues/941
---
 .../pytest_server_fixtures/postgres.py               | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/pytest-server-fixtures/pytest_server_fixtures/postgres.py b/pytest-server-fixtures/pytest_server_fixtures/postgres.py
index 7c6ea33d..aeab36ad 100644
--- a/pytest_server_fixtures/postgres.py
+++ b/pytest_server_fixtures/postgres.py
@@ -103,18 +103,22 @@ def run_cmd(self):
 
     def check_server_up(self):
         from psycopg2 import OperationalError
+        conn = None
         try:
             print("Connecting to Postgres at localhost:{}".format(self.port))
-            with self.connect('postgres') as conn:
-                conn.set_session(autocommit=True)
-                with conn.cursor() as cursor:
-                    cursor.execute("CREATE DATABASE " + self.database_name)
+            conn = self.connect('postgres')
+            conn.set_session(autocommit=True)
+            with conn.cursor() as cursor:
+                cursor.execute("CREATE DATABASE " + self.database_name)
             self.connection = self.connect(self.database_name)
             with open(self.workspace / 'db' / 'postmaster.pid', 'r') as f:
                 self.pid = int(f.readline().rstrip())
             return True
         except OperationalError as e:
             print("Could not connect to test postgres: {}".format(e))
+        finally:
+            if conn:
+                conn.close()
         return False
 
     def connect(self, database=None):
openSUSE Build Service is sponsored by