add function to set up libpq environment

Instead of parsing the DSN for each external libpq program we
are going to execute, provide a function that feeds them all
necessary parameters through the environment.

osm2pgsql is the first user.
This commit is contained in:
Sarah Hoffmann
2021-02-23 14:11:11 +01:00
parent e520613362
commit af7226393a
3 changed files with 77 additions and 15 deletions

View File

@@ -3,7 +3,7 @@ Tests for specialised conenction and cursor classes.
"""
import pytest
from nominatim.db.connection import connect
from nominatim.db.connection import connect, get_pg_env
@pytest.fixture
def db(temp_db):
@@ -48,3 +48,24 @@ def test_cursor_scalar_many_rows(db):
with db.cursor() as cur:
with pytest.raises(RuntimeError):
cur.scalar('SELECT * FROM pg_tables')
def test_get_pg_env_add_variable(monkeypatch):
monkeypatch.delenv('PGPASSWORD', raising=False)
env = get_pg_env('user=fooF')
assert env['PGUSER'] == 'fooF'
assert 'PGPASSWORD' not in env
def test_get_pg_env_overwrite_variable(monkeypatch):
monkeypatch.setenv('PGUSER', 'some default')
env = get_pg_env('user=overwriter')
assert env['PGUSER'] == 'overwriter'
def test_get_pg_env_ignore_unknown():
env = get_pg_env('tty=stuff', base_env={})
assert env == {}