From: Sarah Hoffmann Date: Sun, 8 Apr 2018 08:06:33 +0000 (+0200) Subject: test: drop template DB when something goes wrong during creation X-Git-Tag: v3.2.0~95 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/28ee59dd643e4582ade1aa8fd6a788f0a4daf69e test: drop template DB when something goes wrong during creation Fixes #951. --- diff --git a/test/bdd/environment.py b/test/bdd/environment.py index 6f50817a..90c75724 100644 --- a/test/bdd/environment.py +++ b/test/bdd/environment.py @@ -86,33 +86,38 @@ class NominatimEnvironment(object): # just in case... make sure a previous table has been dropped self.db_drop_database(self.template_db) - # call the first part of database setup - self.write_nominatim_config(self.template_db) - self.run_setup_script('create-db', 'setup-db') - # remove external data to speed up indexing for tests - conn = psycopg2.connect(database=self.template_db) - cur = conn.cursor() - cur.execute("""select tablename from pg_tables - where tablename in ('gb_postcode', 'us_postcode')""") - for t in cur: - conn.cursor().execute('TRUNCATE TABLE %s' % (t[0],)) - conn.commit() - conn.close() + try: + # call the first part of database setup + self.write_nominatim_config(self.template_db) + self.run_setup_script('create-db', 'setup-db') + # remove external data to speed up indexing for tests + conn = psycopg2.connect(database=self.template_db) + cur = conn.cursor() + cur.execute("""select tablename from pg_tables + where tablename in ('gb_postcode', 'us_postcode')""") + for t in cur: + conn.cursor().execute('TRUNCATE TABLE %s' % (t[0],)) + conn.commit() + conn.close() + + # execute osm2pgsql import on an empty file to get the right tables + with tempfile.NamedTemporaryFile(dir='/tmp', suffix='.xml') as fd: + fd.write(b'') + fd.flush() + self.run_setup_script('import-data', + 'ignore-errors', + 'create-functions', + 'create-tables', + 'create-partition-tables', + 'create-partition-functions', + 'load-data', + 'create-search-indices', + osm_file=fd.name, + osm2pgsql_cache='200') + except: + self.db_drop_database(self.template_db) + raise - # execute osm2pgsql import on an empty file to get the right tables - with tempfile.NamedTemporaryFile(dir='/tmp', suffix='.xml') as fd: - fd.write(b'') - fd.flush() - self.run_setup_script('import-data', - 'ignore-errors', - 'create-functions', - 'create-tables', - 'create-partition-tables', - 'create-partition-functions', - 'load-data', - 'create-search-indices', - osm_file=fd.name, - osm2pgsql_cache='200') def setup_api_db(self, context): self.write_nominatim_config(self.api_test_db)