# this file is HEAVILY influenced by https://github.com/boostorg/hana/blob/master/.travis.yml

dist: trusty
language: c++

notifications:
  email: false
  # gitter
  webhooks:
    urls: https://webhooks.gitter.im/e/10941dd1c67e5e967706
    on_success: change
    on_failure: always
git:
  depth: 500

# both apt and ccache make the builds slower...
#cache:
#  - apt
#  - ccache

env:
  global:
#    - USE_CCACHE=1
#    - CCACHE_SLOPPINESS=pch_defines,time_macros
#    - CCACHE_COMPRESS=1
#    - CCACHE_MAXSIZE=200M
#    - CCACHE_CPP2=1
    - CMAKE_OPTIONS_GLOBAL="-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"

addons:
  coverity_scan:
    # COVERITY_SCAN_TOKEN added as env var in travis project
    project:
      name: onqtam/doctest
    notification_email: vik.kirilov@gmail.com
    build_command: clang++ scripts/hello_world.cpp -I doctest
    branch_pattern: coverity_scan
  # these apt sources will be referenced later (by using *name)
  apt:
    sources: &apt_sources
      - ubuntu-toolchain-r-test
      - llvm-toolchain-trusty
      - llvm-toolchain-precise-3.7
      - llvm-toolchain-trusty-3.9
      - llvm-toolchain-trusty-4.0
      - llvm-toolchain-trusty-5.0
      - llvm-toolchain-trusty-6.0
      - llvm-toolchain-trusty-7
      - llvm-toolchain-trusty-8

compiler: clang
os: linux

