Add ASAN and UBSAN builders to travis for both GCC and Clang.
This patch adds new builders that test against GCC 6 and Clang 3.8 respectivly.
They also enable both address and undefined sanitizer. MSAN currently won't work
since it requires a sanitized STL.
diff --git a/.travis.yml b/.travis.yml
index 6468c2c..d4663e4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,15 +7,35 @@
matrix:
include:
- compiler: gcc
- env: COMPILER=g++ STD=c++11 BUILD_TYPE=Coverage
+ env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Coverage
- compiler: gcc
- env: COMPILER=g++ STD=c++11 BUILD_TYPE=Debug
+ env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Debug
- compiler: gcc
- env: COMPILER=g++ STD=c++11 BUILD_TYPE=Release
+ env: COMPILER=g++ C_COMPILER=gcc BUILD_TYPE=Release
+ - compiler: gcc
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - g++-6
+ env:
+ - COMPILER=g++-6 C_COMPILER=gcc-6 BUILD_TYPE=Debug
+ - EXTRA_FLAGS="-fno-omit-frame-pointer -g -O2 -fsanitize=undefined,address -fuse-ld=gold"
- compiler: clang
- env: COMPILER=clang++ STD=c++11 BUILD_TYPE=Debug
+ env: COMPILER=clang++ C_COMPILER=clang BUILD_TYPE=Debug
- compiler: clang
- env: COMPILER=clang++ STD=c++11 BUILD_TYPE=Release
+ env: COMPILER=clang++ C_COMPILER=clang BUILD_TYPE=Release
+ - compiler: clang
+ addons:
+ apt:
+ packages:
+ clang-3.8
+ env:
+ - COMPILER=clang++-3.8 C_COMPILER=clang-3.8 BUILD_TYPE=Debug
+ - EXTRA_FLAGS="-fno-omit-frame-pointer -g -O2 -fsanitize=undefined,address -fno-sanitize-recover=all"
+ - UBSAN_OPTIONS=print_stacktrace=1
+
before_script:
- mkdir build && cd build
@@ -28,7 +48,7 @@
fi
script:
- - cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_CXX_FLAGS="-std=${STD}"
+ - cmake .. -DCMAKE_C_COMPILER=${C_COMPILER} -DCMAKE_CXX_COMPILER=${COMPILER} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_CXX_FLAGS="${EXTRA_FLAGS}"
- make
- make CTEST_OUTPUT_ON_FAILURE=1 test
diff --git a/test/reporter_output_test.cc b/test/reporter_output_test.cc
index 0439fa6..e580008 100644
--- a/test/reporter_output_test.cc
+++ b/test/reporter_output_test.cc
@@ -114,7 +114,9 @@
return std::string(std::move(f)) + "[ ]+" + join(std::forward<Args>(args)...);
}
-std::string dec_re = "[0-9]+\\.[0-9]+";
+
+
+std::string dec_re = "[0-9]*[.]?[0-9]+([eE][-+][0-9]+)?";
} // end namespace