mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-26 15:26:11 +01:00
b87caafd91
- The current setup tries to detect USE_CPP14/USE_CPP17 and sets the CXX_STANDARD property for the SelfTest target. This is not ideal, since CMAKE_CXX_STANDARD can be provided by the toolchain file or as command line option and should be used by the library internally correctly. Hence, the whole set of the relevant lines from `projects/CMakeLists.txt` have been removed. - The above can also cause subtle issues where the user is expecting the tests to compile with C++17 after setting CMAKE_CXX_STANDARD and then getting results of compilation with C++11 as USE_CPP17 has not been set. - The current build matrix used the above code to run the tests. So, even though the it should not required anymore to build Catch2, it was still required to send correct options to build matrix. In that respect, .travis.yml has been modified to send correct options to the build command in the new setup.
334 lines
8.1 KiB
YAML
334 lines
8.1 KiB
YAML
language: cpp
|
|
|
|
branches:
|
|
except:
|
|
- /dev-appveyor.*/
|
|
|
|
common_sources: &all_sources
|
|
- ubuntu-toolchain-r-test
|
|
- llvm-toolchain-trusty
|
|
- llvm-toolchain-trusty-3.9
|
|
- llvm-toolchain-trusty-4.0
|
|
- llvm-toolchain-trusty-5.0
|
|
- llvm-toolchain-trusty-6.0
|
|
|
|
matrix:
|
|
include:
|
|
|
|
# 1/ Linux Clang Builds
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-3.5']
|
|
env: COMPILER='clang++-3.5'
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-3.6']
|
|
env: COMPILER='clang++-3.6'
|
|
|
|
# Clang 3.7 is intentionally skipped as we cannot get it easily on
|
|
# TravisCI container
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['lcov', 'clang-3.8']
|
|
env: COMPILER='clang++-3.8'
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-3.9']
|
|
env: COMPILER='clang++-3.9'
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-4.0']
|
|
env: COMPILER='clang++-4.0'
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-5.0']
|
|
env: COMPILER='clang++-5.0'
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-6.0']
|
|
env: COMPILER='clang++-6.0'
|
|
|
|
# 2/ Linux GCC Builds
|
|
- os: linux
|
|
compiler: gcc
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['g++-4.8']
|
|
env: COMPILER='g++-4.8'
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['g++-4.9']
|
|
env: COMPILER='g++-4.9'
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['g++-5']
|
|
env: COMPILER='g++-5'
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons: &gcc6
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['g++-6']
|
|
env: COMPILER='g++-6'
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons: &gcc7
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['g++-7']
|
|
env: COMPILER='g++-7'
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons: &gcc8
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['g++-8']
|
|
env: COMPILER='g++-8'
|
|
|
|
# 3b/ Linux C++14 Clang builds
|
|
# Note that we need newer libstdc++ for C++14 support
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
packages: ['clang-3.8', 'libstdc++-6-dev']
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
- llvm-toolchain-trusty
|
|
env: COMPILER='clang++-3.8' CPP14=1
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-3.9', 'libstdc++-6-dev']
|
|
env: COMPILER='clang++-3.9' CPP14=1
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-4.0', 'libstdc++-6-dev']
|
|
env: COMPILER='clang++-4.0' CPP14=1
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-5.0', 'libstdc++-6-dev']
|
|
env: COMPILER='clang++-5.0' CPP14=1
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-6.0', 'libstdc++-6-dev']
|
|
env: COMPILER='clang++-6.0' CPP14=1
|
|
|
|
|
|
# 4a/ Linux C++14 GCC builds
|
|
- os: linux
|
|
compiler: gcc
|
|
addons: *gcc6
|
|
env: COMPILER='g++-6' CPP14=1
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons: *gcc7
|
|
env: COMPILER='g++-7' CPP14=1
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons: *gcc8
|
|
env: COMPILER='g++-8' CPP14=1
|
|
|
|
# 5/ OSX Clang Builds
|
|
- os: osx
|
|
osx_image: xcode7.3
|
|
compiler: clang
|
|
env: COMPILER='clang++'
|
|
|
|
- os: osx
|
|
osx_image: xcode8
|
|
compiler: clang
|
|
env: COMPILER='clang++'
|
|
|
|
- os: osx
|
|
osx_image: xcode9
|
|
compiler: clang
|
|
env: COMPILER='clang++'
|
|
|
|
- os: osx
|
|
osx_image: xcode9.1
|
|
compiler: clang
|
|
env: COMPILER='clang++'
|
|
|
|
- os: osx
|
|
osx_image: xcode9.1
|
|
compiler: clang
|
|
env: COMPILER='clang++' CPP14=1
|
|
|
|
# 6/ Special builds -- examples, coverage, valgrind, etc.
|
|
- os: linux
|
|
compiler: gcc
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['lcov', 'g++-7']
|
|
env: COMPILER='g++-7' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
packages: ['clang-3.8', 'lcov']
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
- llvm-toolchain-trusty
|
|
env: COMPILER='clang++-3.8' EXAMPLES=1 COVERAGE=1 EXTRAS=1
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['valgrind', 'lcov', 'g++-7']
|
|
env: COMPILER='g++-7' CPP14=1 VALGRIND=1
|
|
|
|
- os: osx
|
|
osx_image: xcode9.1
|
|
compiler: clang
|
|
env: COMPILER='clang++' CPP14=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
|
|
|
|
# 7/ C++17 builds
|
|
- os: linux
|
|
compiler: gcc
|
|
addons: *gcc7
|
|
env: COMPILER='g++-7' CPP17=1
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons: *gcc7
|
|
env: COMPILER='g++-7' EXAMPLES=1 COVERAGE=1 EXTRAS=1 CPP17=1
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-6.0', 'libstdc++-8-dev']
|
|
env: COMPILER='clang++-6.0' CPP17=1
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-6.0', 'libstdc++-8-dev']
|
|
env: COMPILER='clang++-6.0' CPP17=1 EXAMPLES=1 COVERAGE=1 EXTRAS=1
|
|
|
|
# 8/ Conan
|
|
- language: python
|
|
python:
|
|
- "3.7"
|
|
dist: xenial
|
|
install:
|
|
- pip install conan==1.10.2 conan-package-tools
|
|
env:
|
|
- CONAN_GCC_VERSIONS=8
|
|
- CONAN_DOCKER_IMAGE=conanio/gcc8
|
|
script:
|
|
- python .conan/build.py
|
|
|
|
install:
|
|
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
|
|
- mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
|
|
- |
|
|
if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
|
|
CMAKE_URL="http://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz"
|
|
mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
|
|
export PATH=${DEPS_DIR}/cmake/bin:${PATH}
|
|
elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
|
|
which cmake || brew install cmake;
|
|
fi
|
|
|
|
before_script:
|
|
- export CXX=${COMPILER}
|
|
- cd ${TRAVIS_BUILD_DIR}
|
|
# Regenerate single header file, so it is tested in the examples...
|
|
- python scripts/generateSingleHeader.py
|
|
|
|
- |
|
|
if [[ ${CPP17} -eq 1 ]]; then
|
|
export CPP_STANDARD=17
|
|
elif [[ ${CPP14} -eq 1 ]]; then
|
|
export CPP_STANDARD=14
|
|
else
|
|
export CPP_STANDARD=11
|
|
fi
|
|
|
|
# Use Debug builds for running Valgrind and building examples
|
|
- cmake -H. -BBuild-Debug -DCMAKE_BUILD_TYPE=Debug -Wdev -DCATCH_USE_VALGRIND=${VALGRIND} -DCATCH_BUILD_EXAMPLES=${EXAMPLES} -DCATCH_ENABLE_COVERAGE=${COVERAGE} -DCATCH_BUILD_EXTRA_TESTS=${EXTRAS} -DCMAKE_CXX_STANDARD=${CPP_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=On -DCMAKE_CXX_EXTENSIONS=OFF
|
|
# Don't bother with release build for coverage build
|
|
- cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DCMAKE_CXX_STANDARD=${CPP_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=On -DCMAKE_CXX_EXTENSIONS=OFF
|
|
|
|
|
|
script:
|
|
- cd Build-Debug
|
|
- make -j 2
|
|
- CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
|
|
# Coverage collection does not work for OS X atm
|
|
- |
|
|
if [[ "${TRAVIS_OS_NAME}" == "linux" ]] && [[ "${COVERAGE}" == "1" ]]; then
|
|
make gcov
|
|
make lcov
|
|
bash <(curl -s https://codecov.io/bash) -X gcov || echo "Codecov did not collect coverage reports"
|
|
fi
|
|
- # Go to release build
|
|
- cd ../Build-Release
|
|
- make -j 2
|
|
- CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
|