From 23c303d2e4f4b052793fc51aa0d6dd76a63da8c0 Mon Sep 17 00:00:00 2001 From: Daniele Varrazzo Date: Wed, 29 Sep 2021 19:20:31 +0000 Subject: [PATCH] Allow PSYCOPG_TEST_DSN to be an empty string This allows to configure the test database by only using the PG* env vars, while still leaving the option to wreck a database opt-in. --- tests/fix_db.py | 4 ++-- tests/pq/test_pgconn.py | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/tests/fix_db.py b/tests/fix_db.py index c63e283dd..738d06a6e 100644 --- a/tests/fix_db.py +++ b/tests/fix_db.py @@ -8,7 +8,7 @@ def pytest_addoption(parser): parser.addoption( "--test-dsn", metavar="DSN", - default=os.environ.get("PSYCOPG_TEST_DSN") or None, + default=os.environ.get("PSYCOPG_TEST_DSN"), help="Connection string to run database tests requiring a connection" " [you can also use the PSYCOPG_TEST_DSN env var].", ) @@ -27,7 +27,7 @@ def pytest_configure(config): def dsn(request): """Return the dsn used to connect to the `--test-dsn` database.""" dsn = request.config.getoption("--test-dsn") - if not dsn: + if dsn is None: pytest.skip("skipping test as no --test-dsn") return dsn diff --git a/tests/pq/test_pgconn.py b/tests/pq/test_pgconn.py index 89df2953e..e846adf2e 100644 --- a/tests/pq/test_pgconn.py +++ b/tests/pq/test_pgconn.py @@ -113,8 +113,17 @@ def test_info(dsn, pgconn): assert dbname.dispsize == 20 parsed = pq.Conninfo.parse(dsn.encode()) - name = [o.val for o in parsed if o.keyword == b"dbname"][0] - user = [o.val for o in parsed if o.keyword == b"user"][0] + # take the name and the user either from params or from env vars + name = [ + o.val or os.environ.get(o.envvar.decode(), "").encode() + for o in parsed + if o.keyword == b"dbname" + ][0] + user = [ + o.val or os.environ.get(o.envvar.decode(), "").encode() + for o in parsed + if o.keyword == b"user" + ][0] assert dbname.val == (name or user) pgconn.finish() -- 2.47.2