From: Sarah Hoffmann Date: Wed, 20 Jan 2021 19:24:39 +0000 (+0100) Subject: cli indexer tests need a fake database X-Git-Tag: v3.7.0~49^2 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/063a4cb403419b05f6d81b1cd8d78dad905ddb5c?hp=-c cli indexer tests need a fake database The Indexer constructor opens a connection to the given database. --- 063a4cb403419b05f6d81b1cd8d78dad905ddb5c diff --git a/test/python/conftest.py b/test/python/conftest.py index 26bbb397..1cc9ef9c 100644 --- a/test/python/conftest.py +++ b/test/python/conftest.py @@ -1,6 +1,26 @@ import sys from pathlib import Path +import psycopg2 +import pytest + # always test against the source sys.path.insert(0, str((Path(__file__) / '..' / '..' / '..').resolve())) +@pytest.fixture +def temp_db(monkeypatch): + name = 'test_nominatim_python_unittest' + with psycopg2.connect(database='postgres') as conn: + conn.set_isolation_level(0) + with conn.cursor() as cur: + cur.execute('DROP DATABASE IF EXISTS {}'.format(name)) + cur.execute('CREATE DATABASE {}'.format(name)) + + monkeypatch.setenv('NOMINATIM_DATABASE_DSN' , 'dbname=' + name) + + yield name + + with psycopg2.connect(database='postgres') as conn: + conn.set_isolation_level(0) + with conn.cursor() as cur: + cur.execute('DROP DATABASE IF EXISTS {}'.format(name)) diff --git a/test/python/test_cli.py b/test/python/test_cli.py index eae4f65a..92b42372 100644 --- a/test/python/test_cli.py +++ b/test/python/test_cli.py @@ -1,6 +1,7 @@ """ Tests for command line interface wrapper. """ +import psycopg2 import pytest import nominatim.cli @@ -81,7 +82,10 @@ def test_add_data_command(mock_run_legacy, name, oid): (['--boundaries-only'], 1, 0), (['--no-boundaries'], 0, 1), (['--boundaries-only', '--no-boundaries'], 0, 0)]) -def test_index_command(monkeypatch, params, do_bnds, do_ranks): +def test_index_command(monkeypatch, temp_db, params, do_bnds, do_ranks): + with psycopg2.connect(database=temp_db) as conn: + with conn.cursor() as cur: + cur.execute("CREATE TABLE import_status (indexed bool)") bnd_mock = MockParamCapture() monkeypatch.setattr(nominatim.cli.Indexer, 'index_boundaries', bnd_mock) rank_mock = MockParamCapture() diff --git a/test/python/test_indexing.py b/test/python/test_indexing.py index e1a3a4d0..2fe21e80 100644 --- a/test/python/test_indexing.py +++ b/test/python/test_indexing.py @@ -9,19 +9,11 @@ from nominatim.indexer.indexer import Indexer class IndexerTestDB: - def __init__(self, name): - self.name = name - self.conn = None + def __init__(self, conn): self.placex_id = itertools.count(100000) self.osmline_id = itertools.count(500000) - def setup(self): - with psycopg2.connect(database='postgres') as conn: - conn.set_isolation_level(0) - with conn.cursor() as cur: - cur.execute('DROP DATABASE IF EXISTS {}'.format(self.name)) - cur.execute('CREATE DATABASE {}'.format(self.name)) - self.conn = psycopg2.connect(database=self.name) + self.conn = conn self.conn.set_isolation_level(0) with self.conn.cursor() as cur: cur.execute("""CREATE TABLE placex (place_id BIGINT, @@ -52,16 +44,6 @@ class IndexerTestDB: cur.execute("""CREATE TRIGGER osmline_update BEFORE UPDATE ON location_property_osmline FOR EACH ROW EXECUTE PROCEDURE date_update()""") - - def drop(self): - if self.conn: - self.conn.close() - self.conn = None - with psycopg2.connect(database='postgres') as conn: - conn.set_isolation_level(0) - with conn.cursor() as cur: - cur.execute('DROP DATABASE IF EXISTS {}'.format(self.name)) - def scalar(self, query): with self.conn.cursor() as cur: cur.execute(query) @@ -100,11 +82,10 @@ class IndexerTestDB: @pytest.fixture -def test_db(): - db = IndexerTestDB('test_nominatim_python_unittest') - db.setup() - yield db - db.drop() +def test_db(temp_db): + conn = psycopg2.connect(database=temp_db) + yield IndexerTestDB(conn) + conn.close() @pytest.mark.parametrize("threads", [1, 15])