6d701b29df
The clang sanitizer tests, and there especially the unicode tests, can hit the default timeout of 25 minutes (1500 seconds) quite easily, so let's raise the timeout to 45 minutes (2700 seconds).
345 lines
8.2 KiB
YAML
345 lines
8.2 KiB
YAML
#########################
|
|
# project configuration #
|
|
#########################
|
|
|
|
# C++ project
|
|
language: cpp
|
|
|
|
dist: trusty
|
|
sudo: required
|
|
group: edge
|
|
|
|
|
|
###################
|
|
# global settings #
|
|
###################
|
|
|
|
env:
|
|
global:
|
|
# The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
|
|
# via the "travis encrypt" command using the project repo's public key
|
|
- secure: "m89SSgE+ASLO38rSKx7MTXK3n5NkP9bIx95jwY71YEiuFzib30PDJ/DifKnXxBjvy/AkCGztErQRk/8ZCvq+4HXozU2knEGnL/RUitvlwbhzfh2D4lmS3BvWBGS3N3NewoPBrRmdcvnT0xjOGXxtZaJ3P74TkB9GBnlz/HmKORA="
|
|
|
|
|
|
################
|
|
# build matrix #
|
|
################
|
|
|
|
matrix:
|
|
include:
|
|
|
|
# Valgrind
|
|
- os: linux
|
|
compiler: gcc
|
|
env:
|
|
- COMPILER=g++-4.9
|
|
- CMAKE_OPTIONS=-DJSON_Valgrind=ON
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-4.9', 'valgrind', 'ninja-build']
|
|
|
|
# clang sanitizer
|
|
- os: linux
|
|
compiler: clang
|
|
env:
|
|
- COMPILER=clang++-7
|
|
- CMAKE_OPTIONS=-DJSON_Sanitizer=ON
|
|
- UBSAN_OPTIONS=print_stacktrace=1,suppressions=$(pwd)/test/src/UBSAN.supp
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
|
|
packages: ['g++-6', 'clang-7', 'ninja-build']
|
|
before_script:
|
|
- export PATH=$PATH:/usr/lib/llvm-7/bin
|
|
|
|
# cppcheck
|
|
- os: linux
|
|
compiler: gcc
|
|
env:
|
|
- COMPILER=g++-4.9
|
|
- SPECIAL=cppcheck
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-4.9', 'cppcheck', 'ninja-build']
|
|
after_success:
|
|
- make cppcheck
|
|
|
|
# no exceptions
|
|
- os: linux
|
|
compiler: gcc
|
|
env:
|
|
- COMPILER=g++-4.9
|
|
- CMAKE_OPTIONS=-DJSON_NoExceptions=ON
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-4.9', 'ninja-build']
|
|
|
|
# check amalgamation
|
|
- os: linux
|
|
compiler: gcc
|
|
env:
|
|
- COMPILER=g++-4.9
|
|
- SPECIAL=amalgamation
|
|
- MULTIPLE_HEADERS=ON
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-4.9', 'astyle', 'ninja-build']
|
|
after_success:
|
|
- make check-amalgamation
|
|
|
|
# Coveralls (http://gronlier.fr/blog/2015/01/adding-code-coverage-to-your-c-project/)
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-4.9', 'ninja-build']
|
|
before_script:
|
|
- pip install --user cpp-coveralls
|
|
after_success:
|
|
- coveralls --build-root test --include include/nlohmann --gcov 'gcov-4.9' --gcov-options '\-lp'
|
|
env:
|
|
- COMPILER=g++-4.9
|
|
- CMAKE_OPTIONS=-DJSON_Coverage=ON
|
|
- MULTIPLE_HEADERS=ON
|
|
|
|
# Coverity (only for branch coverity_scan)
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
before_install: echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-certificates.crt
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
|
|
packages: ['g++-6', 'clang-3.6', 'ninja-build']
|
|
coverity_scan:
|
|
project:
|
|
name: "nlohmann/json"
|
|
description: "Build submitted via Travis CI"
|
|
notification_email: niels.lohmann@gmail.com
|
|
build_command_prepend: "mkdir coverity_build ; cd coverity_build ; cmake .. ; cd .."
|
|
build_command: "make -C coverity_build"
|
|
branch_pattern: coverity_scan
|
|
env:
|
|
- SPECIAL=coverity
|
|
- COMPILER=clang++-3.6
|
|
|
|
# OSX / Clang
|
|
|
|
- os: osx
|
|
osx_image: xcode8.3
|
|
|
|
- os: osx
|
|
osx_image: xcode9
|
|
|
|
- os: osx
|
|
osx_image: xcode9.1
|
|
|
|
- os: osx
|
|
osx_image: xcode9.2
|
|
|
|
- os: osx
|
|
osx_image: xcode9.3
|
|
|
|
- os: osx
|
|
osx_image: xcode9.4
|
|
|
|
- os: osx
|
|
osx_image: xcode10
|
|
|
|
- os: osx
|
|
osx_image: xcode10.1
|
|
|
|
# Linux / GCC
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
env: compiler=g++-4.8
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-4.8', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
env: compiler=g++-4.9
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-4.9', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
env: COMPILER=g++-5
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-5', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
env: COMPILER=g++-6
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-6', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
env: COMPILER=g++-7
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-7', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
env: COMPILER=g++-8
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-8', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
env: COMPILER=g++-9
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-9', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: gcc
|
|
env:
|
|
- COMPILER=g++-9
|
|
- CXXFLAGS=-std=c++2a
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-9', 'ninja-build']
|
|
|
|
# Linux / Clang
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
env: COMPILER=clang++-3.5
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.5']
|
|
packages: ['g++-6', 'clang-3.5', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
env: COMPILER=clang++-3.6
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
|
|
packages: ['g++-6', 'clang-3.6', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
env: COMPILER=clang++-3.7
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7']
|
|
packages: ['g++-6', 'clang-3.7', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
env: COMPILER=clang++-3.8
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-6', 'clang-3.8', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
env: COMPILER=clang++-3.9
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test']
|
|
packages: ['g++-6', 'clang-3.9', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
env: COMPILER=clang++-4.0
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-4.0']
|
|
packages: ['g++-6', 'clang-4.0', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
env: COMPILER=clang++-5.0
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0']
|
|
packages: ['g++-6', 'clang-5.0', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
env: COMPILER=clang++-6.0
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-6.0']
|
|
packages: ['g++-6', 'clang-6.0', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
env: COMPILER=clang++-7
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
|
|
packages: ['g++-6', 'clang-7', 'ninja-build']
|
|
|
|
- os: linux
|
|
compiler: clang
|
|
env:
|
|
- COMPILER=clang++-7
|
|
- CXXFLAGS=-std=c++1z
|
|
addons:
|
|
apt:
|
|
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-7']
|
|
packages: ['g++-6', 'clang-7', 'ninja-build']
|
|
|
|
################
|
|
# build script #
|
|
################
|
|
|
|
script:
|
|
# get CMake and Ninja (only for systems with brew - macOS)
|
|
- |
|
|
if [[ (-x $(which brew)) ]]; then
|
|
brew update
|
|
brew install cmake ninja
|
|
brew upgrade cmake
|
|
cmake --version
|
|
fi
|
|
|
|
# make sure CXX is correctly set
|
|
- if [[ "${COMPILER}" != "" ]]; then export CXX=${COMPILER}; fi
|
|
# by default, use the single-header version
|
|
- if [[ "${MULTIPLE_HEADERS}" == "" ]]; then export MULTIPLE_HEADERS=OFF; fi
|
|
|
|
# show OS/compiler version
|
|
- uname -a
|
|
- $CXX --version
|
|
|
|
# compile and execute unit tests
|
|
- mkdir -p build && cd build
|
|
- cmake .. ${CMAKE_OPTIONS} -DJSON_MultipleHeaders=${MULTIPLE_HEADERS} -GNinja && cmake --build . --config Release
|
|
- ctest -C Release --timeout 2700 -V -j
|
|
- cd ..
|
|
|
|
# check if homebrew works (only checks develop branch)
|
|
- if [ `which brew` ]; then
|
|
brew update ;
|
|
brew tap nlohmann/json ;
|
|
brew install nlohmann_json --HEAD ;
|
|
brew test nlohmann_json ;
|
|
fi
|