mirror of
https://github.com/nlohmann/json
synced 2024-11-22 20:10:06 +00:00
Doctest is updated to v2.4.3
This commit is contained in:
parent
8593260044
commit
a1772743a1
274
test/thirdparty/doctest/doctest.h
vendored
Executable file → Normal file
274
test/thirdparty/doctest/doctest.h
vendored
Executable file → Normal file
@ -48,8 +48,8 @@
|
||||
|
||||
#define DOCTEST_VERSION_MAJOR 2
|
||||
#define DOCTEST_VERSION_MINOR 4
|
||||
#define DOCTEST_VERSION_PATCH 1
|
||||
#define DOCTEST_VERSION_STR "2.4.1"
|
||||
#define DOCTEST_VERSION_PATCH 3
|
||||
#define DOCTEST_VERSION_STR "2.4.3"
|
||||
|
||||
#define DOCTEST_VERSION \
|
||||
(DOCTEST_VERSION_MAJOR * 10000 + DOCTEST_VERSION_MINOR * 100 + DOCTEST_VERSION_PATCH)
|
||||
@ -368,7 +368,7 @@ DOCTEST_MSVC_SUPPRESS_WARNING(26812) // Prefer 'enum class' over 'enum'
|
||||
#define DOCTEST_BREAK_INTO_DEBUGGER() raise(SIGTRAP)
|
||||
#endif
|
||||
#elif defined(DOCTEST_PLATFORM_MAC)
|
||||
#if defined(__x86_64) || defined(__x86_64__) || defined(__amd64__)
|
||||
#if defined(__x86_64) || defined(__x86_64__) || defined(__amd64__) || defined(__i386)
|
||||
#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("int $3\n" : :)
|
||||
#else
|
||||
#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("brk #0");
|
||||
@ -747,6 +747,7 @@ struct ContextOptions //!OCLINT too many fields
|
||||
bool gnu_file_line; // if line numbers should be surrounded with :x: and not (x):
|
||||
bool no_path_in_filenames; // if the path to files should be removed from the output
|
||||
bool no_line_numbers; // if source code line numbers should be omitted from the output
|
||||
bool no_debug_output; // no output in the debug console when a debugger is attached
|
||||
bool no_skipped_summary; // don't print "skipped" in the summary !!! UNDOCUMENTED !!!
|
||||
bool no_time_in_output; // omit any time/timestamps from output !!! UNDOCUMENTED !!!
|
||||
|
||||
@ -806,7 +807,7 @@ namespace detail {
|
||||
} // namespace has_insertion_operator_impl
|
||||
|
||||
template<class T>
|
||||
using has_insertion_operator = has_insertion_operator_impl::check<T>;
|
||||
using has_insertion_operator = has_insertion_operator_impl::check<const T>;
|
||||
|
||||
DOCTEST_INTERFACE void my_memcpy(void* dest, const void* src, unsigned num);
|
||||
|
||||
@ -1035,6 +1036,7 @@ namespace detail {
|
||||
template <typename L, typename R>
|
||||
String stringifyBinaryExpr(const DOCTEST_REF_WRAP(L) lhs, const char* op,
|
||||
const DOCTEST_REF_WRAP(R) rhs) {
|
||||
// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
|
||||
return toString(lhs) + op + toString(rhs);
|
||||
}
|
||||
|
||||
@ -1122,6 +1124,7 @@ namespace detail {
|
||||
#define DOCTEST_COMPARISON_RETURN_TYPE bool
|
||||
#else // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
|
||||
#define DOCTEST_COMPARISON_RETURN_TYPE typename enable_if<can_use_op<L>::value || can_use_op<R>::value, bool>::type
|
||||
// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
|
||||
inline bool eq(const char* lhs, const char* rhs) { return String(lhs) == String(rhs); }
|
||||
inline bool ne(const char* lhs, const char* rhs) { return String(lhs) != String(rhs); }
|
||||
inline bool lt(const char* lhs, const char* rhs) { return String(lhs) < String(rhs); }
|
||||
@ -1510,7 +1513,7 @@ namespace detail {
|
||||
DOCTEST_INTERFACE void toStream(std::ostream* s, int long long in);
|
||||
DOCTEST_INTERFACE void toStream(std::ostream* s, int long long unsigned in);
|
||||
|
||||
// ContextScope base class used to allow implementing methods of ContextScope
|
||||
// ContextScope base class used to allow implementing methods of ContextScope
|
||||
// that don't depend on the template parameter in doctest.cpp.
|
||||
class DOCTEST_INTERFACE ContextScopeBase : public IContextScope {
|
||||
protected:
|
||||
@ -1541,12 +1544,24 @@ namespace detail {
|
||||
MessageBuilder() = delete;
|
||||
~MessageBuilder();
|
||||
|
||||
// the preferred way of chaining parameters for stringification
|
||||
template <typename T>
|
||||
MessageBuilder& operator<<(const T& in) {
|
||||
MessageBuilder& operator,(const T& in) {
|
||||
toStream(m_stream, in);
|
||||
return *this;
|
||||
}
|
||||
|
||||
// kept here just for backwards-compatibility - the comma operator should be preferred now
|
||||
template <typename T>
|
||||
MessageBuilder& operator<<(const T& in) { return this->operator,(in); }
|
||||
|
||||
// the `,` operator has the lowest operator precedence - if `<<` is used by the user then
|
||||
// the `,` operator will be called last which is not what we want and thus the `*` operator
|
||||
// is used first (has higher operator precedence compared to `<<`) so that we guarantee that
|
||||
// an operator of the MessageBuilder class is called first before the rest of the parameters
|
||||
template <typename T>
|
||||
MessageBuilder& operator*(const T& in) { return this->operator,(in); }
|
||||
|
||||
bool log();
|
||||
void react();
|
||||
};
|
||||
@ -1962,38 +1977,38 @@ int registerReporter(const char* name, int priority, bool isReporter) {
|
||||
DOCTEST_GLOBAL_NO_WARNINGS_END() typedef int DOCTEST_ANONYMOUS(_DOCTEST_ANON_FOR_SEMICOLON_)
|
||||
|
||||
// for logging
|
||||
#define DOCTEST_INFO(expression) \
|
||||
#define DOCTEST_INFO(...) \
|
||||
DOCTEST_INFO_IMPL(DOCTEST_ANONYMOUS(_DOCTEST_CAPTURE_), DOCTEST_ANONYMOUS(_DOCTEST_CAPTURE_), \
|
||||
DOCTEST_ANONYMOUS(_DOCTEST_CAPTURE_), expression)
|
||||
DOCTEST_ANONYMOUS(_DOCTEST_CAPTURE_), __VA_ARGS__)
|
||||
|
||||
#define DOCTEST_INFO_IMPL(lambda_name, mb_name, s_name, expression) \
|
||||
#define DOCTEST_INFO_IMPL(lambda_name, mb_name, s_name, ...) \
|
||||
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4626) \
|
||||
auto lambda_name = [&](std::ostream* s_name) { \
|
||||
doctest::detail::MessageBuilder mb_name(__FILE__, __LINE__, doctest::assertType::is_warn); \
|
||||
mb_name.m_stream = s_name; \
|
||||
mb_name << expression; \
|
||||
mb_name * __VA_ARGS__; \
|
||||
}; \
|
||||
DOCTEST_MSVC_SUPPRESS_WARNING_POP \
|
||||
auto DOCTEST_ANONYMOUS(_DOCTEST_CAPTURE_) = doctest::detail::MakeContextScope(lambda_name)
|
||||
|
||||
#define DOCTEST_CAPTURE(x) DOCTEST_INFO(#x " := " << x)
|
||||
#define DOCTEST_CAPTURE(x) DOCTEST_INFO(#x " := ", x)
|
||||
|
||||
#define DOCTEST_ADD_AT_IMPL(type, file, line, mb, x) \
|
||||
#define DOCTEST_ADD_AT_IMPL(type, file, line, mb, ...) \
|
||||
do { \
|
||||
doctest::detail::MessageBuilder mb(file, line, doctest::assertType::type); \
|
||||
mb << x; \
|
||||
mb * __VA_ARGS__; \
|
||||
DOCTEST_ASSERT_LOG_AND_REACT(mb); \
|
||||
} while(false)
|
||||
|
||||
// clang-format off
|
||||
#define DOCTEST_ADD_MESSAGE_AT(file, line, x) DOCTEST_ADD_AT_IMPL(is_warn, file, line, DOCTEST_ANONYMOUS(_DOCTEST_MESSAGE_), x)
|
||||
#define DOCTEST_ADD_FAIL_CHECK_AT(file, line, x) DOCTEST_ADD_AT_IMPL(is_check, file, line, DOCTEST_ANONYMOUS(_DOCTEST_MESSAGE_), x)
|
||||
#define DOCTEST_ADD_FAIL_AT(file, line, x) DOCTEST_ADD_AT_IMPL(is_require, file, line, DOCTEST_ANONYMOUS(_DOCTEST_MESSAGE_), x)
|
||||
#define DOCTEST_ADD_MESSAGE_AT(file, line, ...) DOCTEST_ADD_AT_IMPL(is_warn, file, line, DOCTEST_ANONYMOUS(_DOCTEST_MESSAGE_), __VA_ARGS__)
|
||||
#define DOCTEST_ADD_FAIL_CHECK_AT(file, line, ...) DOCTEST_ADD_AT_IMPL(is_check, file, line, DOCTEST_ANONYMOUS(_DOCTEST_MESSAGE_), __VA_ARGS__)
|
||||
#define DOCTEST_ADD_FAIL_AT(file, line, ...) DOCTEST_ADD_AT_IMPL(is_require, file, line, DOCTEST_ANONYMOUS(_DOCTEST_MESSAGE_), __VA_ARGS__)
|
||||
// clang-format on
|
||||
|
||||
#define DOCTEST_MESSAGE(x) DOCTEST_ADD_MESSAGE_AT(__FILE__, __LINE__, x)
|
||||
#define DOCTEST_FAIL_CHECK(x) DOCTEST_ADD_FAIL_CHECK_AT(__FILE__, __LINE__, x)
|
||||
#define DOCTEST_FAIL(x) DOCTEST_ADD_FAIL_AT(__FILE__, __LINE__, x)
|
||||
#define DOCTEST_MESSAGE(...) DOCTEST_ADD_MESSAGE_AT(__FILE__, __LINE__, __VA_ARGS__)
|
||||
#define DOCTEST_FAIL_CHECK(...) DOCTEST_ADD_FAIL_CHECK_AT(__FILE__, __LINE__, __VA_ARGS__)
|
||||
#define DOCTEST_FAIL(...) DOCTEST_ADD_FAIL_AT(__FILE__, __LINE__, __VA_ARGS__)
|
||||
|
||||
#define DOCTEST_TO_LVALUE(...) __VA_ARGS__ // Not removed to keep backwards compatibility.
|
||||
|
||||
@ -2036,12 +2051,12 @@ int registerReporter(const char* name, int priority, bool isReporter) {
|
||||
#define DOCTEST_REQUIRE_FALSE(...) DOCTEST_ASSERT_IMPLEMENT_1(DT_REQUIRE_FALSE, __VA_ARGS__)
|
||||
|
||||
// clang-format off
|
||||
#define DOCTEST_WARN_MESSAGE(cond, msg) do { DOCTEST_INFO(msg); DOCTEST_ASSERT_IMPLEMENT_2(DT_WARN, cond); } while(false)
|
||||
#define DOCTEST_CHECK_MESSAGE(cond, msg) do { DOCTEST_INFO(msg); DOCTEST_ASSERT_IMPLEMENT_2(DT_CHECK, cond); } while(false)
|
||||
#define DOCTEST_REQUIRE_MESSAGE(cond, msg) do { DOCTEST_INFO(msg); DOCTEST_ASSERT_IMPLEMENT_2(DT_REQUIRE, cond); } while(false)
|
||||
#define DOCTEST_WARN_FALSE_MESSAGE(cond, msg) do { DOCTEST_INFO(msg); DOCTEST_ASSERT_IMPLEMENT_2(DT_WARN_FALSE, cond); } while(false)
|
||||
#define DOCTEST_CHECK_FALSE_MESSAGE(cond, msg) do { DOCTEST_INFO(msg); DOCTEST_ASSERT_IMPLEMENT_2(DT_CHECK_FALSE, cond); } while(false)
|
||||
#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, msg) do { DOCTEST_INFO(msg); DOCTEST_ASSERT_IMPLEMENT_2(DT_REQUIRE_FALSE, cond); } while(false)
|
||||
#define DOCTEST_WARN_MESSAGE(cond, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_WARN, cond); } while(false)
|
||||
#define DOCTEST_CHECK_MESSAGE(cond, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_CHECK, cond); } while(false)
|
||||
#define DOCTEST_REQUIRE_MESSAGE(cond, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_REQUIRE, cond); } while(false)
|
||||
#define DOCTEST_WARN_FALSE_MESSAGE(cond, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_WARN_FALSE, cond); } while(false)
|
||||
#define DOCTEST_CHECK_FALSE_MESSAGE(cond, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_CHECK_FALSE, cond); } while(false)
|
||||
#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_REQUIRE_FALSE, cond); } while(false)
|
||||
// clang-format on
|
||||
|
||||
#define DOCTEST_ASSERT_THROWS_AS(expr, assert_type, message, ...) \
|
||||
@ -2051,8 +2066,8 @@ int registerReporter(const char* name, int priority, bool isReporter) {
|
||||
__LINE__, #expr, #__VA_ARGS__, message); \
|
||||
try { \
|
||||
DOCTEST_CAST_TO_VOID(expr) \
|
||||
} catch(const doctest::detail::remove_const< \
|
||||
doctest::detail::remove_reference<__VA_ARGS__>::type>::type&) { \
|
||||
} catch(const typename doctest::detail::remove_const< \
|
||||
typename doctest::detail::remove_reference<__VA_ARGS__>::type>::type&) { \
|
||||
_DOCTEST_RB.translateException(); \
|
||||
_DOCTEST_RB.m_threw_as = true; \
|
||||
} catch(...) { _DOCTEST_RB.translateException(); } \
|
||||
@ -2103,21 +2118,21 @@ int registerReporter(const char* name, int priority, bool isReporter) {
|
||||
#define DOCTEST_CHECK_NOTHROW(...) DOCTEST_ASSERT_NOTHROW(DT_CHECK_NOTHROW, __VA_ARGS__)
|
||||
#define DOCTEST_REQUIRE_NOTHROW(...) DOCTEST_ASSERT_NOTHROW(DT_REQUIRE_NOTHROW, __VA_ARGS__)
|
||||
|
||||
#define DOCTEST_WARN_THROWS_MESSAGE(expr, msg) do { DOCTEST_INFO(msg); DOCTEST_WARN_THROWS(expr); } while(false)
|
||||
#define DOCTEST_CHECK_THROWS_MESSAGE(expr, msg) do { DOCTEST_INFO(msg); DOCTEST_CHECK_THROWS(expr); } while(false)
|
||||
#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, msg) do { DOCTEST_INFO(msg); DOCTEST_REQUIRE_THROWS(expr); } while(false)
|
||||
#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, msg) do { DOCTEST_INFO(msg); DOCTEST_WARN_THROWS_AS(expr, ex); } while(false)
|
||||
#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, msg) do { DOCTEST_INFO(msg); DOCTEST_CHECK_THROWS_AS(expr, ex); } while(false)
|
||||
#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, msg) do { DOCTEST_INFO(msg); DOCTEST_REQUIRE_THROWS_AS(expr, ex); } while(false)
|
||||
#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, msg) do { DOCTEST_INFO(msg); DOCTEST_WARN_THROWS_WITH(expr, with); } while(false)
|
||||
#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, msg) do { DOCTEST_INFO(msg); DOCTEST_CHECK_THROWS_WITH(expr, with); } while(false)
|
||||
#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, msg) do { DOCTEST_INFO(msg); DOCTEST_REQUIRE_THROWS_WITH(expr, with); } while(false)
|
||||
#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) do { DOCTEST_INFO(msg); DOCTEST_WARN_THROWS_WITH_AS(expr, with, ex); } while(false)
|
||||
#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) do { DOCTEST_INFO(msg); DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ex); } while(false)
|
||||
#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) do { DOCTEST_INFO(msg); DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ex); } while(false)
|
||||
#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, msg) do { DOCTEST_INFO(msg); DOCTEST_WARN_NOTHROW(expr); } while(false)
|
||||
#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, msg) do { DOCTEST_INFO(msg); DOCTEST_CHECK_NOTHROW(expr); } while(false)
|
||||
#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, msg) do { DOCTEST_INFO(msg); DOCTEST_REQUIRE_NOTHROW(expr); } while(false)
|
||||
#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS(expr); } while(false)
|
||||
#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS(expr); } while(false)
|
||||
#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS(expr); } while(false)
|
||||
#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_AS(expr, ex); } while(false)
|
||||
#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_AS(expr, ex); } while(false)
|
||||
#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_AS(expr, ex); } while(false)
|
||||
#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_WITH(expr, with); } while(false)
|
||||
#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_WITH(expr, with); } while(false)
|
||||
#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_WITH(expr, with); } while(false)
|
||||
#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_WITH_AS(expr, with, ex); } while(false)
|
||||
#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ex); } while(false)
|
||||
#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ex); } while(false)
|
||||
#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_NOTHROW(expr); } while(false)
|
||||
#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_NOTHROW(expr); } while(false)
|
||||
#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) do { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_NOTHROW(expr); } while(false)
|
||||
// clang-format on
|
||||
|
||||
#ifndef DOCTEST_CONFIG_SUPER_FAST_ASSERTS
|
||||
@ -2230,21 +2245,21 @@ int registerReporter(const char* name, int priority, bool isReporter) {
|
||||
#define DOCTEST_CHECK_NOTHROW(...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_NOTHROW(...) (static_cast<void>(0))
|
||||
|
||||
#define DOCTEST_WARN_THROWS_MESSAGE(expr, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_MESSAGE(expr, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) (static_cast<void>(0))
|
||||
|
||||
#else // DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS
|
||||
|
||||
@ -2335,14 +2350,14 @@ int registerReporter(const char* name, int priority, bool isReporter) {
|
||||
#define DOCTEST_REGISTER_REPORTER(name, priority, reporter)
|
||||
#define DOCTEST_REGISTER_LISTENER(name, priority, reporter)
|
||||
|
||||
#define DOCTEST_INFO(x) (static_cast<void>(0))
|
||||
#define DOCTEST_INFO(...) (static_cast<void>(0))
|
||||
#define DOCTEST_CAPTURE(x) (static_cast<void>(0))
|
||||
#define DOCTEST_ADD_MESSAGE_AT(file, line, x) (static_cast<void>(0))
|
||||
#define DOCTEST_ADD_FAIL_CHECK_AT(file, line, x) (static_cast<void>(0))
|
||||
#define DOCTEST_ADD_FAIL_AT(file, line, x) (static_cast<void>(0))
|
||||
#define DOCTEST_MESSAGE(x) (static_cast<void>(0))
|
||||
#define DOCTEST_FAIL_CHECK(x) (static_cast<void>(0))
|
||||
#define DOCTEST_FAIL(x) (static_cast<void>(0))
|
||||
#define DOCTEST_ADD_MESSAGE_AT(file, line, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_ADD_FAIL_CHECK_AT(file, line, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_ADD_FAIL_AT(file, line, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_MESSAGE(...) (static_cast<void>(0))
|
||||
#define DOCTEST_FAIL_CHECK(...) (static_cast<void>(0))
|
||||
#define DOCTEST_FAIL(...) (static_cast<void>(0))
|
||||
|
||||
#define DOCTEST_WARN(...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK(...) (static_cast<void>(0))
|
||||
@ -2351,12 +2366,12 @@ int registerReporter(const char* name, int priority, bool isReporter) {
|
||||
#define DOCTEST_CHECK_FALSE(...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_FALSE(...) (static_cast<void>(0))
|
||||
|
||||
#define DOCTEST_WARN_MESSAGE(cond, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_MESSAGE(cond, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_MESSAGE(cond, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_FALSE_MESSAGE(cond, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_FALSE_MESSAGE(cond, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_MESSAGE(cond, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_MESSAGE(cond, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_MESSAGE(cond, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_FALSE_MESSAGE(cond, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_FALSE_MESSAGE(cond, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, ...) (static_cast<void>(0))
|
||||
|
||||
#define DOCTEST_WARN_THROWS(...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS(...) (static_cast<void>(0))
|
||||
@ -2374,21 +2389,21 @@ int registerReporter(const char* name, int priority, bool isReporter) {
|
||||
#define DOCTEST_CHECK_NOTHROW(...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_NOTHROW(...) (static_cast<void>(0))
|
||||
|
||||
#define DOCTEST_WARN_THROWS_MESSAGE(expr, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_MESSAGE(expr, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, msg) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) (static_cast<void>(0))
|
||||
#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) (static_cast<void>(0))
|
||||
|
||||
#define DOCTEST_WARN_EQ(...) (static_cast<void>(0))
|
||||
#define DOCTEST_CHECK_EQ(...) (static_cast<void>(0))
|
||||
@ -2754,9 +2769,7 @@ DOCTEST_MAKE_STD_HEADERS_CLEAN_FROM_WARNINGS_ON_WALL_BEGIN
|
||||
#include <map>
|
||||
#include <exception>
|
||||
#include <stdexcept>
|
||||
#ifdef DOCTEST_CONFIG_POSIX_SIGNALS
|
||||
#include <csignal>
|
||||
#endif // DOCTEST_CONFIG_POSIX_SIGNALS
|
||||
#include <cfloat>
|
||||
#include <cctype>
|
||||
#include <cstdint>
|
||||
@ -2912,7 +2925,7 @@ namespace detail {
|
||||
|
||||
namespace timer_large_integer
|
||||
{
|
||||
|
||||
|
||||
#if defined(DOCTEST_PLATFORM_WINDOWS)
|
||||
typedef ULONGLONG type;
|
||||
#else // DOCTEST_PLATFORM_WINDOWS
|
||||
@ -3071,6 +3084,7 @@ String::String() {
|
||||
String::~String() {
|
||||
if(!isOnStack())
|
||||
delete[] data.ptr;
|
||||
// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
|
||||
}
|
||||
|
||||
String::String(const char* in)
|
||||
@ -3112,6 +3126,7 @@ String& String::operator+=(const String& other) {
|
||||
if(total_size < len) {
|
||||
// append to the current stack space
|
||||
memcpy(buf + my_old_size, other.c_str(), other_size + 1);
|
||||
// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
|
||||
setLast(last - total_size);
|
||||
} else {
|
||||
// alloc new chunk
|
||||
@ -3153,6 +3168,7 @@ String& String::operator+=(const String& other) {
|
||||
return *this;
|
||||
}
|
||||
|
||||
// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
|
||||
String String::operator+(const String& other) const { return String(*this) += other; }
|
||||
|
||||
String::String(String&& other) {
|
||||
@ -3307,6 +3323,7 @@ DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wnull-dereference")
|
||||
DOCTEST_GCC_SUPPRESS_WARNING_WITH_PUSH("-Wnull-dereference")
|
||||
// depending on the current options this will remove the path of filenames
|
||||
const char* skipPathFromFilename(const char* file) {
|
||||
#ifndef DOCTEST_CONFIG_DISABLE
|
||||
if(getContextOptions()->no_path_in_filenames) {
|
||||
auto back = std::strrchr(file, '\\');
|
||||
auto forward = std::strrchr(file, '/');
|
||||
@ -3316,6 +3333,7 @@ const char* skipPathFromFilename(const char* file) {
|
||||
return forward + 1;
|
||||
}
|
||||
}
|
||||
#endif // DOCTEST_CONFIG_DISABLE
|
||||
return file;
|
||||
}
|
||||
DOCTEST_CLANG_SUPPRESS_WARNING_POP
|
||||
@ -3334,6 +3352,7 @@ IContextScope::~IContextScope() = default;
|
||||
|
||||
#ifdef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
|
||||
String toString(char* in) { return toString(static_cast<const char*>(in)); }
|
||||
// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
|
||||
String toString(const char* in) { return String("\"") + (in ? in : "{null string}") + "\""; }
|
||||
#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
|
||||
String toString(bool in) { return in ? "true" : "false"; }
|
||||
@ -3406,6 +3425,7 @@ bool operator>(double lhs, const Approx& rhs) { return lhs > rhs.m_value && lhs
|
||||
bool operator>(const Approx& lhs, double rhs) { return lhs.m_value > rhs && lhs != rhs; }
|
||||
|
||||
String toString(const Approx& in) {
|
||||
// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
|
||||
return String("Approx( ") + doctest::toString(in.m_value) + " )";
|
||||
}
|
||||
const ContextOptions* getContextOptions() { return DOCTEST_BRANCH_ON_DISABLED(nullptr, g_cs); }
|
||||
@ -3594,8 +3614,8 @@ namespace detail {
|
||||
DOCTEST_ITERATE_THROUGH_REPORTERS(subcase_start, m_signature);
|
||||
}
|
||||
|
||||
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4996) // std::uncaught_exception is deprecated in C++17
|
||||
DOCTEST_GCC_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")
|
||||
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4996) // std::uncaught_exception is deprecated in C++17
|
||||
DOCTEST_GCC_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")
|
||||
DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")
|
||||
|
||||
Subcase::~Subcase() {
|
||||
@ -3622,8 +3642,8 @@ namespace detail {
|
||||
}
|
||||
}
|
||||
|
||||
DOCTEST_CLANG_SUPPRESS_WARNING_POP
|
||||
DOCTEST_GCC_SUPPRESS_WARNING_POP
|
||||
DOCTEST_CLANG_SUPPRESS_WARNING_POP
|
||||
DOCTEST_GCC_SUPPRESS_WARNING_POP
|
||||
DOCTEST_MSVC_SUPPRESS_WARNING_POP
|
||||
|
||||
Subcase::operator bool() const { return m_entered; }
|
||||
@ -3703,6 +3723,9 @@ namespace detail {
|
||||
const int file_cmp = m_file.compare(other.m_file);
|
||||
if(file_cmp != 0)
|
||||
return file_cmp < 0;
|
||||
const int name_cmp = strcmp(m_name, other.m_name);
|
||||
if(name_cmp != 0)
|
||||
return name_cmp < 0;
|
||||
return m_template_id < other.m_template_id;
|
||||
}
|
||||
} // namespace detail
|
||||
@ -3962,8 +3985,8 @@ namespace detail {
|
||||
g_infoContexts.push_back(this);
|
||||
}
|
||||
|
||||
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4996) // std::uncaught_exception is deprecated in C++17
|
||||
DOCTEST_GCC_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")
|
||||
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4996) // std::uncaught_exception is deprecated in C++17
|
||||
DOCTEST_GCC_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")
|
||||
DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")
|
||||
|
||||
// destroy cannot be inlined into the destructor because that would mean calling stringify after
|
||||
@ -3982,8 +4005,8 @@ namespace detail {
|
||||
g_infoContexts.pop_back();
|
||||
}
|
||||
|
||||
DOCTEST_CLANG_SUPPRESS_WARNING_POP
|
||||
DOCTEST_GCC_SUPPRESS_WARNING_POP
|
||||
DOCTEST_CLANG_SUPPRESS_WARNING_POP
|
||||
DOCTEST_GCC_SUPPRESS_WARNING_POP
|
||||
DOCTEST_MSVC_SUPPRESS_WARNING_POP
|
||||
} // namespace detail
|
||||
namespace {
|
||||
@ -4009,10 +4032,12 @@ namespace {
|
||||
// Windows can easily distinguish between SO and SigSegV,
|
||||
// but SigInt, SigTerm, etc are handled differently.
|
||||
SignalDefs signalDefs[] = {
|
||||
{EXCEPTION_ILLEGAL_INSTRUCTION, "SIGILL - Illegal instruction signal"},
|
||||
{EXCEPTION_STACK_OVERFLOW, "SIGSEGV - Stack overflow"},
|
||||
{EXCEPTION_ACCESS_VIOLATION, "SIGSEGV - Segmentation violation signal"},
|
||||
{EXCEPTION_INT_DIVIDE_BY_ZERO, "Divide by zero error"},
|
||||
{static_cast<DWORD>(EXCEPTION_ILLEGAL_INSTRUCTION),
|
||||
"SIGILL - Illegal instruction signal"},
|
||||
{static_cast<DWORD>(EXCEPTION_STACK_OVERFLOW), "SIGSEGV - Stack overflow"},
|
||||
{static_cast<DWORD>(EXCEPTION_ACCESS_VIOLATION),
|
||||
"SIGSEGV - Segmentation violation signal"},
|
||||
{static_cast<DWORD>(EXCEPTION_INT_DIVIDE_BY_ZERO), "Divide by zero error"},
|
||||
};
|
||||
|
||||
struct FatalConditionHandler
|
||||
@ -4038,6 +4063,28 @@ namespace {
|
||||
previousTop = SetUnhandledExceptionFilter(handleException);
|
||||
// Pass in guarantee size to be filled
|
||||
SetThreadStackGuarantee(&guaranteeSize);
|
||||
|
||||
// On Windows uncaught exceptions from another thread, exceptions from
|
||||
// destructors, or calls to std::terminate are not a SEH exception
|
||||
|
||||
// The terminal handler gets called when:
|
||||
// - std::terminate is called FROM THE TEST RUNNER THREAD
|
||||
// - an exception is thrown from a destructor FROM THE TEST RUNNER THREAD
|
||||
original_terminate_handler = std::get_terminate();
|
||||
std::set_terminate([]() noexcept {
|
||||
reportFatal("Terminate handler called");
|
||||
std::exit(EXIT_FAILURE); // explicitly exit - otherwise the SIGABRT handler may be called as well
|
||||
});
|
||||
|
||||
// SIGABRT is raised when:
|
||||
// - std::terminate is called FROM A DIFFERENT THREAD
|
||||
// - an exception is thrown from a destructor FROM A DIFFERENT THREAD
|
||||
// - an uncaught exception is thrown FROM A DIFFERENT THREAD
|
||||
prev_sigabrt_handler = std::signal(SIGABRT, [](int signal) noexcept {
|
||||
if(signal == SIGABRT) {
|
||||
reportFatal("SIGABRT - Abort (abnormal termination) signal");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
static void reset() {
|
||||
@ -4047,17 +4094,23 @@ namespace {
|
||||
SetThreadStackGuarantee(&guaranteeSize);
|
||||
previousTop = nullptr;
|
||||
isSet = false;
|
||||
std::set_terminate(original_terminate_handler);
|
||||
std::signal(SIGABRT, prev_sigabrt_handler);
|
||||
}
|
||||
}
|
||||
|
||||
~FatalConditionHandler() { reset(); }
|
||||
|
||||
private:
|
||||
static void (*prev_sigabrt_handler)(int);
|
||||
static std::terminate_handler original_terminate_handler;
|
||||
static bool isSet;
|
||||
static ULONG guaranteeSize;
|
||||
static LPTOP_LEVEL_EXCEPTION_FILTER previousTop;
|
||||
};
|
||||
|
||||
void (*FatalConditionHandler::prev_sigabrt_handler)(int);
|
||||
std::terminate_handler FatalConditionHandler::original_terminate_handler;
|
||||
bool FatalConditionHandler::isSet = false;
|
||||
ULONG FatalConditionHandler::guaranteeSize = 0;
|
||||
LPTOP_LEVEL_EXCEPTION_FILTER FatalConditionHandler::previousTop = nullptr;
|
||||
@ -4257,6 +4310,7 @@ namespace detail {
|
||||
// ###################################################################################
|
||||
DOCTEST_ASSERT_OUT_OF_TESTS(result.m_decomp);
|
||||
DOCTEST_ASSERT_IN_TESTS(result.m_decomp);
|
||||
// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
|
||||
}
|
||||
|
||||
MessageBuilder::MessageBuilder(const char* file, int line, assertType::Enum severity) {
|
||||
@ -4979,7 +5033,6 @@ namespace {
|
||||
}
|
||||
|
||||
// TODO:
|
||||
// - log_contexts()
|
||||
// - log_message()
|
||||
// - respond to queries
|
||||
// - honor remaining options
|
||||
@ -5175,12 +5228,27 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
|
||||
<< line(rb.m_line) << (opt.gnu_file_line ? ":" : "):") << std::endl;
|
||||
|
||||
fulltext_log_assert_to_stream(os, rb);
|
||||
log_contexts(os);
|
||||
testCaseData.addFailure(rb.m_decomp.c_str(), assertString(rb.m_at), os.str());
|
||||
}
|
||||
|
||||
void log_message(const MessageData&) override {}
|
||||
|
||||
void test_case_skipped(const TestCaseData&) override {}
|
||||
|
||||
void log_contexts(std::ostringstream& s) {
|
||||
int num_contexts = get_num_active_contexts();
|
||||
if(num_contexts) {
|
||||
auto contexts = get_active_contexts();
|
||||
|
||||
s << " logged: ";
|
||||
for(int i = 0; i < num_contexts; ++i) {
|
||||
s << (i == 0 ? "" : " ");
|
||||
contexts[i]->stringify(&s);
|
||||
s << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
DOCTEST_REGISTER_REPORTER("junit", 0, JUnitReporter);
|
||||
@ -5894,6 +5962,7 @@ void Context::parseArgs(int argc, const char* const* argv, bool withDefaults) {
|
||||
DOCTEST_PARSE_AS_BOOL_OR_FLAG("gnu-file-line", "gfl", gnu_file_line, !bool(DOCTEST_MSVC));
|
||||
DOCTEST_PARSE_AS_BOOL_OR_FLAG("no-path-filenames", "npf", no_path_in_filenames, false);
|
||||
DOCTEST_PARSE_AS_BOOL_OR_FLAG("no-line-numbers", "nln", no_line_numbers, false);
|
||||
DOCTEST_PARSE_AS_BOOL_OR_FLAG("no-debug-output", "ndo", no_debug_output, false);
|
||||
DOCTEST_PARSE_AS_BOOL_OR_FLAG("no-skipped-summary", "nss", no_skipped_summary, false);
|
||||
DOCTEST_PARSE_AS_BOOL_OR_FLAG("no-time-in-output", "ntio", no_time_in_output, false);
|
||||
// clang-format on
|
||||
@ -5951,6 +6020,7 @@ void Context::clearFilters() {
|
||||
// allows the user to override procedurally the int/bool options from the command line
|
||||
void Context::setOption(const char* option, int value) {
|
||||
setOption(option, toString(value).c_str());
|
||||
// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
|
||||
}
|
||||
|
||||
// allows the user to override procedurally the string options from the command line
|
||||
@ -6026,7 +6096,7 @@ int Context::run() {
|
||||
p->reporters_currently_used.insert(p->reporters_currently_used.begin(), curr.second(*g_cs));
|
||||
|
||||
#ifdef DOCTEST_PLATFORM_WINDOWS
|
||||
if(isDebuggerActive())
|
||||
if(isDebuggerActive() && p->no_debug_output == false)
|
||||
p->reporters_currently_used.push_back(new DebugOutputWindowReporter(*g_cs));
|
||||
#endif // DOCTEST_PLATFORM_WINDOWS
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user