]> git.openstreetmap.org Git - nominatim.git/blobdiff - docs/develop/Development-Environment.md
Install-on-Ubuntu-20.sh - correct php-fpm version
[nominatim.git] / docs / develop / Development-Environment.md
index 0334d0f1006e4e1c36efcc301dc075d8bbbde0ad..eba87c09e68138e20b08fdacb3f9139a8efd1345 100644 (file)
@@ -3,11 +3,11 @@
 This chapter gives an overview how to set up Nominatim for developement
 and how to run tests.
 
 This chapter gives an overview how to set up Nominatim for developement
 and how to run tests.
 
-!!!Important
-This guide assumes that you develop under the latest version of Ubuntu. You
-can of course also use your favourite distribution. You just might have to
-adapt the commands below slightly, in particular the commands for installing
-additional software.
+!!! Important
+    This guide assumes that you develop under the latest version of Ubuntu. You
+    can of course also use your favourite distribution. You just might have to
+    adapt the commands below slightly, in particular the commands for installing
+    additional software.
 
 ## Installing Nominatim
 
 
 ## Installing Nominatim
 
@@ -25,18 +25,20 @@ following packages should get you started:
 
 ## Prerequisites for testing and documentation
 
 
 ## Prerequisites for testing and documentation
 
-The Nominatim tests suite consists of behavioural tests (using behave) and
-unit tests (using PHPUnit). It has the following additional requirements:
+The Nominatim test suite consists of behavioural tests (using behave) and
+unit tests (using PHPUnit for PHP code and pytest for Python code).
+It has the following additional requirements:
 
 
-* [behave test framework](https://github.com/behave/behave) >= 1.2.5
-* [nose](https://nose.readthedocs.org)
-* [pytidylib](http://countergram.com/open-source/pytidylib)
-* [phpunit](https://phpunit.de) >= 7.3
+* [behave test framework](https://behave.readthedocs.io) >= 1.2.6
+* [phpunit](https://phpunit.de) (9.5 is known to work)
 * [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer)
 * [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer)
+* [Pylint](https://pylint.org/) (2.6.0 is used for the CI)
+* [pytest](https://pytest.org)
 
 The documentation is built with mkdocs:
 
 * [mkdocs](https://www.mkdocs.org/) >= 1.1.2
 
 The documentation is built with mkdocs:
 
 * [mkdocs](https://www.mkdocs.org/) >= 1.1.2
+* [mkdocstrings](https://mkdocstrings.github.io/)
 
 ### Installing prerequisites on Ubuntu/Debian
 
 
 ### Installing prerequisites on Ubuntu/Debian
 
@@ -48,9 +50,9 @@ To install all necessary packages run:
 
 ```sh
 sudo apt install php-cgi phpunit php-codesniffer \
 
 ```sh
 sudo apt install php-cgi phpunit php-codesniffer \
-                 python3-pip python3-setuptools python3-dev
+                 python3-pip python3-setuptools python3-dev pylint
 
 
-pip3 install --user behave nose mkdocs
+pip3 install --user behave mkdocs mkdocstrings pytest
 ```
 
 The `mkdocs` executable will be located in `.local/bin`. You may have to add
 ```
 
 The `mkdocs` executable will be located in `.local/bin`. You may have to add
@@ -79,58 +81,15 @@ echo 'export PATH=~/.config/composer/vendor/bin:$PATH' > ~/.profile
 
 ## Executing Tests
 
 
 ## 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
-```
-
-Copy the test settings:
-
-```
-cp $USERNAME/Nominatim/test/testdb/local.php settings/
-```
-
-Inspect the file to check that all settings are correct for your local setup.
-
-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
 
 ```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).
 
 For more information about the structure of the tests and how to change and
 extend the test suite, see the [Testing chapter](Testing.md).
 
@@ -155,7 +114,7 @@ symlinks (see `CMakeLists.txt` for the exact steps).
 Now you can start webserver for local testing
 
 ```
 Now you can start webserver for local testing
 
 ```
-build> mkdocs serve
+build> make serve-doc
 [server:296] Serving on http://127.0.0.1:8000
 [handlers:62] Start watching changes
 ```
 [server:296] Serving on http://127.0.0.1:8000
 [handlers:62] Start watching changes
 ```
@@ -164,7 +123,7 @@ If you develop inside a Vagrant virtual machine, use a port that is forwarded
 to your host:
 
 ```
 to your host:
 
 ```
-build> mkdocs serve --dev-addr 0.0.0.0:8088
+build> PYTHONPATH=$SRCDIR mkdocs serve --dev-addr 0.0.0.0:8088
 [server:296] Serving on http://0.0.0.0:8088
 [handlers:62] Start watching changes
 ```
 [server:296] Serving on http://0.0.0.0:8088
 [handlers:62] Start watching changes
 ```