diff --git a/modules/beast_core/diagnostic/beast_ProtectedCall.cpp b/modules/beast_core/diagnostic/beast_ProtectedCall.cpp index 0227a3c2a0..d54ff4a62e 100644 --- a/modules/beast_core/diagnostic/beast_ProtectedCall.cpp +++ b/modules/beast_core/diagnostic/beast_ProtectedCall.cpp @@ -323,11 +323,11 @@ public: { beginTestCase ("backtrace"); - pass (); - String const s = SystemStats::getStackBacktrace (); - Logger::outputDebugString (s); + logMessage (s); + + pass (); } }; diff --git a/modules/beast_core/diagnostic/beast_UnitTest.cpp b/modules/beast_core/diagnostic/beast_UnitTest.cpp index 0c5d1802e6..f905b8adcf 100644 --- a/modules/beast_core/diagnostic/beast_UnitTest.cpp +++ b/modules/beast_core/diagnostic/beast_UnitTest.cpp @@ -351,3 +351,46 @@ void UnitTests::runTest (UnitTest& test) Throw (std::runtime_error ("unhandled exception during unit tests")); } } + +//------------------------------------------------------------------------------ + +/** A UnitTest that prints the list of available unit tests. + Not an actual test (it always passes) but if you run it manually it + will print a list of the names of all available unit tests in the program. +*/ +class UnitTestsPrinter : public UnitTest +{ +public: + UnitTestsPrinter () : UnitTest ("print", "print", runManual) + { + } + + void runTest () + { + beginTestCase ("List available unit tests"); + + TestList const& list (UnitTest::getAllTests ()); + + for (int i = 0; i < list.size (); ++i) + { + UnitTest const& test (*list [i]); + + String s; + switch (test.getWhen ()) + { + default: + case UnitTest::runNormal: s << " "; break; + case UnitTest::runManual: s << "[manual] "; break; + case UnitTest::runStartup: s << "[FORCED] "; break; + }; + + s << test.getPackageName () << "/" << test.getClassName (); + + logMessage (s); + } + + pass (); + } +}; + +static UnitTestsPrinter unitTestsPrinter;