mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-26 15:26:11 +01:00
Moved leak detector to its own file
This commit is contained in:
parent
9c318af987
commit
4332b84c9b
@ -147,6 +147,7 @@ set(INTERNAL_HEADERS
|
|||||||
${HEADER_DIR}/internal/catch_interfaces_runner.h
|
${HEADER_DIR}/internal/catch_interfaces_runner.h
|
||||||
${HEADER_DIR}/internal/catch_interfaces_tag_alias_registry.h
|
${HEADER_DIR}/internal/catch_interfaces_tag_alias_registry.h
|
||||||
${HEADER_DIR}/internal/catch_interfaces_testcase.h
|
${HEADER_DIR}/internal/catch_interfaces_testcase.h
|
||||||
|
${HEADER_DIR}/internal/catch_leak_detector.h
|
||||||
${HEADER_DIR}/internal/catch_list.h
|
${HEADER_DIR}/internal/catch_list.h
|
||||||
${HEADER_DIR}/internal/catch_matchers.hpp
|
${HEADER_DIR}/internal/catch_matchers.hpp
|
||||||
${HEADER_DIR}/internal/catch_matchers_string.h
|
${HEADER_DIR}/internal/catch_matchers_string.h
|
||||||
@ -202,6 +203,7 @@ set(IMPL_SOURCES
|
|||||||
${HEADER_DIR}/internal/catch_exception_translator_registry.cpp
|
${HEADER_DIR}/internal/catch_exception_translator_registry.cpp
|
||||||
${HEADER_DIR}/internal/catch_fatal_condition.cpp
|
${HEADER_DIR}/internal/catch_fatal_condition.cpp
|
||||||
${HEADER_DIR}/internal/catch_list.cpp
|
${HEADER_DIR}/internal/catch_list.cpp
|
||||||
|
${HEADER_DIR}/internal/catch_leak_detector.cpp
|
||||||
${HEADER_DIR}/internal/catch_matchers_string.cpp
|
${HEADER_DIR}/internal/catch_matchers_string.cpp
|
||||||
${HEADER_DIR}/internal/catch_message.cpp
|
${HEADER_DIR}/internal/catch_message.cpp
|
||||||
${HEADER_DIR}/internal/catch_notimplemented_exception.cpp
|
${HEADER_DIR}/internal/catch_notimplemented_exception.cpp
|
||||||
|
@ -50,29 +50,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CATCH_IMPL
|
#ifdef CATCH_IMPL
|
||||||
|
|
||||||
// !TBD: Move the leak detector code into a separate header
|
|
||||||
#ifdef CATCH_CONFIG_WINDOWS_CRTDBG
|
|
||||||
#include <crtdbg.h>
|
|
||||||
class LeakDetector {
|
|
||||||
public:
|
|
||||||
LeakDetector() {
|
|
||||||
int flag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
|
|
||||||
flag |= _CRTDBG_LEAK_CHECK_DF;
|
|
||||||
flag |= _CRTDBG_ALLOC_MEM_DF;
|
|
||||||
_CrtSetDbgFlag(flag);
|
|
||||||
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);
|
|
||||||
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
|
|
||||||
// Change this to leaking allocation's number to break there
|
|
||||||
_CrtSetBreakAlloc(-1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
class LeakDetector {};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LeakDetector leakDetector;
|
|
||||||
|
|
||||||
#include "internal/catch_impl.hpp"
|
#include "internal/catch_impl.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -21,6 +21,8 @@
|
|||||||
#include "catch_reporter_registrars.hpp"
|
#include "catch_reporter_registrars.hpp"
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#include "internal/catch_leak_detector.h"
|
||||||
|
|
||||||
|
|
||||||
#include "../catch_session.hpp"
|
#include "../catch_session.hpp"
|
||||||
#include "catch_stream.hpp"
|
#include "catch_stream.hpp"
|
||||||
@ -31,6 +33,8 @@
|
|||||||
// ~*~* CATCH_CPP_STITCH_PLACE *~*~
|
// ~*~* CATCH_CPP_STITCH_PLACE *~*~
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
LeakDetector leakDetector;
|
||||||
|
|
||||||
// These are all here to avoid warnings about not having any out of line
|
// These are all here to avoid warnings about not having any out of line
|
||||||
// virtual methods
|
// virtual methods
|
||||||
NonCopyable::~NonCopyable() {}
|
NonCopyable::~NonCopyable() {}
|
||||||
|
33
include/internal/catch_leak_detector.cpp
Normal file
33
include/internal/catch_leak_detector.cpp
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Created by Martin on 12/07/2017.
|
||||||
|
*
|
||||||
|
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "catch_leak_detector.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
#ifdef CATCH_CONFIG_WINDOWS_CRTDBG
|
||||||
|
#include <crtdbg.h>
|
||||||
|
|
||||||
|
LeakDetector::LeakDetector() {
|
||||||
|
int flag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
|
||||||
|
flag |= _CRTDBG_LEAK_CHECK_DF;
|
||||||
|
flag |= _CRTDBG_ALLOC_MEM_DF;
|
||||||
|
_CrtSetDbgFlag(flag);
|
||||||
|
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);
|
||||||
|
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
|
||||||
|
// Change this to leaking allocation's number to break there
|
||||||
|
_CrtSetBreakAlloc(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
LeakDetector::LeakDetector(){}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
17
include/internal/catch_leak_detector.h
Normal file
17
include/internal/catch_leak_detector.h
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
* Created by Martin on 12/07/2017.
|
||||||
|
*
|
||||||
|
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
*/
|
||||||
|
#ifndef TWOBLUECUBES_CATCH_LEAK_DETECTOR_H_INCLUDED
|
||||||
|
#define TWOBLUECUBES_CATCH_LEAK_DETECTOR_H_INCLUDED
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
struct LeakDetector {
|
||||||
|
LeakDetector();
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif // TWOBLUECUBES_CATCH_LEAK_DETECTOR_H_INCLUDED
|
Loading…
Reference in New Issue
Block a user