| 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-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 |