## Executing Tests
-All tests are located in the `\test` directory.
+All tests are located in the `/test` directory.
-### Preparing the test database
-
-Some of the behavioural test expect a test database to be present. You need at
-least 2GB RAM and 10GB disk space to create the database.
-
-First create a separate directory for the test DB and fetch the test planet
-data and the Tiger data for South Dakota:
-
-```
-mkdir testdb
-cd testdb
-wget https://www.nominatim.org/data/test/nominatim-api-testdata.pbf
-wget -O - https://nominatim.org/data/tiger2018-nominatim-preprocessed.tar.gz | tar xz --wildcards --no-anchored '46*'
-```
-
-Configure and build Nominatim in the usual way:
-
-```
-cmake $USERNAME/Nominatim
-make
-```
-
-Create a minimal test settings file:
-
-```
-tee .env << EOF
-NOMINATIM_DATABASE_DSN="pgsql:dbname=test_api_nominatim"
-NOMINATIM_USE_US_TIGER_DATA=yes
-NOMINATIM_TIGER_DATA_PATH=tiger
-NOMINATIM_WIKIPEDIA_DATA_PATH=$USERNAME/Nominatim/test/testdb
-EOF
-```
-
-Inspect the file to check that all settings are correct for your local setup.
-In particular, the wikipedia path should point to the test directory in your
-Nominatim source directory.
-
-Now you can import the test database:
-
-```
-dropdb --if-exists test_api_nominatim
-./utils/setup.php --all --osm-file nominatim-api-testdb.pbf 2>&1 | tee import.log
-./utils/specialphrases.php --wiki-import | psql -d test_api_nominatim 2>&1 | tee -a import.log
-./utils/setup.php --import-tiger-data 2>&1 | tee -a import.log
-```
-
-### Running the tests
-
-To run all tests just go to the test directory and run make:
+To run all tests just go to the build directory and run make:
```sh
-cd test
-make
+cd build
+make test
```
-To skip tests that require the test database, run `make no-test-db` instead.
-
For more information about the structure of the tests and how to change and
extend the test suite, see the [Testing chapter](Testing.md).
the test databases (db tests)
* `TEST_DB` - name of test database (db tests)
* `API_TEST_DB` - name of the database containing the API test data (api tests)
+ * `API_TEST_FILE` - OSM file to be imported into the API test database (api tests)
* `DB_HOST` - (optional) hostname of database host
* `DB_PORT` - (optional) port of database on host
* `DB_USER` - (optional) username of database login
* `DB_PASS` - (optional) password for database login
* `SERVER_MODULE_PATH` - (optional) path on the Postgres server to Nominatim
module shared library file
- * `TEST_SETTINGS_TEMPLATE` - file to write temporary Nominatim settings to
- * `REMOVE_TEMPLATE` - if true, the template database will not be reused during
- the next run. Reusing the base templates speeds up tests
- considerably but might lead to outdated errors for some
- changes in the database layout.
+ * `REMOVE_TEMPLATE` - if true, the template and API database will not be reused
+ during the next run. Reusing the base templates speeds
+ up tests considerably but might lead to outdated errors
+ for some changes in the database layout.
* `KEEP_TEST_DB` - if true, the test database will not be dropped after a test
is finished. Should only be used if one single scenario is
run, otherwise the result is undefined.
### API Tests (`test/bdd/api`)
These tests are meant to test the different API endpoints and their parameters.
-They require to import several datasets into a test database.
-See the [Development Setup chapter](Development-Environment.md#preparing-the-test-database)
-for instructions on how to set up this database.
+They require to import several datasets into a test database. This is normally
+done automatically during setup of the test. The API test database is then
+kept around and reused in subsequent runs of behave. Use `behave -DREMOVE_TEMPLATE`
+to force a reimport of the database.
-The official test dataset was derived from the 180924 planet (note: such
-file no longer exists at https://planet.openstreetmap.org/planet/2018/).
-Newer planets are likely to work as well but you may see isolated test
-failures where the data has changed.
+The official test dataset is saved in the file `test/testdb/apidb-test-data.pbf`
+and compromises the following data:
-The official test dataset can always be downloaded from
-[nominatim.org](https://www.nominatim.org/data/test/nominatim-api-testdata.pbf)
-To recreate the input data for the test database run:
+ * Geofabrik extract of Liechtenstein
+ * extract of Autauga country, Alabama, US (for tests against Tiger data)
+ * additional data from `test/testdb/additional_api_test.data.osm`
-```
-wget https://ftp5.gwdg.de/pub/misc/openstreetmap/planet.openstreetmap.org/pbf/planet-180924.osm.pbf
-osmconvert planet-180924.osm.pbf -B=test/testdb/testdb.polys -o=testdb.pbf
-```
+API tests should only be testing the functionality of the website PHP code.
+Most tests should be formulated as BDD DB creation tests (see below) instead.
#### Code Coverage
These tests check that data is imported correctly into the place table. They
use the same template database as the DB Creation tests, so the same remarks apply.
+
+Note that most testing of the gazetteer output of osm2pgsql is done in the tests
+of osm2pgsql itself. The BDD tests are just there to ensure compatibility of
+the osm2pgsql and Nominatim code.