mirror of
https://github.com/catchorg/Catch2.git
synced 2025-09-16 02:05:38 +02:00
Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
fc7f0a02b8 | ||
![]() |
211b330346 | ||
![]() |
d36fe214a6 | ||
![]() |
a34c053f0a | ||
![]() |
4cdb203ec3 | ||
![]() |
8014bf1124 | ||
![]() |
49d87cf182 | ||
![]() |
eedcc82d31 | ||
![]() |
8e8259091c | ||
![]() |
7869e5b007 | ||
![]() |
a49af4648c | ||
![]() |
417b2bcf5c | ||
![]() |
8f0feaa6d2 | ||
![]() |
b95163bd3a | ||
![]() |
2809be87cc | ||
![]() |
ac369b7b83 | ||
![]() |
1aa3e4abfa | ||
![]() |
e5c5a636a9 | ||
![]() |
2bf30e9e5a | ||
![]() |
b591cb9a03 | ||
![]() |
714d01c07c |
112
.travis.yml
112
.travis.yml
@@ -11,25 +11,25 @@ matrix:
|
|||||||
apt:
|
apt:
|
||||||
sources: ['llvm-toolchain-precise', 'ubuntu-toolchain-r-test']
|
sources: ['llvm-toolchain-precise', 'ubuntu-toolchain-r-test']
|
||||||
packages: ['clang']
|
packages: ['clang']
|
||||||
env: COMPILER='clang++' BUILD_TYPE='Release' CPP11=0
|
env: COMPILER='clang++' BUILD_TYPE='Release'
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang
|
compiler: clang
|
||||||
addons: *clang34
|
addons: *clang34
|
||||||
env: COMPILER='clang++' BUILD_TYPE='Debug' CPP11=0
|
env: COMPILER='clang++' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang
|
compiler: clang
|
||||||
addons: &clang35
|
addons: &clang35
|
||||||
apt:
|
apt:
|
||||||
sources: ['llvm-toolchain-precise-3.5', 'ubuntu-toolchain-r-test']
|
sources: ['llvm-toolchain-precise-3.5', 'ubuntu-toolchain-r-test']
|
||||||
packages: ['clang-3.5']
|
packages: ['clang-3.5']
|
||||||
env: COMPILER='clang++-3.5' BUILD_TYPE='Release' CPP11=0
|
env: COMPILER='clang++-3.5' BUILD_TYPE='Release'
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang
|
compiler: clang
|
||||||
addons: *clang35
|
addons: *clang35
|
||||||
env: COMPILER='clang++-3.5' BUILD_TYPE='Debug' CPP11=0
|
env: COMPILER='clang++-3.5' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
@@ -38,12 +38,12 @@ matrix:
|
|||||||
apt:
|
apt:
|
||||||
sources: ['llvm-toolchain-precise-3.6', 'ubuntu-toolchain-r-test']
|
sources: ['llvm-toolchain-precise-3.6', 'ubuntu-toolchain-r-test']
|
||||||
packages: ['clang-3.6']
|
packages: ['clang-3.6']
|
||||||
env: COMPILER='clang++-3.6' BUILD_TYPE='Release' CPP11=0
|
env: COMPILER='clang++-3.6' BUILD_TYPE='Release'
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang
|
compiler: clang
|
||||||
addons: *clang36
|
addons: *clang36
|
||||||
env: COMPILER='clang++-3.6' BUILD_TYPE='Debug' CPP11=0
|
env: COMPILER='clang++-3.6' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
@@ -52,12 +52,12 @@ matrix:
|
|||||||
apt:
|
apt:
|
||||||
sources: ['llvm-toolchain-precise-3.7', 'ubuntu-toolchain-r-test']
|
sources: ['llvm-toolchain-precise-3.7', 'ubuntu-toolchain-r-test']
|
||||||
packages: ['clang-3.7']
|
packages: ['clang-3.7']
|
||||||
env: COMPILER='clang++-3.7' BUILD_TYPE='Release' CPP11=0
|
env: COMPILER='clang++-3.7' BUILD_TYPE='Release'
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang
|
compiler: clang
|
||||||
addons: *clang37
|
addons: *clang37
|
||||||
env: COMPILER='clang++-3.7' BUILD_TYPE='Debug' CPP11=0
|
env: COMPILER='clang++-3.7' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
@@ -66,12 +66,12 @@ matrix:
|
|||||||
apt:
|
apt:
|
||||||
sources: ['llvm-toolchain-precise-3.8', 'ubuntu-toolchain-r-test']
|
sources: ['llvm-toolchain-precise-3.8', 'ubuntu-toolchain-r-test']
|
||||||
packages: ['clang-3.8']
|
packages: ['clang-3.8']
|
||||||
env: COMPILER='clang++-3.8' BUILD_TYPE='Release' CPP11=0
|
env: COMPILER='clang++-3.8' BUILD_TYPE='Release'
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang
|
compiler: clang
|
||||||
addons: *clang38
|
addons: *clang38
|
||||||
env: COMPILER='clang++-3.8' BUILD_TYPE='Debug' CPP11=0
|
env: COMPILER='clang++-3.8' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
|
|
||||||
# 2/ Linux GCC Builds
|
# 2/ Linux GCC Builds
|
||||||
@@ -81,12 +81,12 @@ matrix:
|
|||||||
apt:
|
apt:
|
||||||
sources: ['ubuntu-toolchain-r-test']
|
sources: ['ubuntu-toolchain-r-test']
|
||||||
packages: ['g++-4.4']
|
packages: ['g++-4.4']
|
||||||
env: COMPILER='g++-4.4' BUILD_TYPE='Release' CPP11=0
|
env: COMPILER='g++-4.4' BUILD_TYPE='Release'
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
addons: *gcc44
|
addons: *gcc44
|
||||||
env: COMPILER='g++-4.4' BUILD_TYPE='Debug' CPP11=0
|
env: COMPILER='g++-4.4' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
@@ -95,12 +95,12 @@ matrix:
|
|||||||
apt:
|
apt:
|
||||||
sources: ['ubuntu-toolchain-r-test']
|
sources: ['ubuntu-toolchain-r-test']
|
||||||
packages: ['g++-4.7']
|
packages: ['g++-4.7']
|
||||||
env: COMPILER='g++-4.7' BUILD_TYPE='Release' CPP11=0
|
env: COMPILER='g++-4.7' BUILD_TYPE='Release'
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
addons: *gcc47
|
addons: *gcc47
|
||||||
env: COMPILER='g++-4.7' BUILD_TYPE='Debug' CPP11=0
|
env: COMPILER='g++-4.7' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
@@ -109,12 +109,12 @@ matrix:
|
|||||||
apt:
|
apt:
|
||||||
sources: ['ubuntu-toolchain-r-test']
|
sources: ['ubuntu-toolchain-r-test']
|
||||||
packages: ['g++-4.8']
|
packages: ['g++-4.8']
|
||||||
env: COMPILER='g++-4.8' BUILD_TYPE='Release' CPP11=0
|
env: COMPILER='g++-4.8' BUILD_TYPE='Release'
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
addons: *gcc48
|
addons: *gcc48
|
||||||
env: COMPILER='g++-4.8' BUILD_TYPE='Debug' CPP11=0
|
env: COMPILER='g++-4.8' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
@@ -123,12 +123,12 @@ matrix:
|
|||||||
apt:
|
apt:
|
||||||
sources: ['ubuntu-toolchain-r-test']
|
sources: ['ubuntu-toolchain-r-test']
|
||||||
packages: ['g++-4.9']
|
packages: ['g++-4.9']
|
||||||
env: COMPILER='g++-4.9' BUILD_TYPE='Release' CPP11=0
|
env: COMPILER='g++-4.9' BUILD_TYPE='Release'
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
addons: *gcc49
|
addons: *gcc49
|
||||||
env: COMPILER='g++-4.9' BUILD_TYPE='Debug' CPP11=0
|
env: COMPILER='g++-4.9' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
@@ -137,12 +137,12 @@ matrix:
|
|||||||
apt:
|
apt:
|
||||||
sources: ['ubuntu-toolchain-r-test']
|
sources: ['ubuntu-toolchain-r-test']
|
||||||
packages: ['g++-5']
|
packages: ['g++-5']
|
||||||
env: COMPILER='g++-5' BUILD_TYPE='Release' CPP11=0
|
env: COMPILER='g++-5' BUILD_TYPE='Release'
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
addons: *gcc5
|
addons: *gcc5
|
||||||
env: COMPILER='g++-5' BUILD_TYPE='Debug' CPP11=0
|
env: COMPILER='g++-5' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
@@ -151,20 +151,17 @@ matrix:
|
|||||||
apt:
|
apt:
|
||||||
sources: ['ubuntu-toolchain-r-test']
|
sources: ['ubuntu-toolchain-r-test']
|
||||||
packages: ['g++-6']
|
packages: ['g++-6']
|
||||||
env: COMPILER='g++-6' BUILD_TYPE='Release' CPP11=0
|
env: COMPILER='g++-6' BUILD_TYPE='Release'
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
addons: *gcc6
|
addons: *gcc6
|
||||||
env: COMPILER='g++-6' BUILD_TYPE='Debug' CPP11=0
|
env: COMPILER='g++-6' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
# 3a/ Linux C++11 GCC builds
|
# 3a/ Linux C++11 GCC builds
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: gcc
|
compiler: gcc
|
||||||
addons: &gcc48
|
addons: *gcc48
|
||||||
apt:
|
|
||||||
sources: ['ubuntu-toolchain-r-test']
|
|
||||||
packages: ['g++-4.8']
|
|
||||||
env: COMPILER='g++-4.8' BUILD_TYPE='Release' CPP11=1
|
env: COMPILER='g++-4.8' BUILD_TYPE='Release' CPP11=1
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
@@ -175,10 +172,7 @@ matrix:
|
|||||||
# 3b/ Linux C++11 Clang builds
|
# 3b/ Linux C++11 Clang builds
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang
|
compiler: clang
|
||||||
addons: &clang38
|
addons: *clang38
|
||||||
apt:
|
|
||||||
sources: ['llvm-toolchain-precise-3.8', 'ubuntu-toolchain-r-test']
|
|
||||||
packages: ['clang-3.8']
|
|
||||||
env: COMPILER='clang++-3.8' BUILD_TYPE='Release' CPP11=1
|
env: COMPILER='clang++-3.8' BUILD_TYPE='Release' CPP11=1
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
@@ -186,27 +180,69 @@ matrix:
|
|||||||
addons: *clang38
|
addons: *clang38
|
||||||
env: COMPILER='clang++-3.8' BUILD_TYPE='Debug' CPP11=1
|
env: COMPILER='clang++-3.8' BUILD_TYPE='Debug' CPP11=1
|
||||||
|
|
||||||
|
# 4a/ Linux C++14 GCC builds
|
||||||
|
- os: linux
|
||||||
|
compiler: gcc
|
||||||
|
addons: *gcc6
|
||||||
|
env: COMPILER='g++-6' BUILD_TYPE='Release' CPP14=1
|
||||||
|
|
||||||
# 4/ OSX Clang Builds
|
- os: linux
|
||||||
|
compiler: gcc
|
||||||
|
addons: *gcc6
|
||||||
|
env: COMPILER='g++-6' BUILD_TYPE='Debug' CPP14=1
|
||||||
|
|
||||||
|
# 4b/ Linux C++14 Clang builds
|
||||||
|
- os: linux
|
||||||
|
compiler: clang
|
||||||
|
addons: *clang38
|
||||||
|
env: COMPILER='clang++-3.8' BUILD_TYPE='Release' CPP14=1
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
compiler: clang
|
||||||
|
addons: *clang38
|
||||||
|
env: COMPILER='clang++-3.8' BUILD_TYPE='Debug' CPP14=1
|
||||||
|
|
||||||
|
|
||||||
|
# 5/ OSX Clang Builds
|
||||||
- os: osx
|
- os: osx
|
||||||
osx_image: xcode7.3
|
osx_image: xcode7.3
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: COMPILER='clang++' BUILD_TYPE='Debug' CPP11=0
|
env: COMPILER='clang++' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
- os: osx
|
- os: osx
|
||||||
osx_image: xcode7.3
|
osx_image: xcode7.3
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: COMPILER='clang++' BUILD_TYPE='Release' CPP11=0
|
env: COMPILER='clang++' BUILD_TYPE='Release'
|
||||||
|
|
||||||
- os: osx
|
- os: osx
|
||||||
osx_image: xcode8
|
osx_image: xcode8
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: COMPILER='clang++' BUILD_TYPE='Debug' CPP11=0
|
env: COMPILER='clang++' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
- os: osx
|
- os: osx
|
||||||
osx_image: xcode8
|
osx_image: xcode8
|
||||||
compiler: clang
|
compiler: clang
|
||||||
env: COMPILER='clang++' BUILD_TYPE='Release' CPP11=0
|
env: COMPILER='clang++' BUILD_TYPE='Release'
|
||||||
|
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8
|
||||||
|
compiler: clang
|
||||||
|
env: COMPILER='clang++' BUILD_TYPE='Debug' USE_CPP11=1
|
||||||
|
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8
|
||||||
|
compiler: clang
|
||||||
|
env: COMPILER='clang++' BUILD_TYPE='Release' USE_CPP11=1
|
||||||
|
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8
|
||||||
|
compiler: clang
|
||||||
|
env: COMPILER='clang++' BUILD_TYPE='Debug' USE_CPP14=1
|
||||||
|
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode8
|
||||||
|
compiler: clang
|
||||||
|
env: COMPILER='clang++' BUILD_TYPE='Release' USE_CPP14=1
|
||||||
|
|
||||||
|
|
||||||
install:
|
install:
|
||||||
@@ -218,13 +254,13 @@ install:
|
|||||||
mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
|
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}
|
export PATH=${DEPS_DIR}/cmake/bin:${PATH}
|
||||||
elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
|
elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
|
||||||
which cmake || brew install cmake
|
which cmake || brew install cmake
|
||||||
fi
|
fi
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- export CXX=${COMPILER}
|
- export CXX=${COMPILER}
|
||||||
- cd ${TRAVIS_BUILD_DIR}
|
- cd ${TRAVIS_BUILD_DIR}
|
||||||
- cmake -H. -BBuild -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -Wdev -DUSE_CPP11=${CPP11}
|
- cmake -H. -BBuild -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -Wdev -DUSE_CPP11=${CPP11} -DUSE_CPP14=${CPP14}
|
||||||
- cd Build
|
- cd Build
|
||||||
|
|
||||||
script:
|
script:
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
[](https://travis-ci.org/philsquared/Catch)
|
[](https://travis-ci.org/philsquared/Catch)
|
||||||
[](https://ci.appveyor.com/project/philsquared/catch/branch/master)
|
[](https://ci.appveyor.com/project/philsquared/catch/branch/master)
|
||||||
|
|
||||||
<a href="https://github.com/philsquared/Catch/releases/download/v1.9.1/catch.hpp">The latest, single header, version can be downloaded directly using this link</a>
|
<a href="https://github.com/philsquared/Catch/releases/download/v1.9.2/catch.hpp">The latest, single header, version can be downloaded directly using this link</a>
|
||||||
|
|
||||||
## What's the Catch?
|
## What's the Catch?
|
||||||
|
|
||||||
|
25
appveyor.yml
25
appveyor.yml
@@ -1,15 +1,24 @@
|
|||||||
# version string format -- This will be overwritten later anyway
|
# version string format -- This will be overwritten later anyway
|
||||||
version: "{build}"
|
version: "{build}"
|
||||||
|
|
||||||
# Disable the dead branch for v2 development
|
|
||||||
branches:
|
|
||||||
except:
|
|
||||||
- develop-v2
|
|
||||||
|
|
||||||
os:
|
os:
|
||||||
- Visual Studio 2013
|
|
||||||
- Visual Studio 2015
|
|
||||||
- Visual Studio 2017
|
- Visual Studio 2017
|
||||||
|
- Visual Studio 2015
|
||||||
|
- Visual Studio 2013
|
||||||
|
|
||||||
|
environment:
|
||||||
|
matrix:
|
||||||
|
- additional_flags: "/permissive- /std:c++latest"
|
||||||
|
- additional_flags: ""
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
exclude:
|
||||||
|
-
|
||||||
|
additional_flags: "/permissive- /std:c++latest"
|
||||||
|
os: Visual Studio 2015
|
||||||
|
-
|
||||||
|
additional_flags: "/permissive- /std:c++latest"
|
||||||
|
os: Visual Studio 2013
|
||||||
|
|
||||||
init:
|
init:
|
||||||
- git config --global core.autocrlf input
|
- git config --global core.autocrlf input
|
||||||
@@ -32,7 +41,7 @@ configuration:
|
|||||||
|
|
||||||
#Cmake will autodetect the compiler, but we set the arch
|
#Cmake will autodetect the compiler, but we set the arch
|
||||||
before_build:
|
before_build:
|
||||||
- echo Running cmake...
|
- set CXXFLAGS=%additional_flags%
|
||||||
- cmake -H. -BBuild -A%PLATFORM%
|
- cmake -H. -BBuild -A%PLATFORM%
|
||||||
|
|
||||||
# build with MSBuild
|
# build with MSBuild
|
||||||
|
114
contrib/ParseAndAddCatchTests.cmake
Normal file
114
contrib/ParseAndAddCatchTests.cmake
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
#==================================================================================================#
|
||||||
|
# supported macros #
|
||||||
|
# - TEST_CASE, #
|
||||||
|
# - SCENARIO, #
|
||||||
|
# - TEST_CASE_METHOD, #
|
||||||
|
# - CATCH_TEST_CASE, #
|
||||||
|
# - CATCH_SCENARIO, #
|
||||||
|
# - CATCH_TEST_CASE_METHOD. #
|
||||||
|
# #
|
||||||
|
# Usage #
|
||||||
|
# 1. make sure this module is in the path or add this otherwise: #
|
||||||
|
# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") #
|
||||||
|
# 2. make sure that you've enabled testing option for the project by the call: #
|
||||||
|
# enable_testing() #
|
||||||
|
# 3. add the lines to the script for testing target (sample CMakeLists.txt): #
|
||||||
|
# project(testing_target) #
|
||||||
|
# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") #
|
||||||
|
# enable_testing() #
|
||||||
|
# #
|
||||||
|
# find_path(CATCH_INCLUDE_DIR "catch.hpp") #
|
||||||
|
# include_directories(${INCLUDE_DIRECTORIES} ${CATCH_INCLUDE_DIR}) #
|
||||||
|
# #
|
||||||
|
# file(GLOB SOURCE_FILES "*.cpp") #
|
||||||
|
# add_executable(${PROJECT_NAME} ${SOURCE_FILES}) #
|
||||||
|
# #
|
||||||
|
# include(ParseAndAddCatchTests) #
|
||||||
|
# ParseAndAddCatchTests(${PROJECT_NAME}) #
|
||||||
|
#==================================================================================================#
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 2.8.8)
|
||||||
|
|
||||||
|
# This removes the contents between
|
||||||
|
# - block comments (i.e. /* ... */)
|
||||||
|
# - full line comments (i.e. // ... )
|
||||||
|
# contents have been read into '${CppCode}'.
|
||||||
|
# !keep partial line comments
|
||||||
|
function(RemoveComments CppCode)
|
||||||
|
string(ASCII 2 CMakeBeginBlockComment)
|
||||||
|
string(ASCII 3 CMakeEndBlockComment)
|
||||||
|
string(REGEX REPLACE "/\\*" "${CMakeBeginBlockComment}" ${CppCode} "${${CppCode}}")
|
||||||
|
string(REGEX REPLACE "\\*/" "${CMakeEndBlockComment}" ${CppCode} "${${CppCode}}")
|
||||||
|
string(REGEX REPLACE "${CMakeBeginBlockComment}[^${CMakeEndBlockComment}]*${CMakeEndBlockComment}" "" ${CppCode} "${${CppCode}}")
|
||||||
|
string(REGEX REPLACE "\n[ \t]*//+[^\n]+" "\n" ${CppCode} "${${CppCode}}")
|
||||||
|
|
||||||
|
set(${CppCode} "${${CppCode}}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Worker function
|
||||||
|
function(ParseFile SourceFile TestTarget)
|
||||||
|
if(NOT EXISTS ${SourceFile})
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
file(STRINGS ${SourceFile} Contents NEWLINE_CONSUME)
|
||||||
|
|
||||||
|
# Remove block and fullline comments
|
||||||
|
RemoveComments(Contents)
|
||||||
|
|
||||||
|
# Find definition of test names
|
||||||
|
string(REGEX MATCHALL "[ \t]*(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^\)]+\\)+[ \t\n]*{+[ \t]*(//[^\n]*[Tt][Ii][Mm][Ee][Oo][Uu][Tt][ \t]*[0-9]+)*" Tests "${Contents}")
|
||||||
|
|
||||||
|
foreach(TestName ${Tests})
|
||||||
|
# Strip newlines
|
||||||
|
string(REGEX REPLACE "\\\\\n|\n" "" TestName "${TestName}")
|
||||||
|
|
||||||
|
# Get test type and fixture if applicable
|
||||||
|
string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^,^\"]*" TestTypeAndFixture "${TestName}")
|
||||||
|
string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)" TestType "${TestTypeAndFixture}")
|
||||||
|
string(REPLACE "${TestType}(" "" TestFixture "${TestTypeAndFixture}")
|
||||||
|
|
||||||
|
# Get string parts of test definition
|
||||||
|
string(REGEX MATCHALL "\"+([^\\^\"]|\\\\\")+\"+" TestStrings "${TestName}")
|
||||||
|
|
||||||
|
# Strip wrapping quotation marks
|
||||||
|
string(REGEX REPLACE "^\"(.*)\"$" "\\1" TestStrings "${TestStrings}")
|
||||||
|
string(REPLACE "\";\"" ";" TestStrings "${TestStrings}")
|
||||||
|
|
||||||
|
# Validate that a test name and tags have been provided
|
||||||
|
list(LENGTH TestStrings TestStringsLength)
|
||||||
|
if(TestStringsLength GREATER 2 OR TestStringsLength LESS 1)
|
||||||
|
message(FATAL_ERROR "You must provide a valid test name and tags for all tests in ${SourceFile}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Assign name and tags
|
||||||
|
list(GET TestStrings 0 Name)
|
||||||
|
if("${TestType}" STREQUAL "SCENARIO")
|
||||||
|
set(Name "Scenario: ${Name}")
|
||||||
|
endif()
|
||||||
|
if(TestFixture)
|
||||||
|
set(CTestName "${TestFixture}:${Name}")
|
||||||
|
else()
|
||||||
|
set(CTestName "${Name}")
|
||||||
|
endif()
|
||||||
|
if(TestStringsLength EQUAL 2)
|
||||||
|
list(GET TestStrings 1 Tags)
|
||||||
|
string(TOLOWER "${Tags}" Tags)
|
||||||
|
string(REPLACE "]" ";" Tags "${Tags}")
|
||||||
|
string(REPLACE "[" "" Tags "${Tags}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Add the test and set its properties
|
||||||
|
add_test(NAME "\"${CTestName}\"" COMMAND ${TestTarget} ${Name} ${AdditionalCatchParameters})
|
||||||
|
set_tests_properties("\"${CTestName}\"" PROPERTIES FAIL_REGULAR_EXPRESSION "No tests ran"
|
||||||
|
LABELS "${Tags}")
|
||||||
|
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# entry point
|
||||||
|
function(ParseAndAddCatchTests TestTarget)
|
||||||
|
get_target_property(SourceFiles ${TestTarget} SOURCES)
|
||||||
|
foreach(SourceFile ${SourceFiles})
|
||||||
|
ParseFile(${SourceFile} ${TestTarget})
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
@@ -131,6 +131,11 @@ To support Matchers a slightly different form is used. Matchers have [their own
|
|||||||
|
|
||||||
Matchers can be composed using `&&`, `||` and `!` operators.
|
Matchers can be composed using `&&`, `||` and `!` operators.
|
||||||
|
|
||||||
|
## Thread Safety
|
||||||
|
|
||||||
|
Currently assertions in Catch are not thread safe.
|
||||||
|
For more details, along with workarounds, see the section on [the limitations page](limitations.md#thread-safe-assertions).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
[Home](Readme.md)
|
[Home](Readme.md)
|
@@ -56,8 +56,26 @@ Because of the incremental nature of Catch's test suites and ability to run spec
|
|||||||
|
|
||||||
## CMake
|
## CMake
|
||||||
|
|
||||||
You can use the following CMake script to automatically fetch Catch from github and configure it as an external project:
|
In general we recommend "vendoring" Catch's single-include releases inside your own repository. If you do this, the following example shows a minimal CMake project:
|
||||||
|
```CMake
|
||||||
|
cmake_minimum_required(VERSION 3.0)
|
||||||
|
|
||||||
|
project(cmake_test)
|
||||||
|
|
||||||
|
# Prepare "Catch" library for other executables
|
||||||
|
set(CATCH_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/catch)
|
||||||
|
add_library(Catch INTERFACE)
|
||||||
|
target_include_directories(Catch INTERFACE ${CATCH_INCLUDE_DIR})
|
||||||
|
|
||||||
|
# Make test executable
|
||||||
|
set(TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp)
|
||||||
|
add_executable(tests ${TEST_SOURCES})
|
||||||
|
target_link_libraries(tests Catch)
|
||||||
|
```
|
||||||
|
Note that it assumes that the path to the Catch's header is `catch/catch.hpp` from the `CMakeLists.txt` file.
|
||||||
|
|
||||||
|
|
||||||
|
You can also use the following CMake snippet to automatically fetch the entire Catch repository from github and configure it as an external project:
|
||||||
```CMake
|
```CMake
|
||||||
cmake_minimum_required(VERSION 2.8.8)
|
cmake_minimum_required(VERSION 2.8.8)
|
||||||
project(catch_builder CXX)
|
project(catch_builder CXX)
|
||||||
@@ -90,6 +108,32 @@ include_directories(${CATCH_INCLUDE_DIR} ${COMMON_INCLUDES})
|
|||||||
enable_testing(true) # Enables unit-testing.
|
enable_testing(true) # Enables unit-testing.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The advantage of this approach is that you can always automatically update Catch to the latest release. The disadvantage is that it means bringing in lot more than you need.
|
||||||
|
|
||||||
|
|
||||||
|
### Automatic test registration
|
||||||
|
If you are also using ctest, `contrib/ParseAndAddCatchTests.cmake` is a CMake script that attempts to parse your test files and automatically register all test cases, using tags as labels. This means that these
|
||||||
|
```cpp
|
||||||
|
TEST_CASE("Test1", "[unit]") {
|
||||||
|
int a = 1;
|
||||||
|
int b = 2;
|
||||||
|
REQUIRE(a == b);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Test2") {
|
||||||
|
int a = 1;
|
||||||
|
int b = 2;
|
||||||
|
REQUIRE(a == b);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Test3", "[a][b][c]") {
|
||||||
|
int a = 1;
|
||||||
|
int b = 2;
|
||||||
|
REQUIRE(a == b);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
would be registered as 3 tests, `Test1`, `Test2` and `Test3`, and ctest 4 labels would be created, `a`, `b`, `c` and `unit`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
[Home](Readme.md)
|
[Home](Readme.md)
|
@@ -63,6 +63,9 @@ ArangoDB is a native multi-model database with flexible data models for document
|
|||||||
### [MAME](https://github.com/mamedev/mame)
|
### [MAME](https://github.com/mamedev/mame)
|
||||||
MAME originally stood for Multiple Arcade Machine Emulator
|
MAME originally stood for Multiple Arcade Machine Emulator
|
||||||
|
|
||||||
|
### [Newsbeuter](https://github.com/akrennmair/newsbeuter)
|
||||||
|
Newsbeuter is an open-source RSS/Atom feed reader for text terminals.
|
||||||
|
|
||||||
### [Standardese](https://github.com/foonathan/standardese)
|
### [Standardese](https://github.com/foonathan/standardese)
|
||||||
Standardese aims to be a nextgen Doxygen
|
Standardese aims to be a nextgen Doxygen
|
||||||
|
|
||||||
|
@@ -1,3 +1,24 @@
|
|||||||
|
# 1.9.2
|
||||||
|
|
||||||
|
### Improvements and minor changes
|
||||||
|
* All of `Approx`'s member functions now accept strong typedefs in C++11 mode (#888)
|
||||||
|
* Previously `Approx::scale`, `Approx::epsilon`, `Approx::margin` and `Approx::operator()` didn't.
|
||||||
|
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
* POSIX signals are now disabled by default under QNX (#889)
|
||||||
|
* QNX does not support current enough (2001) POSIX specification
|
||||||
|
* JUnit no longer counts exceptions as failures if given test case is marked as ok to fail.
|
||||||
|
* `Catch::Option` should now have its storage properly aligned.
|
||||||
|
* Catch no longer attempts to define `uint64_t` on windows (#862)
|
||||||
|
* This was causing trouble when compiled under Cygwin
|
||||||
|
|
||||||
|
### Other
|
||||||
|
* Catch is now compiled under MSVC 2017 using `std:c++latest` (C++17 mode) in CI
|
||||||
|
* We now provide cmake script that autoregisters Catch tests into ctest.
|
||||||
|
* See `contrib` folder.
|
||||||
|
|
||||||
|
|
||||||
# 1.9.1
|
# 1.9.1
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
|
@@ -40,16 +40,17 @@ namespace Detail {
|
|||||||
return Approx( 0 );
|
return Approx( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Approx operator()( double value ) {
|
#if defined(CATCH_CONFIG_CPP11_TYPE_TRAITS)
|
||||||
Approx approx( value );
|
|
||||||
|
template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
|
||||||
|
Approx operator()( T value ) {
|
||||||
|
Approx approx( static_cast<double>(value) );
|
||||||
approx.epsilon( m_epsilon );
|
approx.epsilon( m_epsilon );
|
||||||
approx.margin( m_margin );
|
approx.margin( m_margin );
|
||||||
approx.scale( m_scale );
|
approx.scale( m_scale );
|
||||||
return approx;
|
return approx;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CATCH_CONFIG_CPP11_TYPE_TRAITS)
|
|
||||||
|
|
||||||
template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
|
template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
|
||||||
explicit Approx( T value ): Approx(static_cast<double>(value))
|
explicit Approx( T value ): Approx(static_cast<double>(value))
|
||||||
{}
|
{}
|
||||||
@@ -100,7 +101,36 @@ namespace Detail {
|
|||||||
friend bool operator >= ( Approx const& lhs, T rhs ) {
|
friend bool operator >= ( Approx const& lhs, T rhs ) {
|
||||||
return lhs.m_value > double(rhs) || lhs == rhs;
|
return lhs.m_value > double(rhs) || lhs == rhs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
|
||||||
|
Approx& epsilon( T newEpsilon ) {
|
||||||
|
m_epsilon = double(newEpsilon);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
|
||||||
|
Approx& margin( T newMargin ) {
|
||||||
|
m_margin = double(newMargin);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
|
||||||
|
Approx& scale( T newScale ) {
|
||||||
|
m_scale = double(newScale);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
Approx operator()( double value ) {
|
||||||
|
Approx approx( value );
|
||||||
|
approx.epsilon( m_epsilon );
|
||||||
|
approx.margin( m_margin );
|
||||||
|
approx.scale( m_scale );
|
||||||
|
return approx;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
friend bool operator == ( double lhs, Approx const& rhs ) {
|
friend bool operator == ( double lhs, Approx const& rhs ) {
|
||||||
// Thanks to Richard Harris for his help refining this formula
|
// Thanks to Richard Harris for his help refining this formula
|
||||||
bool relativeOK = std::fabs( lhs - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( std::fabs(lhs), std::fabs(rhs.m_value) ) );
|
bool relativeOK = std::fabs( lhs - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( std::fabs(lhs), std::fabs(rhs.m_value) ) );
|
||||||
@@ -137,7 +167,6 @@ namespace Detail {
|
|||||||
friend bool operator >= ( Approx const& lhs, double rhs ) {
|
friend bool operator >= ( Approx const& lhs, double rhs ) {
|
||||||
return lhs.m_value > rhs || lhs == rhs;
|
return lhs.m_value > rhs || lhs == rhs;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
Approx& epsilon( double newEpsilon ) {
|
Approx& epsilon( double newEpsilon ) {
|
||||||
m_epsilon = newEpsilon;
|
m_epsilon = newEpsilon;
|
||||||
@@ -153,6 +182,7 @@ namespace Detail {
|
|||||||
m_scale = newScale;
|
m_scale = newScale;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
std::string toString() const {
|
std::string toString() const {
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
|
@@ -80,13 +80,20 @@
|
|||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Cygwin
|
// We know some environments not to support full POSIX signals
|
||||||
#ifdef __CYGWIN__
|
#if defined(__CYGWIN__) || defined(__QNX__)
|
||||||
|
|
||||||
# if !defined(CATCH_CONFIG_POSIX_SIGNALS)
|
# if !defined(CATCH_CONFIG_POSIX_SIGNALS)
|
||||||
# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS
|
# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Cygwin
|
||||||
|
#ifdef __CYGWIN__
|
||||||
|
|
||||||
// Required for some versions of Cygwin to declare gettimeofday
|
// Required for some versions of Cygwin to declare gettimeofday
|
||||||
// see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin
|
// see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin
|
||||||
# define _BSD_SOURCE
|
# define _BSD_SOURCE
|
||||||
|
@@ -66,8 +66,18 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
T* nullableValue;
|
T *nullableValue;
|
||||||
char storage[sizeof(T)];
|
union {
|
||||||
|
char storage[sizeof(T)];
|
||||||
|
|
||||||
|
// These are here to force alignment for the storage
|
||||||
|
long double dummy1;
|
||||||
|
void (*dummy2)();
|
||||||
|
long double dummy3;
|
||||||
|
#ifdef CATCH_CONFIG_CPP11_LONG_LONG
|
||||||
|
long long dummy4;
|
||||||
|
#endif
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
@@ -10,14 +10,20 @@
|
|||||||
|
|
||||||
#include "catch_platform.h"
|
#include "catch_platform.h"
|
||||||
|
|
||||||
#ifdef CATCH_PLATFORM_WINDOWS
|
#ifdef _MSC_VER
|
||||||
typedef unsigned long long uint64_t;
|
|
||||||
#else
|
|
||||||
#include <stdint.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
typedef unsigned long long UInt64;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#include <stdint.h>
|
||||||
|
namespace Catch {
|
||||||
|
typedef uint64_t UInt64;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
class Timer {
|
class Timer {
|
||||||
public:
|
public:
|
||||||
Timer() : m_ticks( 0 ) {}
|
Timer() : m_ticks( 0 ) {}
|
||||||
@@ -27,7 +33,7 @@ namespace Catch {
|
|||||||
double getElapsedSeconds() const;
|
double getElapsedSeconds() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint64_t m_ticks;
|
UInt64 m_ticks;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Catch
|
} // namespace Catch
|
||||||
|
@@ -38,7 +38,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline Version libraryVersion() {
|
inline Version libraryVersion() {
|
||||||
static Version version( 1, 9, 1, "", 0 );
|
static Version version( 1, 9, 2, "", 0 );
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -51,7 +51,8 @@ namespace Catch {
|
|||||||
public:
|
public:
|
||||||
JunitReporter( ReporterConfig const& _config )
|
JunitReporter( ReporterConfig const& _config )
|
||||||
: CumulativeReporterBase( _config ),
|
: CumulativeReporterBase( _config ),
|
||||||
xml( _config.stream() )
|
xml( _config.stream() ),
|
||||||
|
m_okToFail( false )
|
||||||
{
|
{
|
||||||
m_reporterPrefs.shouldRedirectStdOut = true;
|
m_reporterPrefs.shouldRedirectStdOut = true;
|
||||||
}
|
}
|
||||||
@@ -77,8 +78,11 @@ namespace Catch {
|
|||||||
CumulativeReporterBase::testGroupStarting( groupInfo );
|
CumulativeReporterBase::testGroupStarting( groupInfo );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void testCaseStarting( TestCaseInfo const& testCaseInfo ) CATCH_OVERRIDE {
|
||||||
|
m_okToFail = testCaseInfo.okToFail();
|
||||||
|
}
|
||||||
virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE {
|
virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE {
|
||||||
if( assertionStats.assertionResult.getResultType() == ResultWas::ThrewException )
|
if( assertionStats.assertionResult.getResultType() == ResultWas::ThrewException && !m_okToFail )
|
||||||
unexpectedExceptions++;
|
unexpectedExceptions++;
|
||||||
return CumulativeReporterBase::assertionEnded( assertionStats );
|
return CumulativeReporterBase::assertionEnded( assertionStats );
|
||||||
}
|
}
|
||||||
@@ -243,6 +247,7 @@ namespace Catch {
|
|||||||
std::ostringstream stdOutForSuite;
|
std::ostringstream stdOutForSuite;
|
||||||
std::ostringstream stdErrForSuite;
|
std::ostringstream stdErrForSuite;
|
||||||
unsigned int unexpectedExceptions;
|
unsigned int unexpectedExceptions;
|
||||||
|
bool m_okToFail;
|
||||||
};
|
};
|
||||||
|
|
||||||
INTERNAL_CATCH_REGISTER_REPORTER( "junit", JunitReporter )
|
INTERNAL_CATCH_REGISTER_REPORTER( "junit", JunitReporter )
|
||||||
|
@@ -3,6 +3,18 @@
|
|||||||
<exe-name> is a <version> host application.
|
<exe-name> is a <version> host application.
|
||||||
Run with -? for options
|
Run with -? for options
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
#748 - captures with unexpected exceptions
|
||||||
|
outside assertions
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
due to unexpected exception with messages:
|
||||||
|
answer := 42
|
||||||
|
expected exception
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
#748 - captures with unexpected exceptions
|
#748 - captures with unexpected exceptions
|
||||||
inside REQUIRE_NOTHROW
|
inside REQUIRE_NOTHROW
|
||||||
@@ -115,6 +127,17 @@ TrickyTests.cpp:<line number>: FAILED:
|
|||||||
with expansion:
|
with expansion:
|
||||||
{?} == {?}
|
{?} == {?}
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
An unchecked exception reports the line of the last assertion
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
{Unknown expression after the reported line}
|
||||||
|
due to unexpected exception with message:
|
||||||
|
unexpected exception
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Contains string matcher
|
Contains string matcher
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -148,6 +171,16 @@ ExceptionTests.cpp:<line number>: FAILED:
|
|||||||
due to unexpected exception with message:
|
due to unexpected exception with message:
|
||||||
custom exception - not std
|
custom exception - not std
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Custom std-exceptions can be custom translated
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
due to unexpected exception with message:
|
||||||
|
custom std exception
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
EndsWith string matcher
|
EndsWith string matcher
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -413,6 +446,16 @@ MiscTests.cpp:<line number>:
|
|||||||
warning:
|
warning:
|
||||||
This one ran
|
This one ran
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Non-std exceptions can be translated
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
due to unexpected exception with message:
|
||||||
|
custom exception
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Ordering comparison checks that should fail
|
Ordering comparison checks that should fail
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -599,6 +642,16 @@ with expansion:
|
|||||||
}
|
}
|
||||||
"
|
"
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Unexpected exceptions can be translated
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
due to unexpected exception with message:
|
||||||
|
3.14
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Vector matchers that fail
|
Vector matchers that fail
|
||||||
Contains (element)
|
Contains (element)
|
||||||
@@ -660,6 +713,16 @@ MatchersTests.cpp:<line number>: FAILED:
|
|||||||
with expansion:
|
with expansion:
|
||||||
{ 1, 2, 3 } Equals: { }
|
{ 1, 2, 3 } Equals: { }
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
When unchecked exceptions are thrown directly they are always failures
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
due to unexpected exception with message:
|
||||||
|
unexpected exception
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
When unchecked exceptions are thrown during a CHECK the test should continue
|
When unchecked exceptions are thrown during a CHECK the test should continue
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -694,6 +757,17 @@ ExceptionTests.cpp:<line number>: FAILED:
|
|||||||
due to unexpected exception with message:
|
due to unexpected exception with message:
|
||||||
expected exception
|
expected exception
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
When unchecked exceptions are thrown from sections they are always failures
|
||||||
|
section name
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
due to unexpected exception with message:
|
||||||
|
unexpected exception
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Where the LHS is not a simple value
|
Where the LHS is not a simple value
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -866,6 +940,6 @@ with expansion:
|
|||||||
"first" == "second"
|
"first" == "second"
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
test cases: 167 | 125 passed | 38 failed | 4 failed as expected
|
test cases: 167 | 119 passed | 44 failed | 4 failed as expected
|
||||||
assertions: 960 | 859 passed | 81 failed | 20 failed as expected
|
assertions: 967 | 859 passed | 87 failed | 21 failed as expected
|
||||||
|
|
||||||
|
@@ -14,6 +14,18 @@ PASSED:
|
|||||||
with message:
|
with message:
|
||||||
yay
|
yay
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
#748 - captures with unexpected exceptions
|
||||||
|
outside assertions
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
due to unexpected exception with messages:
|
||||||
|
answer := 42
|
||||||
|
expected exception
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
#748 - captures with unexpected exceptions
|
#748 - captures with unexpected exceptions
|
||||||
inside REQUIRE_NOTHROW
|
inside REQUIRE_NOTHROW
|
||||||
@@ -444,6 +456,11 @@ ExceptionTests.cpp:<line number>:
|
|||||||
PASSED:
|
PASSED:
|
||||||
CHECK( 1 == 1 )
|
CHECK( 1 == 1 )
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
{Unknown expression after the reported line}
|
||||||
|
due to unexpected exception with message:
|
||||||
|
unexpected exception
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Anonymous test case 1
|
Anonymous test case 1
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -998,6 +1015,16 @@ ExceptionTests.cpp:<line number>: FAILED:
|
|||||||
due to unexpected exception with message:
|
due to unexpected exception with message:
|
||||||
custom exception - not std
|
custom exception - not std
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Custom std-exceptions can be custom translated
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
due to unexpected exception with message:
|
||||||
|
custom std exception
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Demonstrate that a non-const == is not used
|
Demonstrate that a non-const == is not used
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -4508,6 +4535,16 @@ MiscTests.cpp:<line number>:
|
|||||||
warning:
|
warning:
|
||||||
This one ran
|
This one ran
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Non-std exceptions can be translated
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
due to unexpected exception with message:
|
||||||
|
custom exception
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
NotImplemented exception
|
NotImplemented exception
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -7945,6 +7982,16 @@ PASSED:
|
|||||||
with expansion:
|
with expansion:
|
||||||
true
|
true
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Unexpected exceptions can be translated
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
due to unexpected exception with message:
|
||||||
|
3.14
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Use a custom approx
|
Use a custom approx
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -8165,6 +8212,16 @@ ExceptionTests.cpp:<line number>:
|
|||||||
PASSED:
|
PASSED:
|
||||||
REQUIRE_THROWS( thisThrows() )
|
REQUIRE_THROWS( thisThrows() )
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
When unchecked exceptions are thrown directly they are always failures
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
due to unexpected exception with message:
|
||||||
|
unexpected exception
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
When unchecked exceptions are thrown during a CHECK the test should continue
|
When unchecked exceptions are thrown during a CHECK the test should continue
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -8199,6 +8256,17 @@ ExceptionTests.cpp:<line number>: FAILED:
|
|||||||
due to unexpected exception with message:
|
due to unexpected exception with message:
|
||||||
expected exception
|
expected exception
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
When unchecked exceptions are thrown from sections they are always failures
|
||||||
|
section name
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
due to unexpected exception with message:
|
||||||
|
unexpected exception
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Where the LHS is not a simple value
|
Where the LHS is not a simple value
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -9398,6 +9466,6 @@ MiscTests.cpp:<line number>:
|
|||||||
PASSED:
|
PASSED:
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
test cases: 167 | 124 passed | 39 failed | 4 failed as expected
|
test cases: 167 | 118 passed | 45 failed | 4 failed as expected
|
||||||
assertions: 962 | 859 passed | 83 failed | 20 failed as expected
|
assertions: 969 | 859 passed | 89 failed | 21 failed as expected
|
||||||
|
|
||||||
|
@@ -14,6 +14,18 @@ PASSED:
|
|||||||
with message:
|
with message:
|
||||||
yay
|
yay
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
#748 - captures with unexpected exceptions
|
||||||
|
outside assertions
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
ExceptionTests.cpp:<line number>: FAILED:
|
||||||
|
due to unexpected exception with messages:
|
||||||
|
answer := 42
|
||||||
|
expected exception
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
#748 - captures with unexpected exceptions
|
#748 - captures with unexpected exceptions
|
||||||
inside REQUIRE_NOTHROW
|
inside REQUIRE_NOTHROW
|
||||||
@@ -133,5 +145,5 @@ ConditionTests.cpp:<line number>: FAILED:
|
|||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
test cases: 6 | 3 passed | 1 failed | 2 failed as expected
|
test cases: 6 | 3 passed | 1 failed | 2 failed as expected
|
||||||
assertions: 17 | 11 passed | 4 failed | 2 failed as expected
|
assertions: 18 | 11 passed | 4 failed | 3 failed as expected
|
||||||
|
|
||||||
|
@@ -1,7 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testsuitesspanner>
|
<testsuitesspanner>
|
||||||
<testsuite name="<exe-name>" errors="8" failures="76" tests="963" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
<testsuite name="<exe-name>" errors="13" failures="77" tests="970" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
||||||
<testcase classname="global" name="# A test name that starts with a #" time="{duration}"/>
|
<testcase classname="global" name="# A test name that starts with a #" time="{duration}"/>
|
||||||
|
<testcase classname="#748 - captures with unexpected exceptions" name="outside assertions" time="{duration}">
|
||||||
|
<error type="TEST_CASE">
|
||||||
|
expected exception
|
||||||
|
answer := 42
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
</error>
|
||||||
|
</testcase>
|
||||||
<testcase classname="#748 - captures with unexpected exceptions" name="inside REQUIRE_NOTHROW" time="{duration}">
|
<testcase classname="#748 - captures with unexpected exceptions" name="inside REQUIRE_NOTHROW" time="{duration}">
|
||||||
<error message="thisThrows()" type="REQUIRE_NOTHROW">
|
<error message="thisThrows()" type="REQUIRE_NOTHROW">
|
||||||
expected exception
|
expected exception
|
||||||
@@ -79,7 +86,12 @@ TrickyTests.cpp:<line number>
|
|||||||
<testcase classname="global" name="Absolute margin" time="{duration}"/>
|
<testcase classname="global" name="Absolute margin" time="{duration}"/>
|
||||||
<testcase classname="global" name="AllOf matcher" time="{duration}"/>
|
<testcase classname="global" name="AllOf matcher" time="{duration}"/>
|
||||||
<testcase classname="global" name="An expression with side-effects should only be evaluated once" time="{duration}"/>
|
<testcase classname="global" name="An expression with side-effects should only be evaluated once" time="{duration}"/>
|
||||||
<testcase classname="global" name="An unchecked exception reports the line of the last assertion" time="{duration}"/>
|
<testcase classname="global" name="An unchecked exception reports the line of the last assertion" time="{duration}">
|
||||||
|
<error message="{Unknown expression after the reported line}">
|
||||||
|
unexpected exception
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
</error>
|
||||||
|
</testcase>
|
||||||
<testcase classname="global" name="Anonymous test case 1" time="{duration}"/>
|
<testcase classname="global" name="Anonymous test case 1" time="{duration}"/>
|
||||||
<testcase classname="global" name="AnyOf matcher" time="{duration}"/>
|
<testcase classname="global" name="AnyOf matcher" time="{duration}"/>
|
||||||
<testcase classname="global" name="Approximate PI" time="{duration}"/>
|
<testcase classname="global" name="Approximate PI" time="{duration}"/>
|
||||||
@@ -115,6 +127,12 @@ ExceptionTests.cpp:<line number>
|
|||||||
<testcase classname="global" name="Custom exceptions can be translated when testing for throwing as something else" time="{duration}">
|
<testcase classname="global" name="Custom exceptions can be translated when testing for throwing as something else" time="{duration}">
|
||||||
<error message="throwCustom(), std::exception" type="REQUIRE_THROWS_AS">
|
<error message="throwCustom(), std::exception" type="REQUIRE_THROWS_AS">
|
||||||
custom exception - not std
|
custom exception - not std
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
</error>
|
||||||
|
</testcase>
|
||||||
|
<testcase classname="global" name="Custom std-exceptions can be custom translated" time="{duration}">
|
||||||
|
<error type="TEST_CASE">
|
||||||
|
custom std exception
|
||||||
ExceptionTests.cpp:<line number>
|
ExceptionTests.cpp:<line number>
|
||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
@@ -282,6 +300,12 @@ ExceptionTests.cpp:<line number>
|
|||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="Nice descriptive name" time="{duration}"/>
|
<testcase classname="global" name="Nice descriptive name" time="{duration}"/>
|
||||||
|
<testcase classname="global" name="Non-std exceptions can be translated" time="{duration}">
|
||||||
|
<error type="TEST_CASE">
|
||||||
|
custom exception
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
</error>
|
||||||
|
</testcase>
|
||||||
<testcase classname="global" name="NotImplemented exception" time="{duration}"/>
|
<testcase classname="global" name="NotImplemented exception" time="{duration}"/>
|
||||||
<testcase classname="global" name="Objects that evaluated in boolean contexts can be checked" time="{duration}"/>
|
<testcase classname="global" name="Objects that evaluated in boolean contexts can be checked" time="{duration}"/>
|
||||||
<testcase classname="global" name="Operators at different namespace levels not hijacked by Koenig lookup" time="{duration}"/>
|
<testcase classname="global" name="Operators at different namespace levels not hijacked by Koenig lookup" time="{duration}"/>
|
||||||
@@ -497,6 +521,12 @@ MiscTests.cpp:<line number>
|
|||||||
<testcase classname="Tracker" name="start a generator/Start a new inner section/Re-enter for second generation" time="{duration}"/>
|
<testcase classname="Tracker" name="start a generator/Start a new inner section/Re-enter for second generation" time="{duration}"/>
|
||||||
<testcase classname="Tracker" name="start a generator/Fail an inner section" time="{duration}"/>
|
<testcase classname="Tracker" name="start a generator/Fail an inner section" time="{duration}"/>
|
||||||
<testcase classname="Tracker" name="start a generator/Fail an inner section/Re-enter for second generation" time="{duration}"/>
|
<testcase classname="Tracker" name="start a generator/Fail an inner section/Re-enter for second generation" time="{duration}"/>
|
||||||
|
<testcase classname="global" name="Unexpected exceptions can be translated" time="{duration}">
|
||||||
|
<error type="TEST_CASE">
|
||||||
|
3.14
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
</error>
|
||||||
|
</testcase>
|
||||||
<testcase classname="global" name="Use a custom approx" time="{duration}"/>
|
<testcase classname="global" name="Use a custom approx" time="{duration}"/>
|
||||||
<testcase classname="Variadic macros" name="Section with one argument" time="{duration}"/>
|
<testcase classname="Variadic macros" name="Section with one argument" time="{duration}"/>
|
||||||
<testcase classname="Vector matchers" name="Contains (element)" time="{duration}"/>
|
<testcase classname="Vector matchers" name="Contains (element)" time="{duration}"/>
|
||||||
@@ -533,6 +563,12 @@ MatchersTests.cpp:<line number>
|
|||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="When checked exceptions are thrown they can be expected or unexpected" time="{duration}"/>
|
<testcase classname="global" name="When checked exceptions are thrown they can be expected or unexpected" time="{duration}"/>
|
||||||
|
<testcase classname="global" name="When unchecked exceptions are thrown directly they are always failures" time="{duration}">
|
||||||
|
<error type="TEST_CASE">
|
||||||
|
unexpected exception
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
</error>
|
||||||
|
</testcase>
|
||||||
<testcase classname="global" name="When unchecked exceptions are thrown during a CHECK the test should continue" time="{duration}">
|
<testcase classname="global" name="When unchecked exceptions are thrown during a CHECK the test should continue" time="{duration}">
|
||||||
<error message="thisThrows() == 0" type="CHECK">
|
<error message="thisThrows() == 0" type="CHECK">
|
||||||
expected exception
|
expected exception
|
||||||
@@ -548,6 +584,12 @@ ExceptionTests.cpp:<line number>
|
|||||||
<testcase classname="global" name="When unchecked exceptions are thrown from functions they are always failures" time="{duration}">
|
<testcase classname="global" name="When unchecked exceptions are thrown from functions they are always failures" time="{duration}">
|
||||||
<error message="thisThrows() == 0" type="CHECK">
|
<error message="thisThrows() == 0" type="CHECK">
|
||||||
expected exception
|
expected exception
|
||||||
|
ExceptionTests.cpp:<line number>
|
||||||
|
</error>
|
||||||
|
</testcase>
|
||||||
|
<testcase classname="When unchecked exceptions are thrown from sections they are always failures" name="section name" time="{duration}">
|
||||||
|
<error type="TEST_CASE">
|
||||||
|
unexpected exception
|
||||||
ExceptionTests.cpp:<line number>
|
ExceptionTests.cpp:<line number>
|
||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
|
@@ -6,7 +6,13 @@
|
|||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="#748 - captures with unexpected exceptions" tags="[!shouldfail][!throws]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<TestCase name="#748 - captures with unexpected exceptions" tags="[!shouldfail][!throws]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
<Section name="outside assertions" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<Section name="outside assertions" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
<OverallResults successes="0" failures="0" expectedFailures="0"/>
|
<Info>
|
||||||
|
answer := 42
|
||||||
|
</Info>
|
||||||
|
<Exception filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
|
expected exception
|
||||||
|
</Exception>
|
||||||
|
<OverallResults successes="0" failures="1" expectedFailures="0"/>
|
||||||
</Section>
|
</Section>
|
||||||
<Section name="inside REQUIRE_NOTHROW" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<Section name="inside REQUIRE_NOTHROW" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
<Info>
|
<Info>
|
||||||
@@ -506,7 +512,18 @@
|
|||||||
1 == 1
|
1 == 1
|
||||||
</Expanded>
|
</Expanded>
|
||||||
</Expression>
|
</Expression>
|
||||||
<OverallResult success="true"/>
|
<Expression success="false" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
|
<Original>
|
||||||
|
{Unknown expression after the reported line}
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
{Unknown expression after the reported line}
|
||||||
|
</Expanded>
|
||||||
|
<Exception filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
|
unexpected exception
|
||||||
|
</Exception>
|
||||||
|
</Expression>
|
||||||
|
<OverallResult success="false"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="Anonymous test case 1" filename="projects/<exe-name>/VariadicMacrosTests.cpp" >
|
<TestCase name="Anonymous test case 1" filename="projects/<exe-name>/VariadicMacrosTests.cpp" >
|
||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
@@ -1110,7 +1127,10 @@
|
|||||||
<OverallResult success="false"/>
|
<OverallResult success="false"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="Custom std-exceptions can be custom translated" tags="[!throws][.][failing][hide]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<TestCase name="Custom std-exceptions can be custom translated" tags="[!throws][.][failing][hide]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
<OverallResult success="true"/>
|
<Exception filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
|
custom std exception
|
||||||
|
</Exception>
|
||||||
|
<OverallResult success="false"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="Demonstrate that a non-const == is not used" tags="[Tricky]" filename="projects/<exe-name>/TrickyTests.cpp" >
|
<TestCase name="Demonstrate that a non-const == is not used" tags="[Tricky]" filename="projects/<exe-name>/TrickyTests.cpp" >
|
||||||
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/TrickyTests.cpp" >
|
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/TrickyTests.cpp" >
|
||||||
@@ -4635,7 +4655,10 @@ re>"
|
|||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="Non-std exceptions can be translated" tags="[!throws][.][failing][hide]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<TestCase name="Non-std exceptions can be translated" tags="[!throws][.][failing][hide]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
<OverallResult success="true"/>
|
<Exception filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
|
custom exception
|
||||||
|
</Exception>
|
||||||
|
<OverallResult success="false"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="NotImplemented exception" tags="[!throws]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<TestCase name="NotImplemented exception" tags="[!throws]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
<Expression success="true" type="REQUIRE_THROWS" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<Expression success="true" type="REQUIRE_THROWS" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
@@ -8586,7 +8609,10 @@ there"
|
|||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="Unexpected exceptions can be translated" tags="[!throws][.][failing][hide]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<TestCase name="Unexpected exceptions can be translated" tags="[!throws][.][failing][hide]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
<OverallResult success="true"/>
|
<Exception filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
|
3.14
|
||||||
|
</Exception>
|
||||||
|
<OverallResult success="false"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="Use a custom approx" tags="[Approx][custom]" filename="projects/<exe-name>/ApproxTests.cpp" >
|
<TestCase name="Use a custom approx" tags="[Approx][custom]" filename="projects/<exe-name>/ApproxTests.cpp" >
|
||||||
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/ApproxTests.cpp" >
|
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/ApproxTests.cpp" >
|
||||||
@@ -8849,7 +8875,10 @@ there"
|
|||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="When unchecked exceptions are thrown directly they are always failures" tags="[!throws][.][failing][hide]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<TestCase name="When unchecked exceptions are thrown directly they are always failures" tags="[!throws][.][failing][hide]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
<OverallResult success="true"/>
|
<Exception filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
|
unexpected exception
|
||||||
|
</Exception>
|
||||||
|
<OverallResult success="false"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="When unchecked exceptions are thrown during a CHECK the test should continue" tags="[!throws][.][failing][hide]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<TestCase name="When unchecked exceptions are thrown during a CHECK the test should continue" tags="[!throws][.][failing][hide]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
<Expression success="false" type="CHECK" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<Expression success="false" type="CHECK" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
@@ -8895,9 +8924,12 @@ there"
|
|||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="When unchecked exceptions are thrown from sections they are always failures" tags="[!throws][.][failing][hide]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<TestCase name="When unchecked exceptions are thrown from sections they are always failures" tags="[!throws][.][failing][hide]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
<Section name="section name" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<Section name="section name" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
<OverallResults successes="0" failures="0" expectedFailures="0"/>
|
<Exception filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
|
unexpected exception
|
||||||
|
</Exception>
|
||||||
|
<OverallResults successes="0" failures="1" expectedFailures="0"/>
|
||||||
</Section>
|
</Section>
|
||||||
<OverallResult success="true"/>
|
<OverallResult success="false"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="When unchecked exceptions are thrown, but caught, they do not affect the test" tags="[!throws]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
<TestCase name="When unchecked exceptions are thrown, but caught, they do not affect the test" tags="[!throws]" filename="projects/<exe-name>/ExceptionTests.cpp" >
|
||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
@@ -10082,7 +10114,7 @@ spanner <OverallResult success="true"/>
|
|||||||
</Section>
|
</Section>
|
||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<OverallResults successes="859" failures="84" expectedFailures="20"/>
|
<OverallResults successes="859" failures="90" expectedFailures="21"/>
|
||||||
</Group>
|
</Group>
|
||||||
<OverallResults successes="859" failures="83" expectedFailures="20"/>
|
<OverallResults successes="859" failures="89" expectedFailures="21"/>
|
||||||
</Catch>
|
</Catch>
|
||||||
|
114
scripts/updateVcpkgPackage.py
Normal file
114
scripts/updateVcpkgPackage.py
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import io, os, re, sys, subprocess
|
||||||
|
import hashlib
|
||||||
|
|
||||||
|
from scriptCommon import catchPath
|
||||||
|
from releaseCommon import Version
|
||||||
|
|
||||||
|
print(catchPath)
|
||||||
|
|
||||||
|
default_path = '../vcpkg/ports/catch/'
|
||||||
|
|
||||||
|
def adjusted_path(path):
|
||||||
|
return os.path.join(catchPath, path)
|
||||||
|
|
||||||
|
def get_hash(path):
|
||||||
|
BUFF_SIZE = 65536
|
||||||
|
sha512 = hashlib.sha512()
|
||||||
|
# The newlines should be normalized into \n, which is what we want
|
||||||
|
# If reused use 'rb' with a file written with io.open(newline='\n')
|
||||||
|
with open(path, 'r') as f:
|
||||||
|
while True:
|
||||||
|
data = f.read(BUFF_SIZE)
|
||||||
|
if not data:
|
||||||
|
break
|
||||||
|
if sys.version_info[0] < 3:
|
||||||
|
sha512.update(data)
|
||||||
|
else:
|
||||||
|
sha512.update(data.encode('utf-8'))
|
||||||
|
return sha512.hexdigest()
|
||||||
|
|
||||||
|
def update_control(path):
|
||||||
|
v = Version()
|
||||||
|
ver_string = v.getVersionString()
|
||||||
|
|
||||||
|
# Update control
|
||||||
|
lines = []
|
||||||
|
control_path = os.path.join(path, 'CONTROL')
|
||||||
|
with open(control_path, 'r') as f:
|
||||||
|
for line in f:
|
||||||
|
lines.append(line)
|
||||||
|
with open(control_path, 'w') as f:
|
||||||
|
for line in lines:
|
||||||
|
if 'Version: ' in line:
|
||||||
|
line = 'Version: {}\n'.format(v.getVersionString())
|
||||||
|
f.write(line)
|
||||||
|
|
||||||
|
def update_portfile(path, header_hash, licence_hash):
|
||||||
|
print('Updating portfile')
|
||||||
|
v = Version()
|
||||||
|
ver_string = v.getVersionString()
|
||||||
|
|
||||||
|
# Update portfile
|
||||||
|
lines = []
|
||||||
|
portfile_path = os.path.join(path, 'portfile.cmake')
|
||||||
|
with open(portfile_path, 'r') as f:
|
||||||
|
for line in f:
|
||||||
|
lines.append(line)
|
||||||
|
with open(portfile_path, 'w') as f:
|
||||||
|
# Two things we need to change/update
|
||||||
|
# 1) Link and hash of releaseCommon
|
||||||
|
# 2) Link and hash of licence
|
||||||
|
# We could assume licence never changes, but where is the fun in that?
|
||||||
|
first_hash = True
|
||||||
|
for line in lines:
|
||||||
|
# Check what we are updating
|
||||||
|
if 'vcpkg_download_distfile' in line:
|
||||||
|
kind = line.split('(')[-1].strip()
|
||||||
|
print(kind)
|
||||||
|
|
||||||
|
# Deal with URLS
|
||||||
|
if 'URLS' in line and kind == 'HEADER':
|
||||||
|
line = ' URLS "https://github.com/philsquared/Catch/releases/download/v{}/catch.hpp"\n'.format(v.getVersionString())
|
||||||
|
if 'URLS' in line and kind == 'LICENSE':
|
||||||
|
line = ' URLS "https://raw.githubusercontent.com/philsquared/Catch/v{}/LICENSE.txt"\n'.format(v.getVersionString())
|
||||||
|
|
||||||
|
# Deal with hashes
|
||||||
|
if 'SHA512' in line and kind == 'HEADER':
|
||||||
|
line = ' SHA512 {}\n'.format(header_hash)
|
||||||
|
if 'SHA512' in line and kind == 'LICENSE':
|
||||||
|
line = ' SHA512 {}\n'.format(licence_hash)
|
||||||
|
f.write(line)
|
||||||
|
|
||||||
|
|
||||||
|
def git_push(path_to_repo):
|
||||||
|
v = Version()
|
||||||
|
ver_string = v.getVersionString()
|
||||||
|
|
||||||
|
# Move to the repo dir
|
||||||
|
old_path = os.getcwd()
|
||||||
|
os.chdir(path_to_repo)
|
||||||
|
|
||||||
|
# Work with git
|
||||||
|
# Make sure we branch off master
|
||||||
|
subprocess.call('git checkout master', shell=True)
|
||||||
|
|
||||||
|
# Update repo to current master, so we don't work off old version of the portsfile
|
||||||
|
subprocess.call('git pull Microsoft master', shell=True)
|
||||||
|
|
||||||
|
# Create a new branch for the update
|
||||||
|
subprocess.call('git checkout -b catch-{}'.format(ver_string), shell=True)
|
||||||
|
# Add changed files (should be only our files)
|
||||||
|
subprocess.call('git add -u .', shell=True)
|
||||||
|
# Create a commit with these changes
|
||||||
|
subprocess.call('git commit -m "Update Catch to {}"'.format(ver_string), shell=True)
|
||||||
|
# Don't push, so author can review
|
||||||
|
print('Changes were commited to the vcpkg fork. Please check, push and open PR.')
|
||||||
|
|
||||||
|
header_hash = get_hash(adjusted_path('single_include/catch.hpp'))
|
||||||
|
licence_hash = get_hash(adjusted_path('LICENSE.txt'))
|
||||||
|
update_control(adjusted_path(default_path))
|
||||||
|
update_portfile(adjusted_path(default_path), header_hash, licence_hash)
|
||||||
|
|
||||||
|
git_push(adjusted_path('../vcpkg'))
|
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Catch v1.9.1
|
* Catch v1.9.2
|
||||||
* Generated: 2017-04-09 21:21:06.285364
|
* Generated: 2017-04-25 10:41:53.040184
|
||||||
* ----------------------------------------------------------
|
* ----------------------------------------------------------
|
||||||
* This file has been merged from multiple headers. Please don't edit it directly
|
* This file has been merged from multiple headers. Please don't edit it directly
|
||||||
* Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.
|
* Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.
|
||||||
@@ -136,13 +136,19 @@
|
|||||||
#endif // __clang__
|
#endif // __clang__
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Cygwin
|
// We know some environments not to support full POSIX signals
|
||||||
#ifdef __CYGWIN__
|
#if defined(__CYGWIN__) || defined(__QNX__)
|
||||||
|
|
||||||
# if !defined(CATCH_CONFIG_POSIX_SIGNALS)
|
# if !defined(CATCH_CONFIG_POSIX_SIGNALS)
|
||||||
# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS
|
# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Cygwin
|
||||||
|
#ifdef __CYGWIN__
|
||||||
|
|
||||||
// Required for some versions of Cygwin to declare gettimeofday
|
// Required for some versions of Cygwin to declare gettimeofday
|
||||||
// see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin
|
// see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin
|
||||||
# define _BSD_SOURCE
|
# define _BSD_SOURCE
|
||||||
@@ -2397,14 +2403,19 @@ namespace Catch {
|
|||||||
// #included from: catch_timer.h
|
// #included from: catch_timer.h
|
||||||
#define TWOBLUECUBES_CATCH_TIMER_H_INCLUDED
|
#define TWOBLUECUBES_CATCH_TIMER_H_INCLUDED
|
||||||
|
|
||||||
#ifdef CATCH_PLATFORM_WINDOWS
|
#ifdef _MSC_VER
|
||||||
typedef unsigned long long uint64_t;
|
|
||||||
|
namespace Catch {
|
||||||
|
typedef unsigned long long UInt64;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
namespace Catch {
|
||||||
|
typedef uint64_t UInt64;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
class Timer {
|
class Timer {
|
||||||
public:
|
public:
|
||||||
Timer() : m_ticks( 0 ) {}
|
Timer() : m_ticks( 0 ) {}
|
||||||
@@ -2414,7 +2425,7 @@ namespace Catch {
|
|||||||
double getElapsedSeconds() const;
|
double getElapsedSeconds() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint64_t m_ticks;
|
UInt64 m_ticks;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Catch
|
} // namespace Catch
|
||||||
@@ -2769,16 +2780,17 @@ namespace Detail {
|
|||||||
return Approx( 0 );
|
return Approx( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Approx operator()( double value ) {
|
#if defined(CATCH_CONFIG_CPP11_TYPE_TRAITS)
|
||||||
Approx approx( value );
|
|
||||||
|
template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
|
||||||
|
Approx operator()( T value ) {
|
||||||
|
Approx approx( static_cast<double>(value) );
|
||||||
approx.epsilon( m_epsilon );
|
approx.epsilon( m_epsilon );
|
||||||
approx.margin( m_margin );
|
approx.margin( m_margin );
|
||||||
approx.scale( m_scale );
|
approx.scale( m_scale );
|
||||||
return approx;
|
return approx;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CATCH_CONFIG_CPP11_TYPE_TRAITS)
|
|
||||||
|
|
||||||
template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
|
template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
|
||||||
explicit Approx( T value ): Approx(static_cast<double>(value))
|
explicit Approx( T value ): Approx(static_cast<double>(value))
|
||||||
{}
|
{}
|
||||||
@@ -2828,7 +2840,35 @@ namespace Detail {
|
|||||||
friend bool operator >= ( Approx const& lhs, T rhs ) {
|
friend bool operator >= ( Approx const& lhs, T rhs ) {
|
||||||
return lhs.m_value > double(rhs) || lhs == rhs;
|
return lhs.m_value > double(rhs) || lhs == rhs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
|
||||||
|
Approx& epsilon( T newEpsilon ) {
|
||||||
|
m_epsilon = double(newEpsilon);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
|
||||||
|
Approx& margin( T newMargin ) {
|
||||||
|
m_margin = double(newMargin);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, typename = typename std::enable_if<std::is_constructible<double, T>::value>::type>
|
||||||
|
Approx& scale( T newScale ) {
|
||||||
|
m_scale = double(newScale);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
Approx operator()( double value ) {
|
||||||
|
Approx approx( value );
|
||||||
|
approx.epsilon( m_epsilon );
|
||||||
|
approx.margin( m_margin );
|
||||||
|
approx.scale( m_scale );
|
||||||
|
return approx;
|
||||||
|
}
|
||||||
|
|
||||||
friend bool operator == ( double lhs, Approx const& rhs ) {
|
friend bool operator == ( double lhs, Approx const& rhs ) {
|
||||||
// Thanks to Richard Harris for his help refining this formula
|
// Thanks to Richard Harris for his help refining this formula
|
||||||
bool relativeOK = std::fabs( lhs - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( std::fabs(lhs), std::fabs(rhs.m_value) ) );
|
bool relativeOK = std::fabs( lhs - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( std::fabs(lhs), std::fabs(rhs.m_value) ) );
|
||||||
@@ -2865,7 +2905,6 @@ namespace Detail {
|
|||||||
friend bool operator >= ( Approx const& lhs, double rhs ) {
|
friend bool operator >= ( Approx const& lhs, double rhs ) {
|
||||||
return lhs.m_value > rhs || lhs == rhs;
|
return lhs.m_value > rhs || lhs == rhs;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
Approx& epsilon( double newEpsilon ) {
|
Approx& epsilon( double newEpsilon ) {
|
||||||
m_epsilon = newEpsilon;
|
m_epsilon = newEpsilon;
|
||||||
@@ -2881,6 +2920,7 @@ namespace Detail {
|
|||||||
m_scale = newScale;
|
m_scale = newScale;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
std::string toString() const {
|
std::string toString() const {
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
@@ -3133,8 +3173,18 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
T* nullableValue;
|
T *nullableValue;
|
||||||
char storage[sizeof(T)];
|
union {
|
||||||
|
char storage[sizeof(T)];
|
||||||
|
|
||||||
|
// These are here to force alignment for the storage
|
||||||
|
long double dummy1;
|
||||||
|
void (*dummy2)();
|
||||||
|
long double dummy3;
|
||||||
|
#ifdef CATCH_CONFIG_CPP11_LONG_LONG
|
||||||
|
long long dummy4;
|
||||||
|
#endif
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
@@ -8232,7 +8282,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline Version libraryVersion() {
|
inline Version libraryVersion() {
|
||||||
static Version version( 1, 9, 1, "", 0 );
|
static Version version( 1, 9, 2, "", 0 );
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10218,7 +10268,8 @@ namespace Catch {
|
|||||||
public:
|
public:
|
||||||
JunitReporter( ReporterConfig const& _config )
|
JunitReporter( ReporterConfig const& _config )
|
||||||
: CumulativeReporterBase( _config ),
|
: CumulativeReporterBase( _config ),
|
||||||
xml( _config.stream() )
|
xml( _config.stream() ),
|
||||||
|
m_okToFail( false )
|
||||||
{
|
{
|
||||||
m_reporterPrefs.shouldRedirectStdOut = true;
|
m_reporterPrefs.shouldRedirectStdOut = true;
|
||||||
}
|
}
|
||||||
@@ -10244,8 +10295,11 @@ namespace Catch {
|
|||||||
CumulativeReporterBase::testGroupStarting( groupInfo );
|
CumulativeReporterBase::testGroupStarting( groupInfo );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void testCaseStarting( TestCaseInfo const& testCaseInfo ) CATCH_OVERRIDE {
|
||||||
|
m_okToFail = testCaseInfo.okToFail();
|
||||||
|
}
|
||||||
virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE {
|
virtual bool assertionEnded( AssertionStats const& assertionStats ) CATCH_OVERRIDE {
|
||||||
if( assertionStats.assertionResult.getResultType() == ResultWas::ThrewException )
|
if( assertionStats.assertionResult.getResultType() == ResultWas::ThrewException && !m_okToFail )
|
||||||
unexpectedExceptions++;
|
unexpectedExceptions++;
|
||||||
return CumulativeReporterBase::assertionEnded( assertionStats );
|
return CumulativeReporterBase::assertionEnded( assertionStats );
|
||||||
}
|
}
|
||||||
@@ -10410,6 +10464,7 @@ namespace Catch {
|
|||||||
std::ostringstream stdOutForSuite;
|
std::ostringstream stdOutForSuite;
|
||||||
std::ostringstream stdErrForSuite;
|
std::ostringstream stdErrForSuite;
|
||||||
unsigned int unexpectedExceptions;
|
unsigned int unexpectedExceptions;
|
||||||
|
bool m_okToFail;
|
||||||
};
|
};
|
||||||
|
|
||||||
INTERNAL_CATCH_REGISTER_REPORTER( "junit", JunitReporter )
|
INTERNAL_CATCH_REGISTER_REPORTER( "junit", JunitReporter )
|
||||||
|
Reference in New Issue
Block a user