3 on: [ push, pull_request ]
23 runs-on: ubuntu-${{ matrix.ubuntu }}.04
26 - uses: actions/checkout@v2
32 uses: shivammathur/setup-php@v2
34 php-version: ${{ matrix.php }}
36 tools: phpunit, phpcs, composer
38 - uses: actions/setup-python@v2
41 if: matrix.ubuntu == 18
46 echo "::set-output name=date::$(/bin/date -u "+%Y%W")"
49 - uses: actions/cache@v2
53 key: nominatim-country-data-${{ steps.get-date.outputs.date }}
55 - uses: ./Nominatim/.github/actions/setup-postgresql
57 postgresql-version: ${{ matrix.postgresql }}
58 postgis-version: ${{ matrix.postgis }}
60 - uses: ./Nominatim/.github/actions/build-nominatim
62 ubuntu: ${{ matrix.ubuntu }}
64 - name: Install test prerequsites
65 run: sudo apt-get install -y -qq pylint python3-pytest python3-behave python3-pytest-cov php-codecoverage
66 if: matrix.ubuntu == 20
68 - name: Install test prerequsites
70 pip3 install pylint==2.6.0 pytest pytest-cov behave==1.2.6
71 if: matrix.ubuntu == 18
74 run: phpcs --report-width=120 .
75 working-directory: Nominatim
77 - name: Python linting
79 working-directory: Nominatim
81 - name: PHP unit tests
82 run: phpunit --coverage-clover ../../coverage-php.xml ./
83 working-directory: Nominatim/test/php
84 if: matrix.ubuntu == 20
86 - name: Python unit tests
87 run: $PYTEST --cov=nominatim --cov-report=xml test/python
88 working-directory: Nominatim
90 PYTEST: ${{ matrix.pytest }}
95 behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3 -DPHPCOV=./cov
96 composer require phpunit/phpcov:7.0.2
97 vendor/bin/phpcov merge --clover ../../coverage-bdd.xml ./cov
98 working-directory: Nominatim/test/bdd
99 if: matrix.ubuntu == 20
103 behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3
104 working-directory: Nominatim/test/bdd
105 if: matrix.ubuntu == 18
107 - name: BDD tests (icu tokenizer)
109 behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build -DTOKENIZER=icu --format=progress3
110 working-directory: Nominatim/test/bdd
112 - name: Upload coverage to Codecov
113 uses: codecov/codecov-action@v1
115 files: ./Nominatim/coverage*.xml
117 name: codecov-umbrella
118 fail_ci_if_error: false
119 path_to_write_report: ./coverage/codecov_report.txt
121 if: matrix.ubuntu == 20
136 runs-on: ubuntu-${{ matrix.ubuntu }}.04
139 - uses: actions/checkout@v2
147 echo "::set-output name=date::$(/bin/date -u "+%Y%W")"
150 - uses: actions/cache@v2
154 key: nominatim-country-data-${{ steps.get-date.outputs.date }}
156 - uses: actions/cache@v2
159 monaco-latest.osm.pbf
160 key: nominatim-test-data-${{ steps.get-date.outputs.date }}
162 - uses: actions/setup-python@v2
165 if: matrix.ubuntu == 18
167 - uses: ./Nominatim/.github/actions/setup-postgresql
169 postgresql-version: ${{ matrix.postgresql }}
170 postgis-version: ${{ matrix.postgis }}
171 - uses: ./Nominatim/.github/actions/build-nominatim
173 ubuntu: ${{ matrix.ubuntu }}
175 - name: Clean installation
176 run: rm -rf Nominatim build
179 - name: Prepare import environment
181 if [ ! -f monaco-latest.osm.pbf ]; then
182 wget --no-verbose https://download.geofabrik.de/europe/monaco-latest.osm.pbf
189 run: nominatim import --osm-file ../monaco-latest.osm.pbf
191 working-directory: data-env
193 - name: Import special phrases
194 run: nominatim special-phrases --import-from-wiki
195 working-directory: data-env
197 - name: Check full import
198 run: nominatim admin --check-database
199 working-directory: data-env
201 - name: Warm up database
202 run: nominatim admin --warm
203 working-directory: data-env
207 nominatim replication --init
208 nominatim replication --once
209 working-directory: data-env
211 - name: Run reverse-only import
212 run : nominatim import --osm-file ../monaco-latest.osm.pbf --reverse-only --no-updates
213 working-directory: data-env
215 NOMINATIM_DATABASE_DSN: pgsql:dbname=reverse
217 - name: Check reverse import
218 run: nominatim admin --check-database
219 working-directory: data-env