working on the command line doc
diff --git a/.travis.yml b/.travis.yml
index 9a5a139..f08da44 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,352 +1,353 @@
-sudo: false
-language: c++
-
-notifications:
- email:
- on_success: change
- on_failure: always
- # gitter
- webhooks:
- urls: https://webhooks.gitter.im/e/10941dd1c67e5e967706
- on_success: change
- on_failure: always
-git:
- depth: 5
-
-# 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"
- # Workaround for https://github.com/travis-ci/travis-ci/issues/4681
- # "Defining the build matrix only with matrix.include leads to an additional, unwanted job"
- matrix:
- - TRAVIS_EMPTY_JOB_WORKAROUND=true
-
-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_prepend: cd examples/hello_world && cmake .
- build_command: make
- branch_pattern: coverity_scan
- # these apt sources will be referenced later (by using *name)
- apt:
- sources: &apt_sources
- - ubuntu-toolchain-r-test
- - llvm-toolchain-precise-3.5
- - llvm-toolchain-precise-3.6
- - llvm-toolchain-precise-3.7
- - llvm-toolchain-precise-3.8
- - llvm-toolchain-precise
-
-compiler: clang
-os: linux
-
-matrix:
- exclude:
- - env: TRAVIS_EMPTY_JOB_WORKAROUND=true
-
- include:
- # coverage
- - env: COMPILER=g++ COVERALLS_SERVICE_NAME=travis-ci
- compiler: gcc
- addons:
- apt:
- packages: ["lcov", "curl"]
-
- # GCC 4.4
- - env: COMPILER=g++-4.4
- compiler: gcc
- addons: &gcc44
- apt:
- packages: ["g++-4.4", "valgrind", "g++-4.4-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # GCC 4.5
- - env: COMPILER=g++-4.5
- compiler: gcc
- addons: &gcc45
- apt:
- packages: ["g++-4.5", "valgrind", "g++-4.5-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # GCC 4.6
- - env: COMPILER=g++-4.6
- compiler: gcc
- addons: &gcc46
- apt:
- packages: [ "valgrind", "g++-4.6-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # GCC 4.7
- - env: COMPILER=g++-4.7
- compiler: gcc
- addons: &gcc47
- apt:
- packages: ["g++-4.7", "valgrind", "g++-4.7-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # GCC 4.8
- - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true
- compiler: gcc
- addons: &gcc48
- apt:
- packages: ["g++-4.8", "valgrind", "g++-4.8-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # GCC 4.9
- - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
- compiler: gcc
- addons: &gcc49
- apt:
- packages: ["g++-4.9", "valgrind", "g++-4.9-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # GCC 5
- - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
- compiler: gcc
- addons: &gcc5
- apt:
- packages: ["g++-5", "valgrind", "g++-5-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
-# # GCC 6
-# # released on 2016.04.27
-# # wait for it to enter the whitelist - https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
-# # also with homebrew under OSX!!!
-# - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+#sudo: false
+#language: c++
+#
+#notifications:
+# email:
+# on_success: change
+# on_failure: always
+# # gitter
+# webhooks:
+# urls: https://webhooks.gitter.im/e/10941dd1c67e5e967706
+# on_success: change
+# on_failure: always
+#git:
+# depth: 5
+#
+## 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"
+# # Workaround for https://github.com/travis-ci/travis-ci/issues/4681
+# # "Defining the build matrix only with matrix.include leads to an additional, unwanted job"
+# matrix:
+# - TRAVIS_EMPTY_JOB_WORKAROUND=true
+#
+#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_prepend: cd examples/hello_world && cmake .
+# build_command: make
+# branch_pattern: coverity_scan
+# # these apt sources will be referenced later (by using *name)
+# apt:
+# sources: &apt_sources
+# - ubuntu-toolchain-r-test
+# - llvm-toolchain-precise-3.5
+# - llvm-toolchain-precise-3.6
+# - llvm-toolchain-precise-3.7
+# - llvm-toolchain-precise-3.8
+# - llvm-toolchain-precise
+#
+#compiler: clang
+#os: linux
+#
+#matrix:
+# exclude:
+# - env: TRAVIS_EMPTY_JOB_WORKAROUND=true
+#
+# include:
+# # coverage
+# - env: COMPILER=g++ COVERALLS_SERVICE_NAME=travis-ci
# compiler: gcc
-# addons: &gcc6
+# addons:
# apt:
-# packages: ["g++-6", "valgrind", "g++-6-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# packages: ["lcov", "curl"]
+#
+# # GCC 4.4
+# - env: COMPILER=g++-4.4
+# compiler: gcc
+# addons: &gcc44
+# apt:
+# packages: ["g++-4.4", "valgrind", "g++-4.4-multilib", "libc6-dbg", "libc6-dbg:i386"]
# sources: *apt_sources
-
- # Clang 3.4
- - env: COMPILER=clang++ HAS_ASAN_64=true HAS_UBSAN_64=true
- addons: &clang
- apt:
- packages: [ "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # Clang 3.5
- - env: COMPILER=clang++-3.5 HAS_ASAN_64=true HAS_UBSAN_64=true
- addons: &clang35
- apt:
- packages: ["clang-3.5", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # Clang 3.6
- - env: COMPILER=clang++-3.6 HAS_ASAN_64=true HAS_UBSAN_64=true
- addons: &clang36
- apt:
- packages: ["clang-3.6", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # Clang 3.7
- - env: COMPILER=clang++-3.7 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757
- addons: &clang37
- apt:
- packages: ["clang-3.7", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # Clang 3.8
- - env: COMPILER=clang++-3.8 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757
- addons: &clang38
- apt:
- packages: ["clang-3.8", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
- sources: *apt_sources
-
- # Xcode 6.1 Clang
- - env: COMPILER=clang++
- os: osx
-
- # Xcode 6.2 Clang
- - env: COMPILER=clang++
- osx_image: beta-xcode6.2
- os: osx
-
- # Xcode 6.3 Clang
- - env: COMPILER=clang++
- osx_image: beta-xcode6.3
- os: osx
-
- # Xcode 6.4 Clang
- - env: COMPILER=clang++
- osx_image: xcode6.4
- os: osx
-
- # Xcode 7 Clang
- - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
- osx_image: xcode7
- os: osx
-
- # Xcode 7.1 Clang
- - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
- osx_image: xcode7.1
- os: osx
-
- # Xcode 7.2 Clang
- - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
- osx_image: xcode7.2
- os: osx
-
- # Xcode 7.3 Clang
- - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
- osx_image: xcode7.3
- os: osx
-
- # OSX GCC 4.4
- - env: COMPILER=g++-4.4
- compiler: gcc
- os: osx
-
- # OSX GCC 4.5
- - env: COMPILER=g++-4.5
- compiler: gcc
- os: osx
-
- # OSX GCC 4.6
- - env: COMPILER=g++-4.6
- compiler: gcc
- os: osx
-
- # OSX GCC 4.7
- - env: COMPILER=g++-4.7
- compiler: gcc
- os: osx
-
- # OSX GCC 4.8
- - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true
- compiler: gcc
- os: osx
-
- # OSX GCC 4.9
- - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
- compiler: gcc
- os: osx
-
- # OSX GCC 5
- - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
- compiler: gcc
- os: osx
-
-# # OSX GCC 6
-# - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+#
+# # GCC 4.5
+# - env: COMPILER=g++-4.5
+# compiler: gcc
+# addons: &gcc45
+# apt:
+# packages: ["g++-4.5", "valgrind", "g++-4.5-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # GCC 4.6
+# - env: COMPILER=g++-4.6
+# compiler: gcc
+# addons: &gcc46
+# apt:
+# packages: [ "valgrind", "g++-4.6-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # GCC 4.7
+# - env: COMPILER=g++-4.7
+# compiler: gcc
+# addons: &gcc47
+# apt:
+# packages: ["g++-4.7", "valgrind", "g++-4.7-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # GCC 4.8
+# - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true
+# compiler: gcc
+# addons: &gcc48
+# apt:
+# packages: ["g++-4.8", "valgrind", "g++-4.8-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # GCC 4.9
+# - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+# compiler: gcc
+# addons: &gcc49
+# apt:
+# packages: ["g++-4.9", "valgrind", "g++-4.9-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # GCC 5
+# - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+# compiler: gcc
+# addons: &gcc5
+# apt:
+# packages: ["g++-5", "valgrind", "g++-5-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+## # GCC 6
+## # released on 2016.04.27
+## # wait for it to enter the whitelist - https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
+## # also with homebrew under OSX!!!
+## - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+## compiler: gcc
+## addons: &gcc6
+## apt:
+## packages: ["g++-6", "valgrind", "g++-6-multilib", "libc6-dbg", "libc6-dbg:i386"]
+## sources: *apt_sources
+#
+# # Clang 3.4
+# - env: COMPILER=clang++ HAS_ASAN_64=true HAS_UBSAN_64=true
+# addons: &clang
+# apt:
+# packages: [ "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # Clang 3.5
+# - env: COMPILER=clang++-3.5 HAS_ASAN_64=true HAS_UBSAN_64=true
+# addons: &clang35
+# apt:
+# packages: ["clang-3.5", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # Clang 3.6
+# - env: COMPILER=clang++-3.6 HAS_ASAN_64=true HAS_UBSAN_64=true
+# addons: &clang36
+# apt:
+# packages: ["clang-3.6", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # Clang 3.7
+# - env: COMPILER=clang++-3.7 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757
+# addons: &clang37
+# apt:
+# packages: ["clang-3.7", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # Clang 3.8
+# - env: COMPILER=clang++-3.8 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757
+# addons: &clang38
+# apt:
+# packages: ["clang-3.8", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+# sources: *apt_sources
+#
+# # Xcode 6.1 Clang
+# - env: COMPILER=clang++
+# os: osx
+#
+# # Xcode 6.2 Clang
+# - env: COMPILER=clang++
+# osx_image: beta-xcode6.2
+# os: osx
+#
+# # Xcode 6.3 Clang
+# - env: COMPILER=clang++
+# osx_image: beta-xcode6.3
+# os: osx
+#
+# # Xcode 6.4 Clang
+# - env: COMPILER=clang++
+# osx_image: xcode6.4
+# os: osx
+#
+# # Xcode 7 Clang
+# - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
+# osx_image: xcode7
+# os: osx
+#
+# # Xcode 7.1 Clang
+# - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
+# osx_image: xcode7.1
+# os: osx
+#
+# # Xcode 7.2 Clang
+# - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
+# osx_image: xcode7.2
+# os: osx
+#
+# # Xcode 7.3 Clang
+# - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
+# osx_image: xcode7.3
+# os: osx
+#
+# # OSX GCC 4.4
+# - env: COMPILER=g++-4.4
# compiler: gcc
# os: osx
-
- # OSX LLVM-GCC
- - env: COMPILER=g++
- compiler: gcc
- os: osx
-
-before_install:
- - |
- 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
- # gcc
- if [[ "${COMPILER}" = "g++-4.4" ]]; then
- brew install gcc44
- fi
- if [[ "${COMPILER}" = "g++-4.5" ]]; then
- brew install gcc45
- fi
- if [[ "${COMPILER}" = "g++-4.6" ]]; then
- brew install gcc46
- fi
- if [[ "${COMPILER}" = "g++-4.7" ]]; then
- brew install gcc47
- fi
- if [[ "${COMPILER}" = "g++-4.8" ]]; then
- brew outdated gcc48 || brew upgrade gcc48
- fi
- if [[ "${COMPILER}" = "g++-4.9" ]]; then
- brew install gcc49
- fi
- if [[ "${COMPILER}" = "g++-5" ]]; then
- brew install gcc5
- fi
- if [[ "${COMPILER}" = "g++-6" ]]; then
- brew install gcc6
- fi
- fi
- - git submodule update --init --recursive
-
-install:
- - ${CXX} --version
-# - export CXX="ccache ${COMPILER}"
- - export CXX="${COMPILER}"
- - ${CXX} --version
-# - ccache -s
-
-script:
- # coverage - do not continue with other build configurations after that
- - |
- if [[ "${COVERALLS_SERVICE_NAME}" = "travis-ci" ]]; then
- cmake ${CMAKE_OPTIONS_GLOBAL} -DCMAKE_BUILD_TYPE=Debug .
- make -j2 && make coveralls
- exit
- fi
-
- # initial run with options
- - cmake ${CMAKE_OPTIONS_GLOBAL} ${CMAKE_OPTIONS} .
-
- # debug x86
- - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32" .
- - make clean && make -j2
- # valgrind for 32bit under osx fails
- - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi
-# - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
- # debug x64
- - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64" .
- - make clean && make -j2
- - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
-# - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
- # release x86
- - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32" .
- - make clean && make -j2
- # valgrind for 32bit under osx fails
- - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi
-# - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
- # release x64
- - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64" .
- - make clean && make -j2
- - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
-# - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
-
- # sanitizers - again 32/64 bit Debug/Release configs through address/undefined sanitizers
- - cmake -DTEST_MODE=NORMAL .
-# - cmake -DTEST_MODE=COMPARE .
- # on separate commands because when something fails I want to see which one exactly
- - if [[ "${HAS_ASAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_ASAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_ASAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_ASAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
- - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
-
-# - ccache -s
-
-after_script:
- - cat compile_commands.json
+#
+# # OSX GCC 4.5
+# - env: COMPILER=g++-4.5
+# compiler: gcc
+# os: osx
+#
+# # OSX GCC 4.6
+# - env: COMPILER=g++-4.6
+# compiler: gcc
+# os: osx
+#
+# # OSX GCC 4.7
+# - env: COMPILER=g++-4.7
+# compiler: gcc
+# os: osx
+#
+# # OSX GCC 4.8
+# - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true
+# compiler: gcc
+# os: osx
+#
+# # OSX GCC 4.9
+# - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+# compiler: gcc
+# os: osx
+#
+# # OSX GCC 5
+# - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+# compiler: gcc
+# os: osx
+#
+## # OSX GCC 6
+## - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+## compiler: gcc
+## os: osx
+#
+# # OSX LLVM-GCC
+# - env: COMPILER=g++
+# compiler: gcc
+# os: osx
+#
+#before_install:
+# - |
+# 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
+# # gcc
+# if [[ "${COMPILER}" = "g++-4.4" ]]; then
+# brew install gcc44
+# fi
+# if [[ "${COMPILER}" = "g++-4.5" ]]; then
+# brew install gcc45
+# fi
+# if [[ "${COMPILER}" = "g++-4.6" ]]; then
+# brew install gcc46
+# fi
+# if [[ "${COMPILER}" = "g++-4.7" ]]; then
+# brew install gcc47
+# fi
+# if [[ "${COMPILER}" = "g++-4.8" ]]; then
+# brew outdated gcc48 || brew upgrade gcc48
+# fi
+# if [[ "${COMPILER}" = "g++-4.9" ]]; then
+# brew install gcc49
+# fi
+# if [[ "${COMPILER}" = "g++-5" ]]; then
+# brew install gcc5
+# fi
+# if [[ "${COMPILER}" = "g++-6" ]]; then
+# brew install gcc6
+# fi
+# fi
+# - git submodule update --init --recursive
+#
+#install:
+# - ${CXX} --version
+## - export CXX="ccache ${COMPILER}"
+# - export CXX="${COMPILER}"
+# - ${CXX} --version
+## - ccache -s
+#
+#script:
+# # coverage - do not continue with other build configurations after that
+# - |
+# if [[ "${COVERALLS_SERVICE_NAME}" = "travis-ci" ]]; then
+# cmake ${CMAKE_OPTIONS_GLOBAL} -DCMAKE_BUILD_TYPE=Debug .
+# make -j2 && make coveralls
+# exit
+# fi
+#
+# # initial run with options
+# - cmake ${CMAKE_OPTIONS_GLOBAL} ${CMAKE_OPTIONS} .
+#
+# # debug x86
+# - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32" .
+# - make clean && make -j2
+# # valgrind for 32bit under osx fails
+# - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi
+## - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
+# # debug x64
+# - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64" .
+# - make clean && make -j2
+# - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
+## - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
+# # release x86
+# - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32" .
+# - make clean && make -j2
+# # valgrind for 32bit under osx fails
+# - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi
+## - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
+# # release x64
+# - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64" .
+# - make clean && make -j2
+# - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
+## - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
+#
+# # sanitizers - again 32/64 bit Debug/Release configs through address/undefined sanitizers
+# - cmake -DTEST_MODE=NORMAL .
+## - cmake -DTEST_MODE=COMPARE .
+# # on separate commands because when something fails I want to see which one exactly
+# - if [[ "${HAS_ASAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_ASAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_ASAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_ASAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
+# - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
+#
+## - ccache -s
+#
+#after_script:
+# - cat compile_commands.json
+#
\ No newline at end of file
diff --git a/appveyor.yml b/appveyor.yml
index 9e0b289..ab1e0fb 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,117 +1,118 @@
-# http://www.appveyor.com/docs/appveyor-yml
-
-notifications:
- - provider: Email
- to:
- - vik.kirilov@gmail.com
- on_build_status_changed: true
- on_build_failure: true
- on_build_success: false
- # gitter
- - provider: Webhook
- url: https://webhooks.gitter.im/e/3a78202a235c0325e516
- on_build_status_changed: true
- on_build_failure: true
- on_build_success: false
-
-clone_depth: 5
-branches:
- except:
- - gh-pages
- - coverity_scan
-
-matrix:
- fast_finish: false
-
-environment:
- matrix:
- - platform: x86
- configuration: Debug
- arch: "Win32"
- VS_GEN: "Visual Studio 9 2008"
- - platform: x86
- configuration: Release
- arch: "Win32"
- VS_GEN: "Visual Studio 9 2008"
-## THE FOLLOWING ARE DISABLED BECAUSE CMAKE CANNOT FIND THE COMPILER FOR Win64
+## http://www.appveyor.com/docs/appveyor-yml
+#
+#notifications:
+# - provider: Email
+# to:
+# - vik.kirilov@gmail.com
+# on_build_status_changed: true
+# on_build_failure: true
+# on_build_success: false
+# # gitter
+# - provider: Webhook
+# url: https://webhooks.gitter.im/e/3a78202a235c0325e516
+# on_build_status_changed: true
+# on_build_failure: true
+# on_build_success: false
+#
+#clone_depth: 5
+#branches:
+# except:
+# - gh-pages
+# - coverity_scan
+#
+#matrix:
+# fast_finish: false
+#
+#environment:
+# matrix:
+# - platform: x86
+# configuration: Debug
+# arch: "Win32"
+# VS_GEN: "Visual Studio 9 2008"
+# - platform: x86
+# configuration: Release
+# arch: "Win32"
+# VS_GEN: "Visual Studio 9 2008"
+### THE FOLLOWING ARE DISABLED BECAUSE CMAKE CANNOT FIND THE COMPILER FOR Win64
+## - platform: x64
+## configuration: Debug
+## arch: "x64"
+## VS_GEN: "Visual Studio 9 2008 Win64"
+## - platform: x64
+## configuration: Release
+## arch: "x64"
+## VS_GEN: "Visual Studio 9 2008 Win64"
+# - platform: x86
+# configuration: Debug
+# arch: "Win32"
+# VS_GEN: "Visual Studio 10 2010"
+# - platform: x86
+# configuration: Release
+# arch: "Win32"
+# VS_GEN: "Visual Studio 10 2010"
# - platform: x64
# configuration: Debug
# arch: "x64"
-# VS_GEN: "Visual Studio 9 2008 Win64"
+# VS_GEN: "Visual Studio 10 2010 Win64"
# - platform: x64
# configuration: Release
# arch: "x64"
-# VS_GEN: "Visual Studio 9 2008 Win64"
- - platform: x86
- configuration: Debug
- arch: "Win32"
- VS_GEN: "Visual Studio 10 2010"
- - platform: x86
- configuration: Release
- arch: "Win32"
- VS_GEN: "Visual Studio 10 2010"
- - platform: x64
- configuration: Debug
- arch: "x64"
- VS_GEN: "Visual Studio 10 2010 Win64"
- - platform: x64
- configuration: Release
- arch: "x64"
- VS_GEN: "Visual Studio 10 2010 Win64"
- - platform: x86
- configuration: Debug
- arch: "Win32"
- VS_GEN: "Visual Studio 11 2012"
- - platform: x86
- configuration: Release
- arch: "Win32"
- VS_GEN: "Visual Studio 11 2012"
- - platform: x64
- configuration: Debug
- arch: "x64"
- VS_GEN: "Visual Studio 11 2012 Win64"
- - platform: x64
- configuration: Release
- arch: "x64"
- VS_GEN: "Visual Studio 11 2012 Win64"
- - platform: x86
- configuration: Debug
- arch: "Win32"
- VS_GEN: "Visual Studio 12 2013"
- - platform: x86
- configuration: Release
- arch: "Win32"
- VS_GEN: "Visual Studio 12 2013"
- - platform: x64
- configuration: Debug
- arch: "x64"
- VS_GEN: "Visual Studio 12 2013 Win64"
- - platform: x64
- configuration: Release
- arch: "x64"
- VS_GEN: "Visual Studio 12 2013 Win64"
- - platform: x86
- configuration: Debug
- arch: "Win32"
- VS_GEN: "Visual Studio 14 2015"
- - platform: x86
- configuration: Release
- arch: "Win32"
- VS_GEN: "Visual Studio 14 2015"
- - platform: x64
- configuration: Debug
- arch: "x64"
- VS_GEN: "Visual Studio 14 2015 Win64"
- - platform: x64
- configuration: Release
- arch: "x64"
- VS_GEN: "Visual Studio 14 2015 Win64"
-
-before_build:
- - cmake . -G "%VS_GEN%"
-build_script:
- - msbuild all.sln /p:Configuration=%Configuration%;Platform=%arch% /maxcpucount
-test_script:
-# temporarily disabled - output will change often so no need for this yet
-# - cmake . -DTEST_MODE=COMPARE
- - ctest -C %configuration% --output-on-failure
+# VS_GEN: "Visual Studio 10 2010 Win64"
+# - platform: x86
+# configuration: Debug
+# arch: "Win32"
+# VS_GEN: "Visual Studio 11 2012"
+# - platform: x86
+# configuration: Release
+# arch: "Win32"
+# VS_GEN: "Visual Studio 11 2012"
+# - platform: x64
+# configuration: Debug
+# arch: "x64"
+# VS_GEN: "Visual Studio 11 2012 Win64"
+# - platform: x64
+# configuration: Release
+# arch: "x64"
+# VS_GEN: "Visual Studio 11 2012 Win64"
+# - platform: x86
+# configuration: Debug
+# arch: "Win32"
+# VS_GEN: "Visual Studio 12 2013"
+# - platform: x86
+# configuration: Release
+# arch: "Win32"
+# VS_GEN: "Visual Studio 12 2013"
+# - platform: x64
+# configuration: Debug
+# arch: "x64"
+# VS_GEN: "Visual Studio 12 2013 Win64"
+# - platform: x64
+# configuration: Release
+# arch: "x64"
+# VS_GEN: "Visual Studio 12 2013 Win64"
+# - platform: x86
+# configuration: Debug
+# arch: "Win32"
+# VS_GEN: "Visual Studio 14 2015"
+# - platform: x86
+# configuration: Release
+# arch: "Win32"
+# VS_GEN: "Visual Studio 14 2015"
+# - platform: x64
+# configuration: Debug
+# arch: "x64"
+# VS_GEN: "Visual Studio 14 2015 Win64"
+# - platform: x64
+# configuration: Release
+# arch: "x64"
+# VS_GEN: "Visual Studio 14 2015 Win64"
+#
+#before_build:
+# - cmake . -G "%VS_GEN%"
+#build_script:
+# - msbuild all.sln /p:Configuration=%Configuration%;Platform=%arch% /maxcpucount
+#test_script:
+## temporarily disabled - output will change often so no need for this yet
+## - cmake . -DTEST_MODE=COMPARE
+# - ctest -C %configuration% --output-on-failure
+#
\ No newline at end of file
diff --git a/doc/markdown/commandline.md b/doc/markdown/commandline.md
index f5eaa00..1dab225 100644
--- a/doc/markdown/commandline.md
+++ b/doc/markdown/commandline.md
@@ -1,7 +1,138 @@
## Command line
-- document how to use spaces for filters in the comma separated list (using "")
-
-what implies no-run
+**doctest** works quite nicely without any command line options at all - but for greater control use the following flags/options:
+All the flags/options also come with a prefixed version (with ```-dt-``` at the front) - for example ```-rand-seed=<int>``` can be used also with ```-dt-rand-seed=<int>``` or ```-dt-rs=<int>```.
+
+Also all the unprefixed versions listed here can be disabled with the [**```DOCTEST_CONFIG_NO_UNPREFIXED_OPTIONS```**](configuration.md) define.
+
+This is done for easy interoperability with client command line option handling when the testing framework is integrated with a client codebase - all **doctest** related flags/options can be prefixed so there are no clashes and so that the user can exclude everything starting with ```-dt-``` from their option parsing.
+
+Query flags - after the result is printed the program quits without executing any test cases (and if the framework is integrated into a client codebase and supplying it's own ```main()``` entry point - the program should check the result of ```doctest::Context::shouldExit()``` after calling ```doctest::Context::run()``` and should exit - this is left up to the user).
+
+<table><tr><td>
+Query Flags
+</td><td>
+Description
+</td></tr><tr><td>
+```-?, --help, -h```
+</td><td>
+Prints a help message listing all these flags/options
+</td></tr><tr><td>
+```-v, --version```
+</td><td>
+Prints the version of the **doctest** framework
+</td></tr><tr><td>
+```-c, --count```
+</td><td>
+Prints the number of test cases matching the current filters (see below)
+</td></tr><tr><td>
+```-ltc, --list-test-cases```
+</td><td>
+Lists all test cases by name which match the current filters (see below)
+</td></tr><tr><td>
+```-lts, --list-test-suites```
+</td><td>
+Lists all test suites by name which have at least one test case matching the current filters (see below)
+</td></tr></table>
+
+```int```/```string``` options - they require a value after the ```=``` sign - without spaces! For example: ```--order-by=rand```.
+
+Filters use wildcards for matching values - where ```*``` means "match any sequence" and ```?``` means "match any one character".
+
+<table><tr><td>
+Int/String Options
+</td><td>
+Description
+</td></tr><tr><td>
+```-tc, --test-case=<filters>```
+</td><td>
+Filters test cases based on their name. By default all test cases match but if a value is given to this filter like ```--test-case=*math*,*sound*``` then only test cases who match atleast one of the patterns in the comma-separated list with wildcards will get executed/counted/listed.
+</td></tr><tr><td>
+```-tce, --test-case-exclude=<filters>```
+</td><td>
+same as the ```-test-case=<filters>``` option but if any of the patterns in the comma-separated list of values matches - then the test case is skipped.
+</td></tr><tr><td>
+```-sf, --source-file=<filters>```
+</td><td>
+filters tests by their file
+</td></tr><tr><td>
+```-sfe, --source-file-exclude=<filters>```
+</td><td>
+filters OUT tests by their file
+</td></tr><tr><td>
+```-ts, --test-suite=<filters>```
+</td><td>
+filters tests by their test suite
+</td></tr><tr><td>
+```-tse, --test-suite-exclude=<filters>```
+</td><td>
+filters OUT tests by their test suite
+</td></tr><tr><td>
+```-ob, --order-by=<string>```
+</td><td>
+how the tests should be ordered <string> - by [file/suite/name/rand]
+</td></tr><tr><td>
+```-rs, --rand-seed=<int>```
+</td><td>
+seed for random ordering
+</td></tr><tr><td>
+```-f, --first=<int>```
+</td><td>
+the first test passing the filters to execute - for range-based execution
+</td></tr><tr><td>
+```-l, --last=<int>```
+</td><td>
+the last test passing the filters to execute - for range-based execution
+</td></tr><tr><td>
+```-aa, --abort-after=<int>```
+</td><td>
+stop after <int> failed assertions
+</td></tr></table>
+
+<table><tr><td>
+Bool Options
+</td><td>
+Description
+</td></tr><tr><td>
+```-s, --success=<bool>```
+</td><td>
+include successful assertions in output
+</td></tr><tr><td>
+```-cs, --case-sensitive=<bool>```
+</td><td>
+filters being treated as case sensitive
+</td></tr><tr><td>
+```-e, --exit=<bool>```
+</td><td>
+exits after the tests finish
+</td></tr><tr><td>
+```-no, --no-overrides=<bool>```
+</td><td>
+disables procedural overrides of options
+</td></tr><tr><td>
+```-nt, --no-throw=<bool>```
+</td><td>
+skips exceptions-related assert checks
+</td></tr><tr><td>
+```-ne, --no-exitcode=<bool>```
+</td><td>
+returns (or exits) always with success
+</td></tr><tr><td>
+```-nr, --no-run=<bool>```
+</td><td>
+skips all runtime doctest operations
+</td></tr><tr><td>
+```-nc, --no-colors=<bool>```
+</td><td>
+disables colors in output
+</td></tr><tr><td>
+```-nb, --no-breaks=<bool>```
+</td><td>
+disables breakpoints in debuggers
+</td></tr><tr><td>
+```-npf, --no-path-filenames=<bool>```
+</td><td>
+only filenames and no paths in output
+</td></tr></table>
diff --git a/doc/markdown/features.md b/doc/markdown/features.md
index f80cac5..66ea57e 100644
--- a/doc/markdown/features.md
+++ b/doc/markdown/features.md
@@ -114,7 +114,8 @@
- pool allocator for the ```String``` class - currently very unoptimized
- ability to specify ASC/DESC for the order option
- command line error handling/reporting
-- utf8? not sure if this should be here
+- utf8? not sure if this should be here
+- print a warning when no assertion is encountered in a test case
- hierarchical test suites - using a stack for the pushed ones - should be easy
- put everything from the ```detail``` namespace also in a nested anonymous namespace to make them with internal linkage
- ability to re-run only newly compiled tests based on time stamps using ```__DATE__``` and ```__TIME__``` - stored in some file