X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/09b2510219e97203ad17aa2250ea8351dff06b23..1e86dc1d932a672f1c83b5abc2906016b7500de1:/.github/workflows/ci-tests.yml diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 2f920a66..c6792f3a 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -4,16 +4,20 @@ on: [ push, pull_request ] jobs: tests: - runs-on: ubuntu-20.04 - strategy: matrix: - postgresql: [9.5, 13] + ubuntu: [18, 20] include: - - postgresql: 9.5 + - ubuntu: 18 + postgresql: 9.5 postgis: 2.5 - - postgresql: 13 + pytest: pytest + - ubuntu: 20 + postgresql: 13 postgis: 3 + pytest: py.test-3 + + runs-on: ubuntu-${{ matrix.ubuntu }}.04 steps: - uses: actions/checkout@v2 @@ -25,7 +29,12 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: '7.4' - tools: phpunit, phpcs + tools: phpunit, phpcs, composer + + - uses: actions/setup-python@v2 + with: + python-version: 3.6 + if: matrix.ubuntu == 18 - name: Get Date id: get-date @@ -43,33 +52,75 @@ jobs: with: postgresql-version: ${{ matrix.postgresql }} postgis-version: ${{ matrix.postgis }} + - uses: ./Nominatim/.github/actions/build-nominatim + with: + ubuntu: ${{ matrix.ubuntu }} + + - 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 + if: matrix.ubuntu == 20 - name: Install test prerequsites - run: sudo apt-get install -y -qq php-codesniffer pylint python3-pytest python3-behave + run: | + sudo apt-get install -y -qq php-codesniffer php-codecoverage php-xdebug + pip3 install pylint==2.6.0 pytest pytest-cov behave==1.2.6 + if: matrix.ubuntu == 18 - name: PHP linting run: phpcs --report-width=120 . working-directory: Nominatim - name: Python linting - run: pylint --extension-pkg-whitelist=osmium nominatim + run: pylint nominatim working-directory: Nominatim - name: PHP unit tests - run: phpunit ./ + run: phpunit --coverage-clover ../../coverage-php.xml ./ working-directory: Nominatim/test/php - name: Python unit tests - run: py.test-3 test/python + run: $PYTEST --cov=nominatim --cov-report=xml test/python working-directory: Nominatim + env: + PYTEST: ${{ matrix.pytest }} - name: BDD tests - run: behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3 + run: | + mkdir cov + 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: - runs-on: ubuntu-20.04 + 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 @@ -95,11 +146,18 @@ jobs: 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: 13 - postgis-version: 3 + postgresql-version: ${{ matrix.postgresql }} + postgis-version: ${{ matrix.postgis }} - uses: ./Nominatim/.github/actions/build-nominatim + with: + ubuntu: ${{ matrix.ubuntu }} - name: Clean installation run: rm -rf Nominatim build @@ -123,10 +181,14 @@ jobs: run: nominatim special-phrases --import-from-wiki working-directory: data-env - - name: Check import + - 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 @@ -134,7 +196,11 @@ jobs: working-directory: data-env - name: Run reverse-only import - run : nominatim import --osm-file ../monaco-latest.osm.pbf --reverse-only + 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