X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9e91447ca4738069384ece27f3c3dae6c7a5b31e..1d3dfc57e77c64a4691fae47b566bcfb99eceb48:/tests/test.cpp diff --git a/tests/test.cpp b/tests/test.cpp index 067af9edd1..676e33b351 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -28,14 +28,16 @@ #ifdef __VISUALC__ #pragma warning(disable:4100) #endif + #include -#ifdef __VISUALC__ - #pragma warning(default:4100) -#endif #include #include #include #include + +#ifdef __VISUALC__ + #pragma warning(default:4100) +#endif #include "wx/afterstd.h" #include "wx/cmdline.h" @@ -76,6 +78,41 @@ struct CrtAssertFailure #endif // wxUSE_VC_CRTDBG +#if wxDEBUG_LEVEL + +static wxString FormatAssertMessage(const wxString& file, + int line, + const wxString& func, + const wxString& cond, + const wxString& msg) +{ + wxString str; + str << "wxWidgets assert: " << cond << " failed " + "at " << file << ":" << line << " in " << func + << " with message '" << msg << "'"; + return str; +} + +static void TestAssertHandler(const wxString& file, + int line, + const wxString& func, + const wxString& cond, + const wxString& msg) +{ + // can't throw from other threads, die immediately + if ( !wxIsMainThread() ) + { + wxPrintf("%s in a worker thread -- aborting.", + FormatAssertMessage(file, line, func, cond, msg)); + fflush(stdout); + _exit(-1); + } + + throw TestAssertFailure(file, line, func, cond, msg); +} + +#endif // wxDEBUG_LEVEL + // this function should only be called from a catch clause static string GetExceptionMessage() { @@ -88,9 +125,8 @@ static string GetExceptionMessage() #if wxDEBUG_LEVEL catch ( TestAssertFailure& e ) { - msg << "wxWidgets assert: " << e.m_cond << " failed " - "at " << e.m_file << ":" << e.m_line << " in " << e.m_func - << " with message '" << e.m_msg << "'"; + msg << FormatAssertMessage(e.m_file, e.m_line, e.m_func, + e.m_cond, e.m_msg); } #endif // wxDEBUG_LEVEL #ifdef wxUSE_VC_CRTDBG @@ -272,19 +308,6 @@ static int TestCrtReportHook(int reportType, char *message, int *) #endif // wxUSE_VC_CRTDBG -#if wxDEBUG_LEVEL - -static void TestAssertHandler(const wxString& file, - int line, - const wxString& func, - const wxString& cond, - const wxString& msg) -{ - throw TestAssertFailure(file, line, func, cond, msg); -} - -#endif // wxDEBUG_LEVEL - int main(int argc, char **argv) { // tests can be ran non-interactively so make sure we don't show any assert @@ -336,6 +359,7 @@ extern bool IsNetworkAvailable() } wxSocketClient sock; + sock.SetTimeout(10); // 10 secs bool online = sock.Connect(addr); wxSocketBase::Shutdown();