mirror of https://github.com/onqtam/doctest
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
376 lines
11 KiB
YAML
376 lines
11 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- 'doc/**'
|
|
- 'scripts/**'
|
|
- 'LICENSE.txt'
|
|
- 'README.md'
|
|
pull_request:
|
|
paths-ignore:
|
|
- 'doc/**'
|
|
- 'scripts/**'
|
|
- 'LICENSE.txt'
|
|
- 'README.md'
|
|
|
|
env:
|
|
CTEST_OUTPUT_ON_FAILURE: ON
|
|
CTEST_PARALLEL_LEVEL: 2
|
|
|
|
jobs:
|
|
coverage:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Install
|
|
run: sudo apt-get install -y ninja-build lcov
|
|
|
|
- name: Generate
|
|
run: cmake -B build -S . -G Ninja -D CMAKE_CXX_FLAGS="-fprofile-arcs -ftest-coverage"
|
|
|
|
- name: Build
|
|
run: cmake --build build
|
|
|
|
- name: Test
|
|
run: ctest --test-dir build --no-tests=error
|
|
|
|
- name: LCOV
|
|
run: |
|
|
mkdir coverage
|
|
lcov -c -d build/ -o coverage/lcov.info --include "*doctest/parts*"
|
|
|
|
- name: Codecov
|
|
uses: codecov/codecov-action@v2
|
|
with:
|
|
files: ./coverage/lcov.info
|
|
fail_ci_if_error: true
|
|
|
|
clang-tidy:
|
|
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
|
|
runs-on: ubuntu-22.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Install
|
|
run: sudo apt-get install -y ninja-build clang-tidy-14
|
|
|
|
- name: Generate
|
|
run: cmake -B build -S . -G Ninja -D CMAKE_CXX_COMPILER=clang++ -D CMAKE_EXPORT_COMPILE_COMMANDS=ON -D CMAKE_CXX_CLANG_TIDY="clang-tidy-14;-warnings-as-errors=*"
|
|
|
|
- name: Build
|
|
run: cmake --build build
|
|
|
|
sanitizers:
|
|
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
|
|
runs-on: ubuntu-22.04
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
sanitizers: ["address", "thread", "undefined", "integer", "implicit-conversion", "nullability", "safe-stack"]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Install
|
|
run: sudo apt-get install -y ninja-build
|
|
|
|
- name: Generate
|
|
run: cmake -B build -S . -G Ninja -D CMAKE_CXX_COMPILER=clang++ -D CMAKE_EXPORT_COMPILE_COMMANDS=ON -D CMAKE_CXX_FLAGS="-fsanitize=${{ matrix.sanitizers }}"
|
|
|
|
- name: Build
|
|
run: cmake --build build
|
|
|
|
- name: Test
|
|
run: ctest --test-dir build --no-tests=error
|
|
|
|
ci:
|
|
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
env:
|
|
CMAKE_GENERATOR: Ninja
|
|
ASAN_OPTIONS: strict_string_checks=true:detect_odr_violation=2:detect_stack_use_after_return=true:check_initialization_order=true:strict_init_order=true
|
|
TSAN_OPTIONS: force_seq_cst_atomics=1
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: ["windows-2019", "windows-2022"]
|
|
compiler: ["cl", "clang", "clang-cl"]
|
|
|
|
include:
|
|
- os: ubuntu-18.04
|
|
compiler: gcc
|
|
version: "4.8"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: gcc
|
|
version: "4.9"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: gcc
|
|
version: "5"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: gcc
|
|
version: "6"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: gcc
|
|
version: "7"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: gcc
|
|
version: "8"
|
|
|
|
- os: ubuntu-latest
|
|
compiler: gcc
|
|
version: "9"
|
|
|
|
- os: ubuntu-latest
|
|
compiler: gcc
|
|
version: "10"
|
|
|
|
- os: ubuntu-latest
|
|
compiler: gcc
|
|
version: "11"
|
|
|
|
- os: ubuntu-latest
|
|
compiler: gcc
|
|
version: "12"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: clang
|
|
version: "3.5"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: clang
|
|
version: "3.6"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: clang
|
|
version: "3.7"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: clang
|
|
version: "3.8"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: clang
|
|
version: "3.9"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: clang
|
|
version: "4.0"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: clang
|
|
version: "5.0"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: clang
|
|
version: "6.0"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: clang
|
|
version: "7"
|
|
|
|
- os: ubuntu-18.04
|
|
compiler: clang
|
|
version: "8"
|
|
|
|
- os: ubuntu-20.04
|
|
compiler: clang
|
|
version: "9"
|
|
|
|
- os: ubuntu-20.04
|
|
compiler: clang
|
|
version: "10"
|
|
|
|
- os: ubuntu-20.04
|
|
compiler: clang
|
|
version: "11"
|
|
|
|
- os: ubuntu-20.04
|
|
compiler: clang
|
|
version: "12"
|
|
|
|
- os: ubuntu-latest
|
|
compiler: clang
|
|
version: "13"
|
|
|
|
- os: ubuntu-latest
|
|
compiler: clang
|
|
version: "14"
|
|
|
|
- os: ubuntu-latest
|
|
compiler: clang
|
|
version: "15"
|
|
|
|
- os: macOS-10.15
|
|
compiler: xcode
|
|
version: "10.3"
|
|
|
|
- os: macOS-latest
|
|
compiler: xcode
|
|
version: "13.2.1"
|
|
|
|
- os: macos-12
|
|
compiler: xcode
|
|
version: "14.0.1"
|
|
|
|
- os: macOS-latest
|
|
compiler: gcc
|
|
version: "11"
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Install (Linux)
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
# Required for libc6-dbg:i386 and g++-multilib packages which are
|
|
# needed for x86 builds.
|
|
sudo dpkg --add-architecture i386
|
|
|
|
sudo apt-get update
|
|
|
|
# libc6-dbg:i386 is required for running valgrind on x86.
|
|
sudo apt-get install -y ninja-build valgrind libc6-dbg:i386 wget gpg ca-certificates
|
|
|
|
# clang-3.7 and earlier are not available in Bionic anymore so we get
|
|
# them from the Xenial repositories instead.
|
|
sudo gpg --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
|
|
sudo gpg --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
|
|
#sudo sh -c 'wget -q -O - "https://keyserver.ubuntu.com/pks/lookup?search=0x40976EAF437D05B5&fingerprint=on&op=get" | gpg -q --dearmor - | tee "/usr/share/keyrings/dk.gpg" > /dev/null'
|
|
sudo add-apt-repository "deb http://dk.archive.ubuntu.com/ubuntu/ xenial main"
|
|
sudo add-apt-repository "deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe"
|
|
|
|
# clang->=13 is not currently available by default
|
|
# causing compiler conflict for clang-14 as the below pulls from focal for 22.04 (ubuntu-latest)
|
|
#if [ "${{ matrix.compiler }}" = "clang" -a ${{ matrix.version }} -ge 13 ]; then
|
|
#wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
|
#sudo add-apt-repository "deb https://apt.llvm.org/focal/ llvm-toolchain-focal-${{ matrix.version }} main"
|
|
#fi
|
|
|
|
if [ "${{ matrix.compiler }}" = "gcc" ]; then
|
|
sudo apt-get install -y g++-${{ matrix.version }} g++-${{ matrix.version }}-multilib
|
|
else
|
|
sudo apt-get install -y clang-${{ matrix.version }} libclang-${{ matrix.version }}-dev llvm-${{ matrix.version }}-dev g++-multilib
|
|
fi
|
|
|
|
- name: Install (macOS)
|
|
if: runner.os == 'macOS'
|
|
run: |
|
|
brew install ninja
|
|
if [ "${{ matrix.compiler }}" = "xcode" ]; then
|
|
sudo xcode-select -switch /Applications/Xcode_${{ matrix.version }}.app
|
|
fi
|
|
|
|
- name: Configure x64
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
|
|
- name: Build & Test x64
|
|
run: python3 .github/workflows/build_and_test.py ${{ runner.os }} x64 ${{ matrix.compiler }} ${{ matrix.version }}
|
|
|
|
- name: Configure x86
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
arch: x86
|
|
|
|
# MacOS doesn't support x86 from Xcode 10 onwards.
|
|
|
|
- name: Build & Test x86
|
|
if: runner.os == 'Linux' || runner.os == 'Windows' && matrix.compiler != 'clang-cl'
|
|
run: python3 .github/workflows/build_and_test.py ${{ runner.os }} x86 ${{ matrix.compiler }} ${{ matrix.version }}
|
|
|
|
ci-min-gw:
|
|
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
|
|
runs-on: windows-latest
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
configuration: ["Debug", "Release"]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Set up MinGW
|
|
uses: egor-tensin/setup-mingw@v2
|
|
|
|
- name: Generate
|
|
run: cmake -B build -S . -G "MinGW Makefiles" -D CMAKE_BUILD_TYPE=${{ matrix.configuration }}
|
|
|
|
- name: Build
|
|
run: cmake --build build
|
|
|
|
- name: Test
|
|
run: ctest --test-dir build --no-tests=error
|
|
|
|
ci-msvs:
|
|
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
|
|
runs-on: ${{ matrix.toolset == 'v143' && 'windows-2022' || 'windows-2019' }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
toolset: ["v140", "v141", "v142", "v143", "ClangCl"]
|
|
architecture: ["Win32", "x64"]
|
|
configuration: ["Debug", "Release"]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Generate
|
|
run: cmake -B build -S . -G "${{ matrix.toolset == 'v143' && 'Visual Studio 17 2022' || 'Visual Studio 16 2019' }}" \
|
|
-A ${{ matrix.architecture }} -T ${{ matrix.toolset }}
|
|
|
|
- name: Build
|
|
run: cmake --build build --config ${{ matrix.configuration }}
|
|
|
|
- name: Test
|
|
run: ctest -C ${{ matrix.configuration }} --test-dir build --no-tests=error
|
|
|
|
ci-icpc:
|
|
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
configuration: ["Debug", "Release"]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Install
|
|
run: |
|
|
#wget -O - https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | sudo apt-key add -
|
|
#sudo add-apt-repository "deb [signed-by=/etc/apt/keyrings/icpc.gpg] https://apt.repos.intel.com/oneapi all main"
|
|
# apt-key is deprecated replace with below lines
|
|
wget -O - https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | sudo gpg --dearmor |sudo tee /etc/apt/keyrings/icpc.gpg > /dev/null
|
|
echo "deb [signed-by=/etc/apt/keyrings/icpc.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/icpc.list
|
|
sudo apt-get update
|
|
sudo apt-get install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic ninja-build
|
|
|
|
- name: Generate
|
|
run: |
|
|
. /opt/intel/oneapi/setvars.sh
|
|
cmake -B build -S . -G Ninja -D CMAKE_CXX_COMPILER=icc -D CMAKE_C_COMPILER=icc -D CMAKE_CXX_COMPILER=icpc -D CMAKE_BUILD_TYPE=${{ matrix.configuration }} -D CMAKE_CXX_FLAGS="-w2 -Wcheck -Werror -diag-disable=10441 -D DOCTEST_CONFIG_NO_CONTRADICTING_INLINE"
|
|
|
|
- name: Build
|
|
run: |
|
|
. /opt/intel/oneapi/setvars.sh
|
|
cmake --build build --config ${{ matrix.configuration }}
|
|
- name: Test
|
|
run: |
|
|
. /opt/intel/oneapi/setvars.sh
|
|
ctest -C ${{ matrix.configuration }} --test-dir build --no-tests=error
|
|
|