Skip to content

Improve test coverage (#384) #470

Improve test coverage (#384)

Improve test coverage (#384) #470

---
name: Build & Test
on:
pull_request:
push:
jobs:
Linux:
name: >-
${{ matrix.image }}
(${{ matrix.build_system }})
(${{ matrix.compiler }})
runs-on: ubuntu-latest
strategy:
matrix:
image:
- "debian:11"
- "debian:12"
- "debian:testing"
- "fedora:38"
- "fedora:39"
- "fedora:rawhide"
- "opensuse/leap:15"
- "quay.io/centos/centos:stream8"
- "quay.io/centos/centos:stream9"
- "ubuntu:20.04"
- "ubuntu:rolling"
build_system:
- CMake
compiler:
- GNU
on_default_branch:
- ${{ contains(github.ref, 'master') || contains(github.ref, 'develop') || contains(github.ref, 'CI') }}
include:
- image: "ubuntu:22.04"
build_system: Autotools
compiler: GNU
- image: "ubuntu:22.04"
build_system: Autotools
compiler: LLVM
- image: "ubuntu:22.04"
build_system: CMake
compiler: GNU
- image: "ubuntu:22.04"
build_system: CMake
compiler: LLVM
exclude:
- on_default_branch: false
fail-fast: false
container:
env:
CC: ${{ matrix.compiler == 'LLVM' && 'clang' || 'gcc' }}
CFLAGS: --coverage
CXX: ${{ matrix.compiler == 'LLVM' && 'clang++' || 'g++' }}
CXXFLAGS: --coverage
image: ${{ matrix.image }}
steps:
- name: Install `git` (openSUSE)
run: zypper --non-interactive install git
if: startsWith(matrix.image, 'opensuse/')
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/dependencies/install
- name: Build `mod_tile`
uses: ./.github/actions/build
- name: Test `mod_tile`
uses: ./.github/actions/test
- name: Process & Report `mod_tile` coverage results
uses: ./.github/actions/coverage
if: |
matrix.build_system == 'CMake' &&
matrix.compiler != 'LLVM' &&
matrix.image != 'opensuse/leap:15' &&
matrix.image != 'ubuntu:rolling'
- name: Install `mod_tile`
uses: ./.github/actions/install
Linux-Latest-Mapnik:
continue-on-error: true
name: >-
${{ matrix.image }}
(Latest Mapnik)
(${{ matrix.build_system }})
(${{ matrix.compiler }})
runs-on: ubuntu-latest
strategy:
matrix:
image:
- "debian:12"
- "ubuntu:22.04"
build_system:
- CMake
compiler:
- GNU
mapnik_latest:
- true
fail-fast: false
container:
env:
CC: ${{ matrix.compiler == 'LLVM' && 'clang' || 'gcc' }}
CFLAGS: --coverage
CXX: ${{ matrix.compiler == 'LLVM' && 'clang++' || 'g++' }}
CXXFLAGS: --coverage
image: ${{ matrix.image }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/dependencies/install
- name: Build `mod_tile`
uses: ./.github/actions/build
- name: Test `mod_tile`
uses: ./.github/actions/test
- name: Process & Report `mod_tile` coverage results
uses: ./.github/actions/coverage
if: matrix.build_system == 'CMake'
- name: Install `mod_tile`
uses: ./.github/actions/install
macOS:
env:
CFLAGS: --coverage
CXXFLAGS: --coverage
LDFLAGS: -undefined dynamic_lookup
LIBRARY_PATH: /usr/local/lib
TEST_PARALLEL_LEVEL: 1
name: >-
${{ matrix.os }}
(${{ matrix.build_system }})
(${{ matrix.compiler }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- macos-12
build_system:
- CMake
compiler:
- LLVM
on_default_branch:
- ${{ contains(github.ref, 'master') || contains(github.ref, 'develop') || contains(github.ref, 'CI') }}
include:
- os: macos-13
build_system: Autotools
compiler: LLVM
- os: macos-13
build_system: CMake
compiler: LLVM
exclude:
- on_default_branch: false
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/dependencies/install
- name: Set ICU_ROOT
run: |
echo "ICU_ROOT=$(brew --prefix icu4c)" >> ${GITHUB_ENV}
- name: Build `mod_tile`
uses: ./.github/actions/build
- name: Test `mod_tile`
uses: ./.github/actions/test
- name: Process & Report `mod_tile` coverage results
uses: ./.github/actions/coverage
with:
lcov-extra-options: --ignore-errors gcov --ignore-errors inconsistent
if: matrix.build_system == 'CMake'
- name: Install `mod_tile`
uses: ./.github/actions/install
FreeBSD:
continue-on-error: true
env:
BUILD_PARALLEL_LEVEL: 2
CFLAGS: --coverage
CTEST_HOST: localhost
CXXFLAGS: --coverage
LIBRARY_PATH: /usr/local/lib
TEST_PARALLEL_LEVEL: 2
TMPDIR: /tmp
name: >-
${{ matrix.box_generic }}
(${{ matrix.build_system }})
(${{ matrix.compiler }})
runs-on: ubuntu-latest
strategy:
matrix:
box_generic:
- freebsd13
build_system:
- CMake
compiler:
- LLVM
on_default_branch:
- ${{ contains(github.ref, 'master') || contains(github.ref, 'develop') || contains(github.ref, 'CI') }}
include:
- box_generic: freebsd14
build_system: CMake
compiler: LLVM
exclude:
- on_default_branch: false
fail-fast: false
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Provision VM
uses: hummeltech/freebsd-vagrant-action@v1.4
with:
box: generic/${{ matrix.box_generic }}
cpus: ${{ env.BUILD_PARALLEL_LEVEL }}
memory: 4096
# Mapnik is not in the `quarterly` repository (2023.10.12)
- name: Use "latest" repository
run: |
sudo mkdir -p /usr/local/etc/pkg/repos
sed 's#/quarterly#/latest#g' /etc/pkg/FreeBSD.conf | sudo tee /usr/local/etc/pkg/repos/FreeBSD.conf
sudo pkg upgrade
- name: Install dependencies
uses: ./.github/actions/dependencies/install
- name: Build `mod_tile`
uses: ./.github/actions/build
- name: Test `mod_tile`
uses: ./.github/actions/test
- name: Process & Report `mod_tile` coverage results
uses: ./.github/actions/coverage
- name: Install `mod_tile`
uses: ./.github/actions/install