From: Daniele Varrazzo Date: Wed, 29 Sep 2021 19:20:31 +0000 (+0000) Subject: Allow PSYCOPG_TEST_DSN to be an empty string X-Git-Tag: 3.0~46^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=23c303d2e4f4b052793fc51aa0d6dd76a63da8c0;p=thirdparty%2Fpsycopg.git 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. --- 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()