name: CI Tests on: [ push, pull_request ] jobs: tests: strategy: matrix: ubuntu: [18, 20] include: - ubuntu: 18 postgresql: 9.5 postgis: 2.5 pytest: pytest php: 7.2 - ubuntu: 20 postgresql: 13 postgis: 3 pytest: py.test-3 php: 7.4 runs-on: ubuntu-${{ matrix.ubuntu }}.04 steps: - uses: actions/checkout@v2 with: submodules: true path: Nominatim - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} coverage: xdebug tools: phpunit, phpcs, composer - uses: actions/setup-python@v2 with: python-version: 3.6 if: matrix.ubuntu == 18 - 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 with: ubuntu: ${{ matrix.ubuntu }} - name: Install test prerequsites 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 run: phpcs --report-width=120 . working-directory: Nominatim - name: Python linting run: pylint nominatim working-directory: Nominatim - name: PHP unit tests run: phpunit --coverage-clover ../../coverage-php.xml ./ working-directory: Nominatim/test/php if: matrix.ubuntu == 20 - name: Python unit tests run: $PYTEST --cov=nominatim --cov-report=xml test/python working-directory: Nominatim env: PYTEST: ${{ matrix.pytest }} - name: BDD tests 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 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) 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 if: matrix.ubuntu == 20 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 with: ubuntu: ${{ matrix.ubuntu }} - 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