X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/96ecee431b9620849e55fac52487cae3a143c817..e929399d4dd23fa1571dd77cf489ef51d716f5cc:/test/bdd/environment.py diff --git a/test/bdd/environment.py b/test/bdd/environment.py index 6f50817a..162346de 100644 --- a/test/bdd/environment.py +++ b/test/bdd/environment.py @@ -86,37 +86,45 @@ 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) + def setup_unknown_db(self, context): + self.write_nominatim_config('UNKNOWN_DATABASE_NAME') + def setup_db(self, context): self.setup_template_db() self.write_nominatim_config(self.test_db) @@ -146,7 +154,8 @@ class NominatimEnvironment(object): self.run_nominatim_script('update', *args, **kwargs) def run_nominatim_script(self, script, *args, **kwargs): - cmd = [os.path.join(self.build_dir, 'utils', '%s.php' % script)] + cmd = ['/usr/bin/env', 'php', '-Cq'] + cmd.append(os.path.join(self.build_dir, 'utils', '%s.php' % script)) cmd.extend(['--%s' % x for x in args]) for k, v in kwargs.items(): cmd.extend(('--' + k.replace('_', '-'), str(v))) @@ -255,6 +264,8 @@ def before_scenario(context, scenario): context.nominatim.setup_db(context) elif 'APIDB' in context.tags: context.nominatim.setup_api_db(context) + elif 'UNKNOWNDB' in context.tags: + context.nominatim.setup_unknown_db(context) context.scene = None def after_scenario(context, scenario):