| 120 | |
| 121 | |
| 122 | def test_info(dsn, pgconn): |
| 123 | info = pgconn.info |
| 124 | assert len(info) > 20 |
| 125 | dbname = [d for d in info if d.keyword == b"dbname"][0] |
| 126 | assert dbname.envvar == b"PGDATABASE" |
| 127 | assert dbname.label == b"Database-Name" |
| 128 | assert dbname.dispchar == b"" |
| 129 | assert dbname.dispsize == 20 |
| 130 | |
| 131 | parsed = pq.Conninfo.parse(dsn.encode()) |
| 132 | # take the name and the user either from params or from env vars |
| 133 | name = [ |
| 134 | o.val or os.environ.get(o.envvar.decode(), "").encode() |
| 135 | for o in parsed |
| 136 | if o.keyword == b"dbname" and o.envvar |
| 137 | ][0] |
| 138 | user = [ |
| 139 | o.val or os.environ.get(o.envvar.decode(), "").encode() |
| 140 | for o in parsed |
| 141 | if o.keyword == b"user" and o.envvar |
| 142 | ][0] |
| 143 | assert dbname.val == (name or user) |
| 144 | |
| 145 | pgconn.finish() |
| 146 | with pytest.raises(psycopg.OperationalError): |
| 147 | pgconn.info |
| 148 | |
| 149 | |
| 150 | @pytest.mark.crdb_skip("pg_terminate_backend") |