forked from hans/Nominatim
Python 3.6 introduces formatted string literals and flag enums as well as a much faster dict implementation. These changes make the code so much simpler as to warrant dropping Python 3.5 support. Affected distributions are Ubuntu 16.04 and Debian Stretch.
190 lines
6.3 KiB
YAML
190 lines
6.3 KiB
YAML
name: CI Tests
|
|
|
|
on: [ push, pull_request ]
|
|
|
|
jobs:
|
|
tests:
|
|
runs-on: ubuntu-20.04
|
|
|
|
strategy:
|
|
matrix:
|
|
postgresql: [9.5, 13]
|
|
include:
|
|
- postgresql: 9.5
|
|
postgis: 2.5
|
|
- postgresql: 13
|
|
postgis: 3
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
path: Nominatim
|
|
|
|
- name: Setup PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: '7.4'
|
|
tools: phpunit, phpcs, composer
|
|
|
|
- name: Get Date
|
|
id: get-date
|
|
run: |
|
|
echo "::set-output name=date::$(/bin/date -u "+%Y%W")"
|
|
shell: bash
|
|
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
country_grid.sql.gz
|
|
key: nominatim-country-data-${{ steps.get-date.outputs.date }}
|
|
|
|
- uses: ./Nominatim/.github/actions/setup-postgresql
|
|
with:
|
|
postgresql-version: ${{ matrix.postgresql }}
|
|
postgis-version: ${{ matrix.postgis }}
|
|
- uses: ./Nominatim/.github/actions/build-nominatim
|
|
|
|
- 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
|
|
|
|
- name: PHP linting
|
|
run: phpcs --report-width=120 .
|
|
working-directory: Nominatim
|
|
|
|
- name: Python linting
|
|
run: pylint --extension-pkg-whitelist=osmium nominatim
|
|
working-directory: Nominatim
|
|
|
|
- name: PHP unit tests
|
|
run: phpunit --coverage-clover ../../coverage-php.xml ./
|
|
working-directory: Nominatim/test/php
|
|
|
|
- name: Python unit tests
|
|
run: py.test-3 --cov=nominatim --cov-report=xml test/python
|
|
working-directory: Nominatim
|
|
|
|
- name: BDD tests
|
|
run: |
|
|
behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3 -DPHPCOV=./cov
|
|
composer require phpunit/phpcov:7.0.2
|
|
vendor/bin/phpcov merge --clover ../../coverage-bdd.xml ./cov
|
|
working-directory: Nominatim/test/bdd
|
|
|
|
- name: BDD tests (legacy_icu tokenizer)
|
|
run: |
|
|
behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build -DTOKENIZER=legacy_icu --format=progress3
|
|
working-directory: Nominatim/test/bdd
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v1
|
|
with:
|
|
files: ./Nominatim/coverage*.xml
|
|
directory: ./
|
|
name: codecov-umbrella
|
|
fail_ci_if_error: false
|
|
path_to_write_report: ./coverage/codecov_report.txt
|
|
verbose: true
|
|
|
|
import:
|
|
strategy:
|
|
matrix:
|
|
ubuntu: [18, 20]
|
|
include:
|
|
- ubuntu: 18
|
|
postgresql: 9.5
|
|
postgis: 2.5
|
|
- ubuntu: 20
|
|
postgresql: 13
|
|
postgis: 3
|
|
|
|
runs-on: ubuntu-${{ matrix.ubuntu }}.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
path: Nominatim
|
|
|
|
- name: Get Date
|
|
id: get-date
|
|
run: |
|
|
echo "::set-output name=date::$(/bin/date -u "+%Y%W")"
|
|
shell: bash
|
|
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
country_grid.sql.gz
|
|
key: nominatim-country-data-${{ steps.get-date.outputs.date }}
|
|
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
monaco-latest.osm.pbf
|
|
key: nominatim-test-data-${{ steps.get-date.outputs.date }}
|
|
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: 3.6
|
|
if: matrix.ubuntu == 18
|
|
|
|
- uses: ./Nominatim/.github/actions/setup-postgresql
|
|
with:
|
|
postgresql-version: ${{ matrix.postgresql }}
|
|
postgis-version: ${{ matrix.postgis }}
|
|
- uses: ./Nominatim/.github/actions/build-nominatim
|
|
|
|
- name: Install extra dependencies for Ubuntu 18
|
|
run: |
|
|
sudo apt-get install libicu-dev
|
|
pip3 install python-dotenv psycopg2==2.7.7 jinja2==2.8 psutil==5.4.2 pyicu osmium
|
|
shell: bash
|
|
if: matrix.ubuntu == 18
|
|
|
|
- name: Clean installation
|
|
run: rm -rf Nominatim build
|
|
shell: bash
|
|
|
|
- name: Prepare import environment
|
|
run: |
|
|
if [ ! -f monaco-latest.osm.pbf ]; then
|
|
wget --no-verbose https://download.geofabrik.de/europe/monaco-latest.osm.pbf
|
|
fi
|
|
mkdir data-env
|
|
cd data-env
|
|
shell: bash
|
|
|
|
- name: Import
|
|
run: nominatim import --osm-file ../monaco-latest.osm.pbf
|
|
shell: bash
|
|
working-directory: data-env
|
|
|
|
- name: Import special phrases
|
|
run: nominatim special-phrases --import-from-wiki
|
|
working-directory: data-env
|
|
|
|
- name: Check full import
|
|
run: nominatim admin --check-database
|
|
working-directory: data-env
|
|
|
|
- name: Warm up database
|
|
run: nominatim admin --warm
|
|
working-directory: data-env
|
|
|
|
- name: Run update
|
|
run: |
|
|
nominatim replication --init
|
|
nominatim replication --once
|
|
working-directory: data-env
|
|
|
|
- name: Run reverse-only import
|
|
run : nominatim import --osm-file ../monaco-latest.osm.pbf --reverse-only --no-updates
|
|
working-directory: data-env
|
|
env:
|
|
NOMINATIM_DATABASE_DSN: pgsql:dbname=reverse
|
|
|
|
- name: Check reverse import
|
|
run: nominatim admin --check-database
|
|
working-directory: data-env
|