]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/python/tools/test_tiger_data.py
when adding Tiger data, check first if database is in frozen state
[nominatim.git] / test / python / tools / test_tiger_data.py
index 2e5240871e099da66ac1678f94b75d391d3af994..4b1a1b8959b43eca48d8c72f9578cc3f7b01f811 100644 (file)
@@ -1,3 +1,9 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2022 by the Nominatim developer community.
+# For a full list of authors see the git log.
 """
 Test for tiger data function
 """
 """
 Test for tiger data function
 """
@@ -6,7 +12,7 @@ from textwrap import dedent
 
 import pytest
 
 
 import pytest
 
-from nominatim.tools import tiger_data
+from nominatim.tools import tiger_data, freeze
 from nominatim.errors import UsageError
 
 class MockTigerTable:
 from nominatim.errors import UsageError
 
 class MockTigerTable:
@@ -21,6 +27,9 @@ class MockTigerTable:
                                                token_info JSONB,
                                                postcode TEXT)""")
 
                                                token_info JSONB,
                                                postcode TEXT)""")
 
+            # We need this table to determine if the database is frozen or not
+            cur.execute("CREATE TABLE place (number INTEGER)")
+
     def count(self):
         with self.conn.cursor() as cur:
             return cur.scalar("SELECT count(*) FROM tiger")
     def count(self):
         with self.conn.cursor() as cur:
             return cur.scalar("SELECT count(*) FROM tiger")
@@ -74,6 +83,17 @@ def test_add_tiger_data(def_config, src_dir, tiger_table, tokenizer_mock, thread
     assert tiger_table.count() == 6213
 
 
     assert tiger_table.count() == 6213
 
 
+def test_add_tiger_data_database_frozen(def_config, temp_db_conn, tiger_table, tokenizer_mock,
+                                 tmp_path):
+    freeze.drop_update_tables(temp_db_conn)
+
+    with pytest.raises(UsageError) as excinfo:
+        tiger_data.add_tiger_data(str(tmp_path), def_config, 1, tokenizer_mock())
+
+        assert "database frozen" in str(excinfo.value)
+
+    assert tiger_table.count() == 0
+
 def test_add_tiger_data_no_files(def_config, tiger_table, tokenizer_mock,
                                  tmp_path):
     tiger_data.add_tiger_data(str(tmp_path), def_config, 1, tokenizer_mock())
 def test_add_tiger_data_no_files(def_config, tiger_table, tokenizer_mock,
                                  tmp_path):
     tiger_data.add_tiger_data(str(tmp_path), def_config, 1, tokenizer_mock())