mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-22 21:36:11 +01:00
c6bf56b3d5
There is some weird broken dependency in their version of Trusty (14.04 LTE), so we are using Xenial (16.04 LTE) instead.
340 lines
8.2 KiB
YAML
340 lines
8.2 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-xenial-5.0
|
|
- llvm-toolchain-xenial-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
|
|
dist: xenial
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-5.0']
|
|
env: COMPILER='clang++-5.0'
|
|
|
|
- os: linux
|
|
dist: xenial
|
|
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
|
|
dist: xenial
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-5.0', 'libstdc++-6-dev']
|
|
env: COMPILER='clang++-5.0' CPP14=1
|
|
|
|
- os: linux
|
|
dist: xenial
|
|
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
|
|
dist: xenial
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-6.0', 'libstdc++-8-dev']
|
|
env: COMPILER='clang++-6.0' CPP17=1
|
|
|
|
- os: linux
|
|
dist: xenial
|
|
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 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
|