matrix:
  include:
    # coverage
    - env: COMPILER=g++ CODE_COVERAGE=true
      compiler: gcc
      addons:
        apt:
          packages: ["lcov"]

    # static code analysis
    - env: COMPILER=clang++-4.0 STATIC_CODE_ANALYSIS=true
      addons: &static_analysis
        apt:
          packages: ["clang-4.0", "clang-tidy-4.0", "cppcheck"]
          sources: *apt_sources

    # GCC 4.8
    - env: COMPILER=g++-4.8 HAS_ASAN=true HAS_TSAN=true SANITIZER_CXX_FLAGS="-fuse-ld=gold" TSAN_CXX_FLAGS="-ltsan"
      compiler: gcc
      addons: &gcc48
        apt:
          packages: ["g++-4.8", "valgrind", "libc6-dbg", "linux-libc-dev"]
          sources: *apt_sources

    # GCC 4.9
    - env: COMPILER=g++-4.9 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true SANITIZER_CXX_FLAGS="-fuse-ld=gold" TSAN_CXX_FLAGS="-ltsan"
      compiler: gcc
      addons: &gcc49
        apt:
          packages: ["g++-4.9", "valgrind", "libc6-dbg", "linux-libc-dev"]
          sources: *apt_sources

    # GCC 5
    - env: COMPILER=g++-5 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true SANITIZER_CXX_FLAGS="-fuse-ld=gold" TSAN_CXX_FLAGS="-ltsan"
      compiler: gcc
      addons: &gcc5
        apt:
          packages: ["g++-5",   "valgrind", "libc6-dbg", "linux-libc-dev"]
          sources: *apt_sources

    # GCC 6
    - env: COMPILER=g++-6 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true SANITIZER_CXX_FLAGS="-fuse-ld=gold" TSAN_CXX_FLAGS="-ltsan"
      compiler: gcc
      addons: &gcc6
        apt:
          packages: ["g++-6",   "valgrind", "libc6-dbg", "linux-libc-dev"]
          sources: *apt_sources

    # GCC 7
    - env: COMPILER=g++-7 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true SANITIZER_CXX_FLAGS="-fuse-ld=gold" TSAN_CXX_FLAGS="-ltsan"
      compiler: gcc
      sudo: required      # see this issue for more details: https://github.com/travis-ci/travis-ci/issues/9033
      addons: &gcc7
        apt:
          packages: ["g++-7",   "valgrind", "libc6-dbg", "linux-libc-dev"]
          sources: *apt_sources

    # GCC 8
    - env: COMPILER=g++-8 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true SANITIZER_CXX_FLAGS="-fuse-ld=gold" TSAN_CXX_FLAGS="-ltsan"
      compiler: gcc
      sudo: required      # see this issue for more details: https://github.com/travis-ci/travis-ci/issues/9033
      addons: &gcc8
        apt:
          packages: ["g++-8",   "valgrind", "libc6-dbg", "linux-libc-dev"]
          sources: *apt_sources

    # GCC 9
    - env: COMPILER=g++-9 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true SANITIZER_CXX_FLAGS="-fuse-ld=gold" TSAN_CXX_FLAGS="-ltsan"
      compiler: gcc
      sudo: required      # see this issue for more details: https://github.com/travis-ci/travis-ci/issues/9033
      addons: &gcc9
        apt:
          packages: ["g++-9",   "valgrind", "libc6-dbg", "linux-libc-dev"]
          sources: *apt_sources

    # Clang 3.5
    - env: COMPILER=clang++-3.5 HAS_ASAN=true HAS_UBSAN=true # no HAS_TSAN - see errors: https://travis-ci.org/onqtam/doctest/builds/417926743
      addons: &clang35
        apt:
          packages: ["clang-3.5", "valgrind", "libc6-dbg", "g++-6"]
          sources: *apt_sources

    # Clang 3.6
    - env: COMPILER=clang++-3.6 HAS_ASAN=true HAS_UBSAN=true # no HAS_TSAN - see errors: https://travis-ci.org/onqtam/doctest/builds/417926743
      addons: &clang36
        apt:
          packages: ["clang-3.6", "valgrind", "libc6-dbg", "g++-6"]
          sources: *apt_sources

    # Clang 3.7
    - env: COMPILER=clang++-3.7
      addons: &clang37
        apt:
          packages: ["clang-3.7", "valgrind", "libc6-dbg", "g++-6"]
          sources: *apt_sources

    # Clang 3.8
    - env: COMPILER=clang++-3.8 HAS_ASAN=true HAS_UBSAN=true # no HAS_TSAN - see errors: https://travis-ci.org/onqtam/doctest/builds/417926743
      addons: &clang38
        apt:
          packages: ["clang-3.8", "valgrind", "libc6-dbg", "g++-6"]
          sources: *apt_sources

    # Clang 3.9
    - env: COMPILER=clang++-3.9 # no HAS_ASAN/HAS_UBSAN - see errors: https://travis-ci.org/onqtam/doctest/jobs/386263910
      addons: &clang39
        apt:
          packages: ["clang-3.9", "valgrind", "libc6-dbg", "g++-6"]
          sources: *apt_sources

    # Clang 4.0
    - env: COMPILER=clang++-4.0 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true
      sudo: required      # see this issue for more details: https://github.com/travis-ci/travis-ci/issues/9033
      addons: &clang40
        apt:
          packages: ["clang-4.0", "valgrind", "libc6-dbg", "g++-6"]
          sources: *apt_sources

    # Clang 5.0
    - env: COMPILER=clang++-5.0 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true
      sudo: required      # see this issue for more details: https://github.com/travis-ci/travis-ci/issues/9033
      addons: &clang50
        apt:
          packages: ["clang-5.0", "valgrind", "libc6-dbg", "g++-6"]
          sources: *apt_sources

    # Clang 6.0
    - env: COMPILER=clang++-6.0 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true
      sudo: required # see this issue for more details: https://github.com/travis-ci/travis-ci/issues/9033
      addons: &clang60
        apt:
          packages: ["clang-6.0", "valgrind", "libc6-dbg", "g++-6"]
          sources: *apt_sources

    # Clang 7
    - env: COMPILER=clang++-7 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true
      sudo: required # see this issue for more details: https://github.com/travis-ci/travis-ci/issues/9033
      addons: &clang7
        apt:
          packages: ["clang-7", "valgrind", "libc6-dbg", "g++-6"]
          sources: *apt_sources

    # Clang 8
    - env: COMPILER=clang++-8 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true
      sudo: required # see this issue for more details: https://github.com/travis-ci/travis-ci/issues/9033
      addons: &clang8
        apt:
          packages: ["clang-8", "valgrind", "libc6-dbg", "g++-6"]
          sources: *apt_sources

    # Xcode 6.4 Clang
    - env: COMPILER=clang++ CMAKE_OPTIONS="-DDOCTEST_THREAD_LOCAL="
      osx_image: xcode6.4
      os: osx

    # Xcode 7.3 Clang
    - env: COMPILER=clang++ HAS_ASAN=true CMAKE_OPTIONS="-DDOCTEST_THREAD_LOCAL="
      osx_image: xcode7.3
      os: osx

    # Xcode 8 Clang
    - env: COMPILER=clang++ HAS_TSAN=true # no HAS_ASAN - errors since using thread_local even in single-threaded cases - see errors: https://travis-ci.org/onqtam/doctest/builds/417181981
      osx_image: xcode8
      os: osx

    # Xcode 8.3 Clang
    - env: COMPILER=clang++ HAS_UBSAN=true HAS_TSAN=true # no HAS_ASAN - errors since using thread_local even in single-threaded cases - see errors: https://travis-ci.org/onqtam/doctest/builds/417181981
      osx_image: xcode8.3
      os: osx

    # Xcode 9.2 Clang
    - env: COMPILER=clang++ HAS_UBSAN=true HAS_TSAN=true # no HAS_ASAN - errors since using thread_local even in single-threaded cases - see errors: https://travis-ci.org/onqtam/doctest/builds/417181981
      osx_image: xcode9.2
      os: osx

    # Xcode 9.4 Clang
    - env: COMPILER=clang++ HAS_UBSAN=true HAS_TSAN=true # no HAS_ASAN - errors since using thread_local even in single-threaded cases - see errors: https://travis-ci.org/onqtam/doctest/builds/417181981
      osx_image: xcode9.4
      os: osx

    # Xcode 10.0 Clang
    - env: COMPILER=clang++ HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true
      osx_image: xcode10
      os: osx

    # Xcode 10.2 Clang
    - env: COMPILER=clang++ HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true
      osx_image: xcode10.2
      os: osx

    # OSX LLVM-GCC
    - env: COMPILER=g++ HAS_ASAN=true HAS_TSAN=true
      compiler: gcc
      osx_image: xcode10
      os: osx

  allow_failures:

    # static code analysis
    - env: COMPILER=clang++-4.0 STATIC_CODE_ANALYSIS=true

    # GCC 4.8
    - env: COMPILER=g++-4.8 HAS_ASAN=true HAS_TSAN=true SANITIZER_CXX_FLAGS="-fuse-ld=gold" TSAN_CXX_FLAGS="-ltsan"
      compiler: gcc
    # GCC 4.9
    - env: COMPILER=g++-4.9 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true SANITIZER_CXX_FLAGS="-fuse-ld=gold" TSAN_CXX_FLAGS="-ltsan"
      compiler: gcc
    # GCC 5
    - env: COMPILER=g++-5 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true SANITIZER_CXX_FLAGS="-fuse-ld=gold" TSAN_CXX_FLAGS="-ltsan"
      compiler: gcc
    # GCC 6
    - env: COMPILER=g++-6 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true SANITIZER_CXX_FLAGS="-fuse-ld=gold" TSAN_CXX_FLAGS="-ltsan"
      compiler: gcc
    # GCC 7
    - env: COMPILER=g++-7 HAS_ASAN=true HAS_UBSAN=true HAS_TSAN=true SANITIZER_CXX_FLAGS="-fuse-ld=gold" TSAN_CXX_FLAGS="-ltsan"
      compiler: gcc

