From eefd0efa59356cf635e9b1ee4c0536cc5d57d7c4 Mon Sep 17 00:00:00 2001 From: Ayush Dhar Dubey Date: Fri, 9 Jan 2026 16:52:15 +0530 Subject: [PATCH] update test frozen db: new tiger import mechanism --- lib-sql/tiger_import_start.sql | 1 + test/python/tools/test_tiger_data.py | 27 ++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/lib-sql/tiger_import_start.sql b/lib-sql/tiger_import_start.sql index d0bbdf63..40a2f525 100644 --- a/lib-sql/tiger_import_start.sql +++ b/lib-sql/tiger_import_start.sql @@ -207,6 +207,7 @@ BEGIN RETURN 1; END IF; + RETURN 0; END; $$ diff --git a/test/python/tools/test_tiger_data.py b/test/python/tools/test_tiger_data.py index f7dfe32e..9623e21b 100644 --- a/test/python/tools/test_tiger_data.py +++ b/test/python/tools/test_tiger_data.py @@ -32,6 +32,8 @@ class MockTigerTable: # We need this table to determine if the database is frozen or not cur.execute("CREATE TABLE place (number INTEGER)") + # We need this table to determine if the database is in reverse-only mode + cur.execute("CREATE TABLE search_name (place_id BIGINT)") def count(self): return execute_scalar(self.conn, "SELECT count(*) FROM tiger") @@ -87,15 +89,30 @@ async def test_add_tiger_data(def_config, src_dir, tiger_table, tokenizer_mock, assert tiger_table.count() == 6213 +@pytest.mark.parametrize("threads", (1, 5)) @pytest.mark.asyncio -async def test_add_tiger_data_database_frozen(def_config, temp_db_conn, tiger_table, tokenizer_mock, - tmp_path): +async def test_add_tiger_data_database_frozen(def_config, src_dir, temp_db_conn, tiger_table, + tokenizer_mock, threads): freeze.drop_update_tables(temp_db_conn) - with pytest.raises(UsageError) as excinfo: - await tiger_data.add_tiger_data(str(tmp_path), def_config, 1, tokenizer_mock()) + await tiger_data.add_tiger_data(str(src_dir / 'test' / 'testdb' / 'tiger'), + def_config, threads, tokenizer_mock()) - assert "database frozen" in str(excinfo.value) + assert tiger_table.count() == 6213 + + +@pytest.mark.asyncio +async def test_add_tiger_data_reverse_only(def_config, src_dir, temp_db_conn, tiger_table, + tokenizer_mock): + with temp_db_conn.cursor() as cur: + cur.execute("DROP TABLE search_name") + temp_db_conn.commit() + + with pytest.raises(UsageError, + match="Cannot perform tiger import: required tables are missing. " + "See https://github.com/osm-search/Nominatim/issues/2463 for details."): + await tiger_data.add_tiger_data(str(src_dir / 'test' / 'testdb' / 'tiger'), + def_config, 1, tokenizer_mock()) assert tiger_table.count() == 0