Skip to content

ci: add sanitizer test matrix #57

ci: add sanitizer test matrix

ci: add sanitizer test matrix #57

Workflow file for this run

name: Tests
on:
workflow_dispatch:
push:
branches:
- main
- ci/**
pull_request:
branches:
- main
jobs:
test-on-msvc:
strategy:
fail-fast: false
matrix:
toolset: [142, 143]
cppstd: ['17', '20', '23']
build-type: [Debug, Release]
exclude:
- toolset: 142
cppstd: '23'
include:
- toolset: 142
conan-compiler-version: 192
- toolset: 143
conan-compiler-version: 194
- build-type: Debug
cmake-preset: conan-debug
- build-type: Release
cmake-preset: conan-release
name: MSVC ${{ matrix.toolset }} - C++${{ matrix.cppstd }} - ${{ matrix.build-type }}
runs-on: windows-2022
steps:
- uses: actions/checkout@v7
- name: Install Conan
uses: turtlebrowser/get-conan@main
- name: Setup Conan
run: |
conan --version
conan profile detect
- name: Install CMake
uses: lukka/get-cmake@latest
- name: Install dependencies
run: >
conan install .
-c tools.microsoft.msbuild:vs_version=17
-s compiler.version=${{ matrix.conan-compiler-version }}
-s compiler.cppstd=${{ matrix.cppstd }}
-s build_type=${{ matrix.build-type }}
-b missing
- name: CMake Configure
run: |
cmake --list-presets
cmake --preset conan-default -DZEUS_EXPECTED_TEST_ASAN_AUTO=OFF -DZEUS_EXPECTED_TEST_UBSAN_AUTO=OFF
- name: Build
run: |
cmake --build --list-presets
cmake --build --preset ${{ matrix.cmake-preset }}
- name: Test
run: |
ctest --list-presets
ctest --preset ${{ matrix.cmake-preset }}
test-on-gcc:
strategy:
fail-fast: false
matrix:
gcc:
- version: 11
os: ubuntu-22.04
- version: 13
os: ubuntu-24.04
- version: 15
os: ubuntu-24.04
cppstd: ['17', '20', '23']
build-type: [Debug, Release]
include:
- build-type: Debug
cmake-preset: conan-debug
- build-type: Release
cmake-preset: conan-release
name: GCC ${{ matrix.gcc.version }} - C++${{ matrix.cppstd }} - ${{ matrix.build-type }}
runs-on: ${{ matrix.gcc.os }}
steps:
- uses: actions/checkout@v7
- name: Setup GCC
if: matrix.gcc.version == 15
uses: egor-tensin/setup-gcc@v2
with:
version: ${{ matrix.gcc.version }}
- name: Check GCC Version
shell: bash
run: |
gcc -dumpversion
(( $(gcc -dumpversion | cut -d. -f1) == ${{ matrix.gcc.version }} ))
- name: Install Conan
uses: turtlebrowser/get-conan@main
- name: Setup Conan
run: |
conan --version
conan profile detect
- name: Install CMake
uses: lukka/get-cmake@latest
- name: Install dependencies
run: >
conan install .
-s compiler.cppstd=${{ matrix.cppstd }}
-s build_type=${{ matrix.build-type }}
-b missing
- name: CMake Configure
run: |
cmake --list-presets
cmake --preset ${{ matrix.cmake-preset }} -DZEUS_EXPECTED_TEST_ASAN_AUTO=OFF -DZEUS_EXPECTED_TEST_UBSAN_AUTO=OFF
- name: Build
run: |
cmake --build --list-presets
cmake --build --preset ${{ matrix.cmake-preset }}
- name: Test
run: |
ctest --list-presets
ctest --preset ${{ matrix.cmake-preset }}
test-on-gcc-8:
strategy:
fail-fast: false
matrix:
cppstd: ['17']
build-type: [Debug, Release]
include:
- build-type: Debug
cmake-preset: conan-debug
- build-type: Release
cmake-preset: conan-release
name: GCC 8 - C++${{ matrix.cppstd }} - ${{ matrix.build-type }}
runs-on: ubuntu-22.04
container: ubuntu:20.04
defaults:
run:
shell: bash
env:
CC: gcc-8
CXX: g++-8
steps:
- name: Prepare container
run: |
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
ca-certificates \
gcc-8 \
g++-8 \
git \
make \
python3-pip \
unzip
- uses: actions/checkout@v7
- name: Check GCC Version
run: |
compiler_version="$("$CC" -dumpfullversion -dumpversion)"
echo "$compiler_version"
[[ "${compiler_version%%.*}" == 8 ]]
- name: Install Conan
uses: turtlebrowser/get-conan@main
- name: Setup Conan
run: |
conan --version
conan profile detect
- name: Install CMake
uses: lukka/get-cmake@latest
- name: Install dependencies
run: >
conan install .
-s compiler.cppstd=${{ matrix.cppstd }}
-s build_type=${{ matrix.build-type }}
-b missing
- name: CMake Configure
run: |
cmake --list-presets
cmake --preset ${{ matrix.cmake-preset }} -DZEUS_EXPECTED_TEST_ASAN_AUTO=OFF -DZEUS_EXPECTED_TEST_UBSAN_AUTO=OFF
- name: Build
run: |
cmake --build --list-presets
cmake --build --preset ${{ matrix.cmake-preset }}
- name: Test
run: |
ctest --list-presets
ctest --preset ${{ matrix.cmake-preset }}
test-on-clang-libstdcxx:
strategy:
fail-fast: false
matrix:
clang-version: [11, 14, 18, 22]
cppstd: ['17', '20', '23']
build-type: [Debug, Release]
exclude:
- clang-version: 11
cppstd: '23'
include:
- build-type: Debug
cmake-preset: conan-debug
- build-type: Release
cmake-preset: conan-release
name: Clang ${{ matrix.clang-version }} + libstdc++ - C++${{ matrix.cppstd }} - ${{ matrix.build-type }}
runs-on: ubuntu-22.04
env:
CC: clang-${{ matrix.clang-version }}
CXX: clang++-${{ matrix.clang-version }}
steps:
- uses: actions/checkout@v7
- name: Install Clang
uses: egor-tensin/setup-clang@v2
with:
version: ${{ matrix.clang-version }}
cc: 0
- name: Check Clang Version
shell: bash
run: |
"$CC" --version
compiler_major="$("$CC" -dM -E -x c /dev/null | awk '$2 == "__clang_major__" {print $3}')"
[[ "$compiler_major" == "${{ matrix.clang-version }}" ]]
- name: Install Conan
uses: turtlebrowser/get-conan@main
- name: Setup Conan
run: |
conan --version
conan profile detect --force
conan profile show -pr default --format=json |
jq -e --arg version "${{ matrix.clang-version }}" '
.host.settings.compiler == "clang"
and .host.settings["compiler.version"] == $version
and .host.settings["compiler.libcxx"] == "libstdc++11"
'
- name: Install CMake
uses: lukka/get-cmake@latest
- name: Install dependencies
run: >
conan install .
-s compiler.cppstd=${{ matrix.cppstd }}
-s build_type=${{ matrix.build-type }}
-b missing
- name: CMake Configure
run: |
cmake --list-presets
cmake --preset ${{ matrix.cmake-preset }} -DZEUS_EXPECTED_TEST_ASAN_AUTO=OFF -DZEUS_EXPECTED_TEST_UBSAN_AUTO=OFF
- name: Build
run: |
cmake --build --list-presets
cmake --build --preset ${{ matrix.cmake-preset }}
- name: Test
run: |
ctest --list-presets
ctest --preset ${{ matrix.cmake-preset }}
test-on-old-gcc:
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04]
gcc-version: [9]
cppstd: ['17', '20']
build-type: [Debug, Release]
include:
- build-type: Debug
cmake-preset: conan-debug
- build-type: Release
cmake-preset: conan-release
name: GCC ${{ matrix.gcc-version }} - C++${{ matrix.cppstd }} - ${{ matrix.build-type }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7
- name: Setup GCC
uses: egor-tensin/setup-gcc@v1
with:
version: ${{ matrix.gcc-version }}
- name: Check GCC Version
shell: bash
run: |
gcc -dumpversion
(( $(gcc -dumpversion | cut -d. -f1) == ${{ matrix.gcc-version }} ))
- name: Install Conan
uses: turtlebrowser/get-conan@main
- name: Setup Conan
run: |
conan --version
conan profile detect
- name: Install CMake
uses: lukka/get-cmake@latest
- name: Install dependencies
run: >
conan install .
-s compiler.cppstd=${{ matrix.cppstd }}
-s build_type=${{ matrix.build-type }}
-b missing
- name: CMake Configure
run: |
cmake --list-presets
cmake --preset ${{ matrix.cmake-preset }} -DZEUS_EXPECTED_TEST_ASAN_AUTO=OFF -DZEUS_EXPECTED_TEST_UBSAN_AUTO=OFF
- name: Build
run: |
cmake --build --list-presets
cmake --build --preset ${{ matrix.cmake-preset }}
- name: Test
run: |
ctest --list-presets
ctest --preset ${{ matrix.cmake-preset }}