- ubuntu: 18
postgresql: 9.6
postgis: 2.5
- pytest: pytest
php: 7.2
- ubuntu: 20
postgresql: 13
postgis: 3
- pytest: py.test-3
php: 7.4
- ubuntu: 22
postgresql: 15
postgis: 3
- pytest: py.test-3
php: 8.1
runs-on: ubuntu-${{ matrix.ubuntu }}.04
with:
ubuntu: ${{ matrix.ubuntu }}
- - name: Install test prerequsites
- run: sudo apt-get install -y -qq python3-pytest python3-behave
+ - name: Install test prerequsites (behave from apt)
+ run: sudo apt-get install -y -qq python3-behave
if: matrix.ubuntu == 20
- - name: Install test prerequsites
- run: pip3 install pylint pytest behave==1.2.6
+ - name: Install test prerequsites (behave from pip)
+ run: pip3 install behave==1.2.6
if: ${{ (matrix.ubuntu == 18) || (matrix.ubuntu == 22) }}
- - name: Install test prerequsites
- run: sudo apt-get install -y -qq python3-pytest
- if: matrix.ubuntu == 22
+ - name: Install test prerequsites (from apt for Ununtu 2x)
+ run: sudo apt-get install -y -qq python3-pytest uvicorn
+ if: matrix.ubuntu >= 20
+
+ - name: Install test prerequsites (from pip for Ubuntu 18)
+ run: pip3 install pytest uvicorn
+ if: matrix.ubuntu == 18
+
+ - name: Install Python webservers
+ run: pip3 install falcon sanic sanic-testing starlette
- name: Install latest pylint/mypy
- run: pip3 install -U pylint mypy types-PyYAML types-jinja2 types-psycopg2 types-psutil types-requests typing-extensions
+ run: pip3 install -U pylint mypy types-PyYAML types-jinja2 types-psycopg2 types-psutil types-requests typing-extensions asgi_lifespan sqlalchemy2-stubs
- name: PHP linting
run: phpcs --report-width=120 .
working-directory: Nominatim
- name: Python linting
- run: pylint nominatim
+ run: python3 -m pylint nominatim
working-directory: Nominatim
- - name: Python static typechecking
- run: mypy --strict nominatim
- working-directory: Nominatim
-
-
- name: PHP unit tests
run: phpunit ./
working-directory: Nominatim/test/php
if: ${{ (matrix.ubuntu == 20) || (matrix.ubuntu == 22) }}
- name: Python unit tests
- run: $PYTEST test/python
+ run: python3 -m pytest test/python
working-directory: Nominatim
- env:
- PYTEST: ${{ matrix.pytest }}
- name: BDD tests
run: |
- behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3
+ python3 -m behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3
working-directory: Nominatim/test/bdd
+ - name: Install newer Python packages (for typechecking info)
+ run: pip3 install -U osmium uvicorn
+
+ - name: Python static typechecking
+ run: python3 -m mypy --strict nominatim
+ working-directory: Nominatim
legacy-test:
needs: create-archive
- name: BDD tests (legacy tokenizer)
run: |
- behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build -DTOKENIZER=legacy --format=progress3
+ python3 -m behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build -DTOKENIZER=legacy --format=progress3
working-directory: Nominatim/test/bdd
* [Python Dotenv](https://github.com/theskumar/python-dotenv)
* [psutil](https://github.com/giampaolo/psutil)
* [Jinja2](https://palletsprojects.com/p/jinja/)
+ * [SQLAlchemy](https://www.sqlalchemy.org/) (1.4+ with greenlet support)
+ * [asyncpg](https://magicstack.github.io/asyncpg)
* [PyICU](https://pypi.org/project/PyICU/)
* [PyYaml](https://pyyaml.org/) (5.1+)
* [datrie](https://github.com/pytries/datrie)
For running the experimental Python frontend:
- * [SQLAlchemy](https://www.sqlalchemy.org/) (1.4+ with greenlet support)
* one of the following web frameworks:
* [falcon](https://falconframework.org/) (3.0+)
* [sanic](https://sanic.dev)