install:
  - if [[ "${CODE_COVERAGE}" == "true" ]]; then gem install coveralls-lcov ; fi

  ############################################################################
  # All the dependencies are installed in ${TRAVIS_BUILD_DIR}/deps/
  ############################################################################

  # Make a dir for all
  - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
  - mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}

  # Install a recent CMake
  - |
    if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
      CMAKE_URL="http://www.cmake.org/files/v3.7/cmake-3.7.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}
    fi

  # Install OCLint
  - |
    if [[ "${STATIC_CODE_ANALYSIS}" = "true" ]]; then
      OCLINT_URL="https://github.com/oclint/oclint/releases/download/v0.12/oclint-0.12-x86_64-linux-3.13.0-112-generic.tar.gz"
      mkdir oclint && travis_retry wget --no-check-certificate --quiet -O - ${OCLINT_URL} | tar --strip-components=1 -xz -C oclint
      export PATH=${DEPS_DIR}/oclint/bin:${PATH}
    fi

  # Go back to ${TRAVIS_BUILD_DIR}
  - cd ${TRAVIS_BUILD_DIR}

  ############################################################################
  # Install stuff with homebrew under OSX
  ############################################################################

  - |
    if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
      brew update
      # brew install ccache
      # brew install valgrind
      # cmake
      if brew list -1 | grep -q "^cmake\$"; then
        brew outdated cmake || brew upgrade cmake
      else
        brew install cmake
      fi
    fi

  - export CXX="${COMPILER}"
