93 lines
3.3 KiB
YAML
93 lines
3.3 KiB
YAML
name: "Run tests with coverage"
|
|
description: "Runs all mapnik tests with coverage"
|
|
inputs:
|
|
cmake-preset:
|
|
description: "the used cmake preset"
|
|
required: true
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Set proj enviroment
|
|
shell: "pwsh"
|
|
run: |
|
|
$out = cmake --preset ${{ inputs.cmake-preset }} -N -L
|
|
$proj_lib = $out -match "PROJ_LIB=*"
|
|
echo ("PROJ_LIB=" + $proj_lib.Substring(11)) >> $env:GITHUB_ENV
|
|
|
|
- name: Test
|
|
shell: "bash"
|
|
env:
|
|
UPDATE: "1"
|
|
run: |
|
|
if [ "$RUNNER_OS" == "Windows" ]; then
|
|
OpenCppCoverage --modules *libmapnik* --modules mapnik*.exe --modules *.input --sources ${{ github.workspace }} --export_type binary --cover_children -- ctest --preset ${{ inputs.cmake-preset }}
|
|
else
|
|
ctest --preset ${{ inputs.cmake-preset }}
|
|
fi
|
|
|
|
- name: Test visuals (windows)
|
|
continue-on-error: true
|
|
working-directory: build/out
|
|
shell: "pwsh"
|
|
if: runner.os == 'Windows'
|
|
run: OpenCppCoverage --modules *libmapnik* --modules mapnik*.exe --modules *.input --sources ${{ github.workspace }} --export_type binary --input_coverage=${{ github.workspace }}/ctest.cov --cover_children -- .\mapnik-test-visual.exe -j (Get-CimInstance -ClassName Win32_ComputerSystem).NumberOfLogicalProcessors --output-dir ./visual-test-result
|
|
|
|
- name: Test visuals (linux & mac)
|
|
continue-on-error: true
|
|
working-directory: build/out
|
|
shell: "bash"
|
|
if: runner.os != 'Windows'
|
|
run: |
|
|
if [ "$RUNNER_OS" == "Linux" ]; then
|
|
./mapnik-test-visual -j $(nproc) --output-dir ./visual-test-result
|
|
else
|
|
./mapnik-test-visual -j $(sysctl -n hw.logicalcpu) --output-dir ./visual-test-result
|
|
fi
|
|
|
|
- name: Pack visual test results
|
|
working-directory: build/out
|
|
shell: "pwsh"
|
|
run: tar cfvz visual-test-results.tar.gz ./visual-test-result
|
|
|
|
- name: Generate run guid
|
|
id: run-guid
|
|
shell: "pwsh"
|
|
run: |
|
|
$guid = New-Guid
|
|
echo ("GUID=" + $guid.toString()) >> $env:GITHUB_OUTPUT
|
|
|
|
- name: Upload visual test results
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ inputs.cmake-preset }}-visual-tests-${{ steps.run-guid.outputs.GUID }}
|
|
path: build/out/visual-test-results.tar.gz
|
|
|
|
- name: Run Benchmarks
|
|
working-directory: build/out
|
|
if: runner.os != 'Windows'
|
|
shell: "pwsh"
|
|
run: ./run_benchmarks
|
|
|
|
- name: Collect coverage (linux & macos)
|
|
working-directory: build
|
|
if: runner.os != 'Windows'
|
|
shell: "bash"
|
|
run: |
|
|
if [ "$RUNNER_OS" == "macOS" ]; then
|
|
LCOV_EXTRA_OPTIONS="--ignore-errors count,gcov,inconsistent,range,unused --keep-going"
|
|
fi
|
|
lcov ${LCOV_EXTRA_OPTIONS:-} --directory . --capture --output-file coverage.info
|
|
lcov ${LCOV_EXTRA_OPTIONS:-} --remove coverage.info '/usr/*' '*/vcpkg_installed/*' '/.cache/*' '*/test/*' --output-file coverage.info
|
|
lcov ${LCOV_EXTRA_OPTIONS:-} --list coverage.info
|
|
|
|
- name: Upload coverage to Codecov (linux & macos)
|
|
if: runner.os != 'Windows'
|
|
uses: codecov/codecov-action@v4
|
|
with:
|
|
files: build/coverage.info
|
|
|
|
- name: Upload coverage to Codecov (windows)
|
|
if: runner.os == 'Windows'
|
|
uses: codecov/codecov-action@v4
|
|
with:
|
|
files: build/out/mapnik-test-visual.cov
|