mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-12-27 23:15:12 +03:00
Merge pull request #2384 from lonvia/actions-add-icu-tokenizer
CI: run tests on Ubuntu 18
This commit is contained in:
commit
a5970d7548
4
.github/actions/build-nominatim/action.yml
vendored
4
.github/actions/build-nominatim/action.yml
vendored
@ -14,9 +14,9 @@ runs:
|
|||||||
run: |
|
run: |
|
||||||
sudo apt-get install -y -qq libboost-system-dev libboost-filesystem-dev libexpat1-dev zlib1g-dev libbz2-dev libpq-dev libproj-dev libicu-dev
|
sudo apt-get install -y -qq libboost-system-dev libboost-filesystem-dev libexpat1-dev zlib1g-dev libbz2-dev libpq-dev libproj-dev libicu-dev
|
||||||
if [ "x$UBUNTUVER" == "x18" ]; then
|
if [ "x$UBUNTUVER" == "x18" ]; then
|
||||||
pip3 install python-dotenv psycopg2==2.7.7 jinja2==2.8 psutil==5.4.2 pyicu osmium
|
pip3 install python-dotenv psycopg2==2.7.7 jinja2==2.8 psutil==5.4.2 pyicu osmium PyYAML==5.1 datrie
|
||||||
else
|
else
|
||||||
sudo apt-get install -y -qq python3-icu python3-datrie python3-pyosmium python3-jinja2 python3-psutil python3-psycopg2 python3-dotenv
|
sudo apt-get install -y -qq python3-icu python3-datrie python3-pyosmium python3-jinja2 python3-psutil python3-psycopg2 python3-dotenv python3-yaml
|
||||||
fi
|
fi
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
|
51
.github/workflows/ci-tests.yml
vendored
51
.github/workflows/ci-tests.yml
vendored
@ -4,16 +4,22 @@ on: [ push, pull_request ]
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
tests:
|
tests:
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
postgresql: [9.5, 13]
|
ubuntu: [18, 20]
|
||||||
include:
|
include:
|
||||||
- postgresql: 9.5
|
- ubuntu: 18
|
||||||
|
postgresql: 9.5
|
||||||
postgis: 2.5
|
postgis: 2.5
|
||||||
- postgresql: 13
|
pytest: pytest
|
||||||
|
php: 7.2
|
||||||
|
- ubuntu: 20
|
||||||
|
postgresql: 13
|
||||||
postgis: 3
|
postgis: 3
|
||||||
|
pytest: py.test-3
|
||||||
|
php: 7.4
|
||||||
|
|
||||||
|
runs-on: ubuntu-${{ matrix.ubuntu }}.04
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
@ -24,9 +30,15 @@ jobs:
|
|||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '7.4'
|
php-version: ${{ matrix.php }}
|
||||||
|
coverage: xdebug
|
||||||
tools: phpunit, phpcs, composer
|
tools: phpunit, phpcs, composer
|
||||||
|
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.6
|
||||||
|
if: matrix.ubuntu == 18
|
||||||
|
|
||||||
- name: Get Date
|
- name: Get Date
|
||||||
id: get-date
|
id: get-date
|
||||||
run: |
|
run: |
|
||||||
@ -43,33 +55,53 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
postgresql-version: ${{ matrix.postgresql }}
|
postgresql-version: ${{ matrix.postgresql }}
|
||||||
postgis-version: ${{ matrix.postgis }}
|
postgis-version: ${{ matrix.postgis }}
|
||||||
|
|
||||||
- uses: ./Nominatim/.github/actions/build-nominatim
|
- uses: ./Nominatim/.github/actions/build-nominatim
|
||||||
|
with:
|
||||||
|
ubuntu: ${{ matrix.ubuntu }}
|
||||||
|
|
||||||
- name: Install test prerequsites
|
- name: Install test prerequsites
|
||||||
run: sudo apt-get install -y -qq php-codesniffer pylint python3-pytest python3-behave python3-pytest-cov php-codecoverage php-xdebug
|
run: sudo apt-get install -y -qq pylint python3-pytest python3-behave python3-pytest-cov php-codecoverage
|
||||||
|
if: matrix.ubuntu == 20
|
||||||
|
|
||||||
|
- name: Install test prerequsites
|
||||||
|
run: |
|
||||||
|
pip3 install pylint==2.6.0 pytest pytest-cov behave==1.2.6
|
||||||
|
if: matrix.ubuntu == 18
|
||||||
|
|
||||||
- name: PHP linting
|
- name: PHP linting
|
||||||
run: phpcs --report-width=120 .
|
run: phpcs --report-width=120 .
|
||||||
working-directory: Nominatim
|
working-directory: Nominatim
|
||||||
|
|
||||||
- name: Python linting
|
- name: Python linting
|
||||||
run: pylint --extension-pkg-whitelist=osmium nominatim
|
run: pylint nominatim
|
||||||
working-directory: Nominatim
|
working-directory: Nominatim
|
||||||
|
|
||||||
- name: PHP unit tests
|
- name: PHP unit tests
|
||||||
run: phpunit --coverage-clover ../../coverage-php.xml ./
|
run: phpunit --coverage-clover ../../coverage-php.xml ./
|
||||||
working-directory: Nominatim/test/php
|
working-directory: Nominatim/test/php
|
||||||
|
if: matrix.ubuntu == 20
|
||||||
|
|
||||||
- name: Python unit tests
|
- name: Python unit tests
|
||||||
run: py.test-3 --cov=nominatim --cov-report=xml test/python
|
run: $PYTEST --cov=nominatim --cov-report=xml test/python
|
||||||
working-directory: Nominatim
|
working-directory: Nominatim
|
||||||
|
env:
|
||||||
|
PYTEST: ${{ matrix.pytest }}
|
||||||
|
|
||||||
- name: BDD tests
|
- name: BDD tests
|
||||||
run: |
|
run: |
|
||||||
|
mkdir cov
|
||||||
behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3 -DPHPCOV=./cov
|
behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3 -DPHPCOV=./cov
|
||||||
composer require phpunit/phpcov:7.0.2
|
composer require phpunit/phpcov:7.0.2
|
||||||
vendor/bin/phpcov merge --clover ../../coverage-bdd.xml ./cov
|
vendor/bin/phpcov merge --clover ../../coverage-bdd.xml ./cov
|
||||||
working-directory: Nominatim/test/bdd
|
working-directory: Nominatim/test/bdd
|
||||||
|
if: matrix.ubuntu == 20
|
||||||
|
|
||||||
|
- name: BDD tests
|
||||||
|
run: |
|
||||||
|
behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3
|
||||||
|
working-directory: Nominatim/test/bdd
|
||||||
|
if: matrix.ubuntu == 18
|
||||||
|
|
||||||
- name: BDD tests (legacy_icu tokenizer)
|
- name: BDD tests (legacy_icu tokenizer)
|
||||||
run: |
|
run: |
|
||||||
@ -85,6 +117,7 @@ jobs:
|
|||||||
fail_ci_if_error: false
|
fail_ci_if_error: false
|
||||||
path_to_write_report: ./coverage/codecov_report.txt
|
path_to_write_report: ./coverage/codecov_report.txt
|
||||||
verbose: true
|
verbose: true
|
||||||
|
if: matrix.ubuntu == 20
|
||||||
|
|
||||||
import:
|
import:
|
||||||
strategy:
|
strategy:
|
||||||
|
@ -45,6 +45,7 @@ For running Nominatim:
|
|||||||
* [psutil](https://github.com/giampaolo/psutil)
|
* [psutil](https://github.com/giampaolo/psutil)
|
||||||
* [Jinja2](https://palletsprojects.com/p/jinja/)
|
* [Jinja2](https://palletsprojects.com/p/jinja/)
|
||||||
* [PyICU](https://pypi.org/project/PyICU/)
|
* [PyICU](https://pypi.org/project/PyICU/)
|
||||||
|
* [PyYaml](https://pyyaml.org/) (5.1+)
|
||||||
* [datrie](https://github.com/pytries/datrie)
|
* [datrie](https://github.com/pytries/datrie)
|
||||||
* [PHP](https://php.net) (7.0 or later)
|
* [PHP](https://php.net) (7.0 or later)
|
||||||
* PHP-pgsql
|
* PHP-pgsql
|
||||||
|
@ -29,7 +29,7 @@ The Nominatim test suite consists of behavioural tests (using behave) and
|
|||||||
unit tests (using PHPUnit for PHP code and pytest for Python code).
|
unit tests (using PHPUnit for PHP code and pytest for Python code).
|
||||||
It has the following additional requirements:
|
It has the following additional requirements:
|
||||||
|
|
||||||
* [behave test framework](https://behave.readthedocs.io) >= 1.2.5
|
* [behave test framework](https://behave.readthedocs.io) >= 1.2.6
|
||||||
* [phpunit](https://phpunit.de) >= 7.3
|
* [phpunit](https://phpunit.de) >= 7.3
|
||||||
* [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)
|
* [Pylint](https://pylint.org/) (2.6.0 is used for the CI)
|
||||||
|
@ -68,9 +68,9 @@ class Configuration:
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
return int(self.__getattr__(name))
|
return int(self.__getattr__(name))
|
||||||
except ValueError:
|
except ValueError as exp:
|
||||||
LOG.fatal("Invalid setting NOMINATIM_%s. Needs to be a number.", name)
|
LOG.fatal("Invalid setting NOMINATIM_%s. Needs to be a number.", name)
|
||||||
raise UsageError("Configuration error.")
|
raise UsageError("Configuration error.") from exp
|
||||||
|
|
||||||
|
|
||||||
def get_libpq_dsn(self):
|
def get_libpq_dsn(self):
|
||||||
|
@ -7,12 +7,11 @@ import json
|
|||||||
_ICU_VARIANT_PORPERTY_FIELDS = ['lang']
|
_ICU_VARIANT_PORPERTY_FIELDS = ['lang']
|
||||||
|
|
||||||
|
|
||||||
class ICUVariantProperties(namedtuple('_ICUVariantProperties', _ICU_VARIANT_PORPERTY_FIELDS,
|
class ICUVariantProperties(namedtuple('_ICUVariantProperties', _ICU_VARIANT_PORPERTY_FIELDS)):
|
||||||
defaults=(None, )*len(_ICU_VARIANT_PORPERTY_FIELDS))):
|
|
||||||
""" Data container for saving properties that describe when a variant
|
""" Data container for saving properties that describe when a variant
|
||||||
should be applied.
|
should be applied.
|
||||||
|
|
||||||
Porperty instances are hashable.
|
Property instances are hashable.
|
||||||
"""
|
"""
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_rules(cls, _):
|
def from_rules(cls, _):
|
||||||
@ -52,7 +51,7 @@ def unpickle_variant_set(variant_string):
|
|||||||
"""
|
"""
|
||||||
data = json.loads(variant_string)
|
data = json.loads(variant_string)
|
||||||
|
|
||||||
properties = {int(k): ICUVariantProperties(**v) for k, v in data['properties'].items()}
|
properties = {int(k): ICUVariantProperties.from_rules(v)
|
||||||
print(properties)
|
for k, v in data['properties'].items()}
|
||||||
|
|
||||||
return set((ICUVariant(src, repl, properties[pid]) for src, repl, pid in data['variants']))
|
return set((ICUVariant(src, repl, properties[pid]) for src, repl, pid in data['variants']))
|
||||||
|
@ -70,7 +70,9 @@ def run_api_script(endpoint, project_dir, extra_env=None, phpcgi_bin=None,
|
|||||||
else:
|
else:
|
||||||
cmd = [str(phpcgi_bin)]
|
cmd = [str(phpcgi_bin)]
|
||||||
|
|
||||||
proc = subprocess.run(cmd, cwd=str(project_dir), env=env, capture_output=True,
|
proc = subprocess.run(cmd, cwd=str(project_dir), env=env,
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
|
stderr=subprocess.PIPE,
|
||||||
check=False)
|
check=False)
|
||||||
|
|
||||||
if proc.returncode != 0 or proc.stderr:
|
if proc.returncode != 0 or proc.stderr:
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
python3-pip python3-setuptools python3-devel \
|
python3-pip python3-setuptools python3-devel \
|
||||||
expat-devel zlib-devel libicu-dev
|
expat-devel zlib-devel libicu-dev
|
||||||
|
|
||||||
pip3 install --user psycopg2 python-dotenv psutil Jinja2 PyICU datrie
|
pip3 install --user psycopg2 python-dotenv psutil Jinja2 PyICU datrie pyyaml
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
python3-pip python3-setuptools python3-devel \
|
python3-pip python3-setuptools python3-devel \
|
||||||
expat-devel zlib-devel libicu-dev
|
expat-devel zlib-devel libicu-dev
|
||||||
|
|
||||||
pip3 install --user psycopg2 python-dotenv psutil Jinja2 PyICU datrie
|
pip3 install --user psycopg2 python-dotenv psutil Jinja2 PyICU datrie pyyaml
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -32,10 +32,10 @@ export DEBIAN_FRONTEND=noninteractive #DOCS:
|
|||||||
php php-pgsql php-intl libicu-dev python3-pip \
|
php php-pgsql php-intl libicu-dev python3-pip \
|
||||||
python3-psycopg2 python3-psutil python3-jinja2 python3-icu git
|
python3-psycopg2 python3-psutil python3-jinja2 python3-icu git
|
||||||
|
|
||||||
# The python-dotenv adn datrie package that comes with Ubuntu 18.04 is too old, so
|
# Some of the Python packages that come with Ubuntu 18.04 are too old, so
|
||||||
# install the latest version from pip:
|
# install the latest version from pip:
|
||||||
|
|
||||||
pip3 install python-dotenv datrie
|
pip3 install python-dotenv datrie pyyaml
|
||||||
|
|
||||||
#
|
#
|
||||||
# System Configuration
|
# System Configuration
|
||||||
|
Loading…
Reference in New Issue
Block a user