This commit is contained in:
Sasha Nik 2025-02-07 02:15:02 +00:00 committed by GitHub
commit d08384614a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 4 additions and 16 deletions

View File

@ -1112,10 +1112,11 @@ class GTEST_API_ TestEventListeners {
// according to their specification. // according to their specification.
class GTEST_API_ UnitTest { class GTEST_API_ UnitTest {
public: public:
friend std::default_delete<UnitTest>;
// Gets the singleton UnitTest object. The first time this method // Gets the singleton UnitTest object. The first time this method
// is called, a UnitTest object is constructed and returned. // is called, a UnitTest object is constructed and returned.
// Consecutive calls will return the same object. // Consecutive calls will return the same object.
static UnitTest* GetInstance(); static std::unique_ptr<UnitTest>& GetInstance();
// Runs all tests in this UnitTest object and prints the result. // Runs all tests in this UnitTest object and prints the result.
// Returns 0 if successful, or 1 otherwise. // Returns 0 if successful, or 1 otherwise.

View File

@ -5232,22 +5232,9 @@ void TestEventListeners::SuppressEventForwarding(bool suppress) {
// Gets the singleton UnitTest object. The first time this method is // Gets the singleton UnitTest object. The first time this method is
// called, a UnitTest object is constructed and returned. Consecutive // called, a UnitTest object is constructed and returned. Consecutive
// calls will return the same object. // calls will return the same object.
// std::unique_ptr<UnitTest>& UnitTest::GetInstance() {
// We don't protect this under mutex_ as a user is not supposed to static std::unique_ptr<UnitTest> instance{ new UnitTest };
// call this before main() starts, from which point on the return
// value will never change.
UnitTest* UnitTest::GetInstance() {
// CodeGear C++Builder insists on a public destructor for the
// default implementation. Use this implementation to keep good OO
// design with private destructor.
#if defined(__BORLANDC__)
static UnitTest* const instance = new UnitTest;
return instance; return instance;
#else
static UnitTest instance;
return &instance;
#endif // defined(__BORLANDC__)
} }
// Gets the number of successful test suites. // Gets the number of successful test suites.