X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/7205491b8495e48c62b28373d1746e77d475582b..1a64c3bfcd6f46506b7101d9943dbc297be25f10:/docs/develop/Testing.md?ds=sidebyside diff --git a/docs/develop/Testing.md b/docs/develop/Testing.md index 97d40ab7..12673d40 100644 --- a/docs/develop/Testing.md +++ b/docs/develop/Testing.md @@ -8,7 +8,7 @@ the tests, see the [Development setup chapter](Development-Environment.md). There are two kind of tests in this test suite. There are functional tests which test the API interface using a BDD test framework and there are unit -tests for specific PHP functions. +tests for the Python code. This test directory is structured as follows: @@ -20,28 +20,11 @@ This test directory is structured as follows: | +- db Tests for internal data processing on import and update | +- api Tests for API endpoints (search, reverse, etc.) | - +- php PHP unit tests +- python Python unit tests +- testdb Base data for generating API test database +- testdata Additional test data used by unit tests ``` -## PHP Unit Tests (`test/php`) - -Unit tests for PHP code can be found in the `php/` directory. They test selected -PHP functions. Very low coverage. - -To execute the test suite run - - cd test/php - UNIT_TEST_DSN='pgsql:dbname=nominatim_unit_tests' phpunit ../ - -It will read phpunit.xml which points to the library, test path, bootstrap -strip and sets other parameters. - -It will use (and destroy) a local database 'nominatim_unit_tests'. You can set -a different connection string with e.g. UNIT_TEST_DSN='pgsql:dbname=foo_unit_tests'. - ## Python Unit Tests (`test/python`) Unit tests for Python code can be found in the `python/` directory. The goal is @@ -78,7 +61,6 @@ To run the functional tests, do The tests can be configured with a set of environment variables (`behave -D key=val`): - * `BUILDDIR` - build directory of Nominatim installation to test * `TEMPLATE_DB` - name of template database used as a skeleton for the test databases (db tests) * `TEST_DB` - name of test database (db tests) @@ -90,8 +72,6 @@ The tests can be configured with a set of environment variables (`behave -D key= * `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 * `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 @@ -119,26 +99,9 @@ and compromises the following data: * extract of Autauga country, Alabama, US (for tests against Tiger data) * additional data from `test/testdb/additional_api_test.data.osm` -API tests should only be testing the functionality of the website PHP code. +API tests should only be testing the functionality of the website frontend code. Most tests should be formulated as BDD DB creation tests (see below) instead. -#### Code Coverage (PHP engine only) - -The API tests also support code coverage tests. You need to install -[PHP_CodeCoverage](https://github.com/sebastianbergmann/php-code-coverage). -On Debian/Ubuntu run: - - apt-get install php-codecoverage php-xdebug - -Then run the API tests as follows: - - behave api -DPHPCOV= - -The output directory must be an absolute path. To generate reports, you can use -the [phpcov](https://github.com/sebastianbergmann/phpcov) tool: - - phpcov merge --html= - ### DB Creation Tests (`test/bdd/db`) These tests check the import and update of the Nominatim database. They do not