#  - export CXX="ccache ${COMPILER}"
#  - ccache -s

before_script:
  - ${CXX} --version

script:
  # coverage
  - |
    if [[ "${CODE_COVERAGE}" = "true" ]]; then
      cmake ${CMAKE_OPTIONS_GLOBAL} ${CMAKE_OPTIONS} -DCMAKE_CXX_COMPILER=${CXX} -DCMAKE_CXX_FLAGS="-fprofile-arcs -ftest-coverage -std=c++0x" -DCMAKE_BUILD_TYPE=Debug . || exit 1
      make -k -j2 || exit 1
      ctest -j2 --output-on-failure || exit 1

      lcov -d . -c -o coverage.info                                      # parse coverage data
      lcov -r coverage.info "/usr*"                     -o coverage.info # remove data for system headers
      lcov -r coverage.info "$(readlink -f examples)/*" -o coverage.info # remove data for .cpp files
      lcov -r coverage.info "$(readlink -f scripts)/*"  -o coverage.info # remove data for .cpp files
      lcov -l coverage.info                                              # just list a short summary of the results
      coveralls-lcov --repo-token=${COVERALLS_REPO_TOKEN} coverage.info  # upload results

      # do not continue with other build configurations after that
      exit
    fi

  # static code analysis
  - |
    if [[ "${STATIC_CODE_ANALYSIS}" = "true" ]]; then
      # setup a test file "doctest.cpp" that is the header + a test case at the end
      echo "#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN\n" >> doctest.cpp
      cat doctest/doctest.h >> doctest.cpp
      echo -e "TEST_CASE(\"\") {\n\tint a = 6;\n\tSUBCASE(\"\") a = 5;\n\tCAPTURE(a);\n\tCHECK(a == 6);\n}\n" >> doctest.cpp

      # cppcheck
      cppcheck doctest.cpp --enable=all --suppress=unmatchedSuppression --suppress=missingIncludeSystem --suppress=unusedFunction --suppress=functionConst --inline-suppr --platform=unix64 --inconclusive --std=posix --inconclusive -v --error-exitcode=1 --template "{file}({line}): {severity} ({id}): {message}"

      # oclint
      oclint doctest.cpp -disable-rule=ShortVariableName -disable-rule=LongLine -disable-rule=LongMethod -disable-rule=HighNcssMethod -disable-rule=LongVariableName -disable-rule=HighCyclomaticComplexity -disable-rule=HighNPathComplexity -disable-rule=UnusedLocalVariable -disable-rule=DoubleNegative -disable-rule=MultipleUnaryOperator -disable-rule=DeepNestedBlock || exit 1

      # clang-tidy
      cd scripts/playground
      cmake ${CMAKE_OPTIONS_GLOBAL} ${CMAKE_OPTIONS} -DCMAKE_CXX_COMPILER=${CXX} . || exit 1
      clang-tidy-4.0 -std=c++11 -p=. *.cpp -header-filter=.* -warnings-as-errors=* -checks='*,-misc-misplaced-widening-cast,-misc-macro-parentheses,-misc-definitions-in-headers,-misc-unused-parameters,-llvm-header-guard,-llvm-include-order,-google-readability-braces-around-statements,-google-runtime-references,-google-readability-todo,-google-build-using-namespace,-google-explicit-constructor,-cert-err58-cpp,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-special-member-functions,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-union-access,-clang-analyzer-security.insecureAPI.strcpy,-modernize-loop-convert,-modernize-use-auto,-modernize-use-bool-literals,-readability-braces-around-statements,-readability-named-parameter,-readability-else-after-return,-readability-redundant-declaration,-readability-implicit-bool-cast,-clang-diagnostic-variadic-macros,-clang-diagnostic-c++11-compat' || exit 1

      # do not continue with other build configurations after that
      exit
    fi

  # initial run with options
  - cmake ${CMAKE_OPTIONS_GLOBAL} ${CMAKE_OPTIONS} -DCMAKE_CXX_COMPILER=${CXX} .

  # set the common CXX flags
  - export CXX_FLAGS="${CXX_FLAGS} -std=c++0x"

  # debug
  - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="${CXX_FLAGS}" .
  - make clean && make -k -j2
  - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DDOCTEST_TEST_MODE=VALGRIND . && ctest -j2 --output-on-failure ; fi
  - cmake -DDOCTEST_TEST_MODE=COMPARE . && ctest -j2 --output-on-failure
  # release
  - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="${CXX_FLAGS}" .
  - make clean && make -k -j2
  - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DDOCTEST_TEST_MODE=VALGRIND . && ctest -j2 --output-on-failure ; fi
  - cmake -DDOCTEST_TEST_MODE=COMPARE . && ctest -j2 --output-on-failure

  # sanitizers - again Debug/Release configs through address/undefined/thread sanitizers
  # on separate commands because when something fails I want to see which one exactly
  - cmake -DDOCTEST_TEST_MODE=NORMAL .

  - export ASAN_OPTIONS=verbosity=2:strict_string_checks=true:detect_odr_violation=2:detect_stack_use_after_return=true:check_initialization_order=true:strict_init_order=true
  - if [[ "${HAS_ASAN}" = "true" ]];  then cmake -DCMAKE_BUILD_TYPE=Debug   -DCMAKE_CXX_FLAGS="${CXX_FLAGS} ${SANITIZER_CXX_FLAGS} -g -fno-omit-frame-pointer -fsanitize=address"                             . && make clean && make -k -j2 && ctest -j2 --output-on-failure ; fi
  - if [[ "${HAS_ASAN}" = "true" ]];  then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="${CXX_FLAGS} ${SANITIZER_CXX_FLAGS} -g -fno-omit-frame-pointer -fsanitize=address"                             . && make clean && make -k -j2 && ctest -j2 --output-on-failure ; fi

  - export UBSAN_OPTIONS=verbosity=2
  - if [[ "${HAS_UBSAN}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug   -DCMAKE_CXX_FLAGS="${CXX_FLAGS} ${SANITIZER_CXX_FLAGS} -g -fno-omit-frame-pointer -fsanitize=undefined"                           . && make clean && make -k -j2 && ctest -j2 --output-on-failure ; fi
  - if [[ "${HAS_UBSAN}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="${CXX_FLAGS} ${SANITIZER_CXX_FLAGS} -g -fno-omit-frame-pointer -fsanitize=undefined"                           . && make clean && make -k -j2 && ctest -j2 --output-on-failure ; fi

  - export TSAN_OPTIONS=verbosity=2:force_seq_cst_atomics=1
  - if [[ "${HAS_TSAN}" = "true" ]];  then cmake -DCMAKE_BUILD_TYPE=Debug   -DCMAKE_CXX_FLAGS="${CXX_FLAGS} ${SANITIZER_CXX_FLAGS} -g -fno-omit-frame-pointer -fsanitize=thread -pie -fPIE ${TSAN_CXX_FLAGS}" . && make clean && make -k -j2 && ctest -j2 --output-on-failure ; fi
  - if [[ "${HAS_TSAN}" = "true" ]];  then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="${CXX_FLAGS} ${SANITIZER_CXX_FLAGS} -g -fno-omit-frame-pointer -fsanitize=thread -pie -fPIE ${TSAN_CXX_FLAGS}" . && make clean && make -k -j2 && ctest -j2 --output-on-failure ; fi

  # test without rtti - just Debug
  - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="${CXX_FLAGS} -fno-rtti" .
  - make clean && make -k -j2
  - cmake -DDOCTEST_TEST_MODE=COMPARE . && ctest -j2 --output-on-failure

  # test only compilation without exceptions - just Debug
  - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="${CXX_FLAGS} -fno-exceptions -DDOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS" .
  - make clean && make -k -j2

#  - ccache -s

#after_script:
#  - cat compile_commands.json
