mirror of
https://github.com/catchorg/Catch2.git
synced 2025-04-28 19:53:52 +00:00
* Examples are no longer built on all travis images * Coverage is no longer collected from all travis images * Valgrind is no longer used with all travis images This should greatly reduce the amount of compiling, downloading binaries and general work the common images do.
255 lines
6.3 KiB
YAML
255 lines
6.3 KiB
YAML
language: cpp
|
|
sudo: false
|
|
|
|
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
|
|
|
|
matrix:
|
|
include:
|
|
|
|
# 1/ Linux Clang Builds
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['lcov', 'clang-3.5']
|
|
env: COMPILER='clang++-3.5'
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['lcov', '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', 'lcov']
|
|
env: COMPILER='clang++-3.9'
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-4.0', 'lcov']
|
|
env: COMPILER='clang++-4.0'
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-5.0', 'lcov']
|
|
env: COMPILER='clang++-5.0'
|
|
|
|
# 2/ Linux GCC Builds
|
|
- os: linux
|
|
compiler: gcc
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['lcov', 'g++-4.8']
|
|
env: COMPILER='g++-4.8'
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['lcov', 'g++-4.9']
|
|
env: COMPILER='g++-4.9'
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['lcov', 'g++-5']
|
|
env: COMPILER='g++-5'
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons: &gcc6
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['lcov', 'g++-6']
|
|
env: COMPILER='g++-6'
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons: &gcc7
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['lcov', 'g++-7']
|
|
env: COMPILER='g++-7'
|
|
|
|
# 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', 'lcov', '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', 'lcov', 'libstdc++-6-dev']
|
|
env: COMPILER='clang++-3.9' CPP14=1
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-4.0', 'lcov', 'libstdc++-6-dev']
|
|
env: COMPILER='clang++-4.0' CPP14=1
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
addons:
|
|
apt:
|
|
sources: *all_sources
|
|
packages: ['clang-5.0', 'lcov', 'libstdc++-6-dev']
|
|
env: COMPILER='clang++-5.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
|
|
|
|
# 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
|
|
|
|
- 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
|
|
|
|
- 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
|
|
|
|
install:
|
|
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
|
|
- mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
|
|
- |
|
|
if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
|
|
CMAKE_URL="http://www.cmake.org/files/v3.3/cmake-3.3.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
|
|
|
|
- |
|
|
# Use Debug builds for running Valgrind and building examples
|
|
cmake -H. -BBuild-Debug -DCMAKE_BUILD_TYPE=Debug -Wdev -DUSE_CPP14=${CPP14} -DCATCH_USE_VALGRIND=${VALGRIND} -DCATCH_BUILD_EXAMPLES=${EXAMPLES} -DCATCH_ENABLE_COVERAGE=${COVERAGE}
|
|
# Don't bother with release build for coverage build
|
|
cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DUSE_CPP14=${CPP14}
|
|
|
|
|
|
script:
|
|
- |
|
|
cd Build-Debug
|
|
make -j 2
|
|
CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
|
|
# Coverage collection does not work for OS X atm
|
|
echo "${TRAVIS_OS_NAME}";
|
|
echo "${COVERAGE}";
|
|
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
|