mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-22 13:26:10 +01:00
v2.4.1
This commit is contained in:
parent
be49a539e4
commit
9e1bdca466
@ -6,7 +6,7 @@ if(NOT DEFINED PROJECT_NAME)
|
|||||||
set(NOT_SUBPROJECT ON)
|
set(NOT_SUBPROJECT ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
project(Catch2 LANGUAGES CXX VERSION 2.4.0)
|
project(Catch2 LANGUAGES CXX VERSION 2.4.1)
|
||||||
|
|
||||||
# Provide path for scripts
|
# Provide path for scripts
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/CMake")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/CMake")
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
[![Build Status](https://travis-ci.org/catchorg/Catch2.svg?branch=master)](https://travis-ci.org/catchorg/Catch2)
|
[![Build Status](https://travis-ci.org/catchorg/Catch2.svg?branch=master)](https://travis-ci.org/catchorg/Catch2)
|
||||||
[![Build status](https://ci.appveyor.com/api/projects/status/github/catchorg/Catch2?svg=true)](https://ci.appveyor.com/project/catchorg/catch2)
|
[![Build status](https://ci.appveyor.com/api/projects/status/github/catchorg/Catch2?svg=true)](https://ci.appveyor.com/project/catchorg/catch2)
|
||||||
[![codecov](https://codecov.io/gh/catchorg/Catch2/branch/master/graph/badge.svg)](https://codecov.io/gh/catchorg/Catch2)
|
[![codecov](https://codecov.io/gh/catchorg/Catch2/branch/master/graph/badge.svg)](https://codecov.io/gh/catchorg/Catch2)
|
||||||
[![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/4wRGoJ1WzLjRM7HZ)
|
[![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/E0msqwbW7U4PVbHn)
|
||||||
[![Join the chat in Discord: https://discord.gg/4CWS9zD](https://img.shields.io/badge/Discord-Chat!-brightgreen.svg)](https://discord.gg/4CWS9zD)
|
[![Join the chat in Discord: https://discord.gg/4CWS9zD](https://img.shields.io/badge/Discord-Chat!-brightgreen.svg)](https://discord.gg/4CWS9zD)
|
||||||
|
|
||||||
|
|
||||||
<a href="https://github.com/catchorg/Catch2/releases/download/v2.4.0/catch.hpp">The latest version of the single header can be downloaded directly using this link</a>
|
<a href="https://github.com/catchorg/Catch2/releases/download/v2.4.1/catch.hpp">The latest version of the single header can be downloaded directly using this link</a>
|
||||||
|
|
||||||
## Catch2 is released!
|
## Catch2 is released!
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ from conans import ConanFile, CMake
|
|||||||
|
|
||||||
class CatchConan(ConanFile):
|
class CatchConan(ConanFile):
|
||||||
name = "Catch"
|
name = "Catch"
|
||||||
version = "2.4.0"
|
version = "2.4.1"
|
||||||
description = "A modern, C++-native, header-only, framework for unit-tests, TDD and BDD"
|
description = "A modern, C++-native, header-only, framework for unit-tests, TDD and BDD"
|
||||||
author = "philsquared"
|
author = "philsquared"
|
||||||
generators = "cmake"
|
generators = "cmake"
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
# Release notes
|
# Release notes
|
||||||
**Contents**<br>
|
**Contents**<br>
|
||||||
|
[2.4.1](#241)<br>
|
||||||
[2.4.0](#240)<br>
|
[2.4.0](#240)<br>
|
||||||
[2.3.0](#230)<br>
|
[2.3.0](#230)<br>
|
||||||
[2.2.3](#223)<br>
|
[2.2.3](#223)<br>
|
||||||
@ -16,6 +17,19 @@
|
|||||||
[Even Older versions](#even-older-versions)<br>
|
[Even Older versions](#even-older-versions)<br>
|
||||||
|
|
||||||
|
|
||||||
|
## 2.4.1
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
* Added a StringMaker for `std::(w)string_view` (#1375, #1376)
|
||||||
|
* Added a StringMaker for `std::variant` (#1380)
|
||||||
|
* This one is disabled by default to avoid increased compile-time drag
|
||||||
|
* Added detection for cygwin environment without `std::to_string` (#1396, #1397)
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
* `UnorderedEqualsMatcher` will no longer accept erroneously accept
|
||||||
|
vectors that share suffix, but are not permutation of the desired vector
|
||||||
|
* Abort after (`-x N`) can no longer be overshot by nested `REQUIRES` and
|
||||||
|
subsequently ignored (#1391, #1392)
|
||||||
|
|
||||||
|
|
||||||
## 2.4.0
|
## 2.4.0
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#define CATCH_VERSION_MAJOR 2
|
#define CATCH_VERSION_MAJOR 2
|
||||||
#define CATCH_VERSION_MINOR 4
|
#define CATCH_VERSION_MINOR 4
|
||||||
#define CATCH_VERSION_PATCH 0
|
#define CATCH_VERSION_PATCH 1
|
||||||
|
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
# pragma clang system_header
|
# pragma clang system_header
|
||||||
|
@ -37,7 +37,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Version const& libraryVersion() {
|
Version const& libraryVersion() {
|
||||||
static Version version( 2, 4, 0, "", 0 );
|
static Version version( 2, 4, 1, "", 0 );
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Catch v2.4.0
|
* Catch v2.4.1
|
||||||
* Generated: 2018-09-04 11:55:01.682061
|
* Generated: 2018-09-28 15:50:15.645795
|
||||||
* ----------------------------------------------------------
|
* ----------------------------------------------------------
|
||||||
* 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) 2018 Two Blue Cubes Ltd. All rights reserved.
|
* Copyright (c) 2018 Two Blue Cubes Ltd. All rights reserved.
|
||||||
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
#define CATCH_VERSION_MAJOR 2
|
#define CATCH_VERSION_MAJOR 2
|
||||||
#define CATCH_VERSION_MINOR 4
|
#define CATCH_VERSION_MINOR 4
|
||||||
#define CATCH_VERSION_PATCH 0
|
#define CATCH_VERSION_PATCH 1
|
||||||
|
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
# pragma clang system_header
|
# pragma clang system_header
|
||||||
@ -121,11 +121,11 @@ namespace Catch {
|
|||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
||||||
# if __cplusplus >= 201402L
|
# if (__cplusplus >= 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L)
|
||||||
# define CATCH_CPP14_OR_GREATER
|
# define CATCH_CPP14_OR_GREATER
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# if __cplusplus >= 201703L
|
# if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
|
||||||
# define CATCH_CPP17_OR_GREATER
|
# define CATCH_CPP17_OR_GREATER
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -200,7 +200,14 @@ namespace Catch {
|
|||||||
// 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
|
||||||
|
// some versions of cygwin (most) do not support std::to_string. Use the libstd check.
|
||||||
|
// https://gcc.gnu.org/onlinedocs/gcc-4.8.2/libstdc++/api/a01053_source.html line 2812-2813
|
||||||
|
# if !((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \
|
||||||
|
&& !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF))
|
||||||
|
|
||||||
|
# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING
|
||||||
|
|
||||||
|
# endif
|
||||||
#endif // __CYGWIN__
|
#endif // __CYGWIN__
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -244,6 +251,32 @@ namespace Catch {
|
|||||||
#define CATCH_INTERNAL_CONFIG_COUNTER
|
#define CATCH_INTERNAL_CONFIG_COUNTER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Check if string_view is available and usable
|
||||||
|
// The check is split apart to work around v140 (VS2015) preprocessor issue...
|
||||||
|
#if defined(__has_include)
|
||||||
|
#if __has_include(<string_view>) && defined(CATCH_CPP17_OR_GREATER)
|
||||||
|
# define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Check if variant is available and usable
|
||||||
|
#if defined(__has_include)
|
||||||
|
# if __has_include(<variant>) && defined(CATCH_CPP17_OR_GREATER)
|
||||||
|
# if defined(__clang__) && (__clang_major__ < 8)
|
||||||
|
// work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852
|
||||||
|
// fix should be in clang 8, workaround in libstdc++ 8.2
|
||||||
|
# include <ciso646>
|
||||||
|
# if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9)
|
||||||
|
# define CATCH_CONFIG_NO_CPP17_VARIANT
|
||||||
|
# else
|
||||||
|
# define CATCH_INTERNAL_CONFIG_CPP17_VARIANT
|
||||||
|
# endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9)
|
||||||
|
# endif // defined(__clang__) && (__clang_major__ < 8)
|
||||||
|
# endif // __has_include(<variant>) && defined(CATCH_CPP17_OR_GREATER)
|
||||||
|
#endif // __has_include
|
||||||
|
|
||||||
#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER)
|
#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER)
|
||||||
# define CATCH_CONFIG_COUNTER
|
# define CATCH_CONFIG_COUNTER
|
||||||
#endif
|
#endif
|
||||||
@ -267,6 +300,14 @@ namespace Catch {
|
|||||||
# define CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS
|
# define CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_NO_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_CPP17_STRING_VIEW)
|
||||||
|
# define CATCH_CONFIG_CPP17_STRING_VIEW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(CATCH_INTERNAL_CONFIG_CPP17_VARIANT) && !defined(CATCH_CONFIG_NO_CPP17_VARIANT) && !defined(CATCH_CONFIG_CPP17_VARIANT)
|
||||||
|
# define CATCH_CONFIG_CPP17_VARIANT
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT)
|
#if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT)
|
||||||
# define CATCH_INTERNAL_CONFIG_NEW_CAPTURE
|
# define CATCH_INTERNAL_CONFIG_NEW_CAPTURE
|
||||||
#endif
|
#endif
|
||||||
@ -754,6 +795,10 @@ namespace Catch {
|
|||||||
|
|
||||||
// end catch_stream.h
|
// end catch_stream.h
|
||||||
|
|
||||||
|
#ifdef CATCH_CONFIG_CPP17_STRING_VIEW
|
||||||
|
#include <string_view>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __OBJC__
|
#ifdef __OBJC__
|
||||||
// start catch_objc_arc.hpp
|
// start catch_objc_arc.hpp
|
||||||
|
|
||||||
@ -929,10 +974,11 @@ namespace Catch {
|
|||||||
struct StringMaker<std::string> {
|
struct StringMaker<std::string> {
|
||||||
static std::string convert(const std::string& str);
|
static std::string convert(const std::string& str);
|
||||||
};
|
};
|
||||||
#ifdef CATCH_CONFIG_WCHAR
|
|
||||||
|
#ifdef CATCH_CONFIG_CPP17_STRING_VIEW
|
||||||
template<>
|
template<>
|
||||||
struct StringMaker<std::wstring> {
|
struct StringMaker<std::string_view> {
|
||||||
static std::string convert(const std::wstring& wstr);
|
static std::string convert(std::string_view str);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -946,6 +992,18 @@ namespace Catch {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CATCH_CONFIG_WCHAR
|
#ifdef CATCH_CONFIG_WCHAR
|
||||||
|
template<>
|
||||||
|
struct StringMaker<std::wstring> {
|
||||||
|
static std::string convert(const std::wstring& wstr);
|
||||||
|
};
|
||||||
|
|
||||||
|
# ifdef CATCH_CONFIG_CPP17_STRING_VIEW
|
||||||
|
template<>
|
||||||
|
struct StringMaker<std::wstring_view> {
|
||||||
|
static std::string convert(std::wstring_view str);
|
||||||
|
};
|
||||||
|
# endif
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
struct StringMaker<wchar_t const *> {
|
struct StringMaker<wchar_t const *> {
|
||||||
static std::string convert(wchar_t const * str);
|
static std::string convert(wchar_t const * str);
|
||||||
@ -1114,6 +1172,7 @@ namespace Catch {
|
|||||||
#if defined(CATCH_CONFIG_ENABLE_ALL_STRINGMAKERS)
|
#if defined(CATCH_CONFIG_ENABLE_ALL_STRINGMAKERS)
|
||||||
# define CATCH_CONFIG_ENABLE_PAIR_STRINGMAKER
|
# define CATCH_CONFIG_ENABLE_PAIR_STRINGMAKER
|
||||||
# define CATCH_CONFIG_ENABLE_TUPLE_STRINGMAKER
|
# define CATCH_CONFIG_ENABLE_TUPLE_STRINGMAKER
|
||||||
|
# define CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER
|
||||||
# define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER
|
# define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1177,6 +1236,34 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
#endif // CATCH_CONFIG_ENABLE_TUPLE_STRINGMAKER
|
#endif // CATCH_CONFIG_ENABLE_TUPLE_STRINGMAKER
|
||||||
|
|
||||||
|
#if defined(CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER) && defined(CATCH_CONFIG_CPP17_VARIANT)
|
||||||
|
#include <variant>
|
||||||
|
namespace Catch {
|
||||||
|
template<>
|
||||||
|
struct StringMaker<std::monostate> {
|
||||||
|
static std::string convert(const std::monostate&) {
|
||||||
|
return "{ }";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename... Elements>
|
||||||
|
struct StringMaker<std::variant<Elements...>> {
|
||||||
|
static std::string convert(const std::variant<Elements...>& variant) {
|
||||||
|
if (variant.valueless_by_exception()) {
|
||||||
|
return "{valueless variant}";
|
||||||
|
} else {
|
||||||
|
return std::visit(
|
||||||
|
[](const auto& value) {
|
||||||
|
return ::Catch::Detail::stringify(value);
|
||||||
|
},
|
||||||
|
variant
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
#endif // CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
struct not_this_one {}; // Tag type for detecting which begin/ end are being selected
|
struct not_this_one {}; // Tag type for detecting which begin/ end are being selected
|
||||||
|
|
||||||
@ -2761,7 +2848,7 @@ namespace Matchers {
|
|||||||
auto lfirst = m_target.begin(), llast = m_target.end();
|
auto lfirst = m_target.begin(), llast = m_target.end();
|
||||||
auto rfirst = vec.begin(), rlast = vec.end();
|
auto rfirst = vec.begin(), rlast = vec.end();
|
||||||
// Cut common prefix to optimize checking of permuted parts
|
// Cut common prefix to optimize checking of permuted parts
|
||||||
while (lfirst != llast && *lfirst != *rfirst) {
|
while (lfirst != llast && *lfirst == *rfirst) {
|
||||||
++lfirst; ++rfirst;
|
++lfirst; ++rfirst;
|
||||||
}
|
}
|
||||||
if (lfirst == llast) {
|
if (lfirst == llast) {
|
||||||
@ -9597,7 +9684,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool RunContext::aborting() const {
|
bool RunContext::aborting() const {
|
||||||
return m_totals.assertions.failed == static_cast<std::size_t>(m_config->abortAfter());
|
return m_totals.assertions.failed >= static_cast<std::size_t>(m_config->abortAfter());
|
||||||
}
|
}
|
||||||
|
|
||||||
void RunContext::runCurrentTest(std::string & redirectedCout, std::string & redirectedCerr) {
|
void RunContext::runCurrentTest(std::string & redirectedCout, std::string & redirectedCerr) {
|
||||||
@ -11512,14 +11599,9 @@ std::string StringMaker<std::string>::convert(const std::string& str) {
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CATCH_CONFIG_WCHAR
|
#ifdef CATCH_CONFIG_CPP17_STRING_VIEW
|
||||||
std::string StringMaker<std::wstring>::convert(const std::wstring& wstr) {
|
std::string StringMaker<std::string_view>::convert(std::string_view str) {
|
||||||
std::string s;
|
return ::Catch::Detail::stringify(std::string{ str });
|
||||||
s.reserve(wstr.size());
|
|
||||||
for (auto c : wstr) {
|
|
||||||
s += (c <= 0xff) ? static_cast<char>(c) : '?';
|
|
||||||
}
|
|
||||||
return ::Catch::Detail::stringify(s);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -11537,7 +11619,23 @@ std::string StringMaker<char*>::convert(char* str) {
|
|||||||
return{ "{null string}" };
|
return{ "{null string}" };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CATCH_CONFIG_WCHAR
|
#ifdef CATCH_CONFIG_WCHAR
|
||||||
|
std::string StringMaker<std::wstring>::convert(const std::wstring& wstr) {
|
||||||
|
std::string s;
|
||||||
|
s.reserve(wstr.size());
|
||||||
|
for (auto c : wstr) {
|
||||||
|
s += (c <= 0xff) ? static_cast<char>(c) : '?';
|
||||||
|
}
|
||||||
|
return ::Catch::Detail::stringify(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
# ifdef CATCH_CONFIG_CPP17_STRING_VIEW
|
||||||
|
std::string StringMaker<std::wstring_view>::convert(std::wstring_view str) {
|
||||||
|
return StringMaker<std::wstring>::convert(std::wstring(str));
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
std::string StringMaker<wchar_t const*>::convert(wchar_t const * str) {
|
std::string StringMaker<wchar_t const*>::convert(wchar_t const * str) {
|
||||||
if (str) {
|
if (str) {
|
||||||
return ::Catch::Detail::stringify(std::wstring{ str });
|
return ::Catch::Detail::stringify(std::wstring{ str });
|
||||||
@ -11738,7 +11836,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Version const& libraryVersion() {
|
Version const& libraryVersion() {
|
||||||
static Version version( 2, 4, 0, "", 0 );
|
static Version version( 2, 4, 1, "", 0 );
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ class CatchConanTest(ConanFile):
|
|||||||
settings = "os", "compiler", "arch", "build_type"
|
settings = "os", "compiler", "arch", "build_type"
|
||||||
username = getenv("CONAN_USERNAME", "philsquared")
|
username = getenv("CONAN_USERNAME", "philsquared")
|
||||||
channel = getenv("CONAN_CHANNEL", "testing")
|
channel = getenv("CONAN_CHANNEL", "testing")
|
||||||
requires = "Catch/2.4.0@%s/%s" % (username, channel)
|
requires = "Catch/2.4.1@%s/%s" % (username, channel)
|
||||||
|
|
||||||
def build(self):
|
def build(self):
|
||||||
cmake = CMake(self)
|
cmake = CMake(self)
|
||||||
|
Loading…
Reference in New Issue
Block a user