From 3162be2bd9903c2a6b6d2660ba534b2004d59e00 Mon Sep 17 00:00:00 2001 From: Francesco Montorsi Date: Mon, 23 Mar 2009 16:49:20 +0000 Subject: [PATCH] small changes to make the test run fine on wxMSW, too; do not use stdout as variable name as VC9 doesn't like it git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59787 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- tests/exec/exec.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/tests/exec/exec.cpp b/tests/exec/exec.cpp index 566ca72044..b0f152ac3d 100644 --- a/tests/exec/exec.cpp +++ b/tests/exec/exec.cpp @@ -79,12 +79,19 @@ void ExecTestCase::TestExecute() // test asynch exec long pid = wxExecute(ASYNC_COMMAND, wxEXEC_ASYNC); CPPUNIT_ASSERT( pid != 0 ); - CPPUNIT_ASSERT( wxKill(pid) == 0 ); + + // NOTE: under Windows the first wxKill() invocation with wxSIGTERM + // may fail if the system is fast and the ASYNC_COMMAND app + // doesn't manage to create its HWND before our wxKill() is + // executed; in that case we "fall back" to the second invocation + // with wxSIGKILL (which should always succeed) + CPPUNIT_ASSERT( wxKill(pid, wxSIGTERM) == 0 || + wxKill(pid, wxSIGKILL) == 0 ); // test running COMMAND again, but this time with redirection: - wxArrayString stdout; - CPPUNIT_ASSERT( wxExecute(COMMAND, stdout, wxEXEC_SYNC) == 0 ); - CPPUNIT_ASSERT( stdout[0] == "hi" ); + wxArrayString stdout_arr; + CPPUNIT_ASSERT( wxExecute(COMMAND, stdout_arr, wxEXEC_SYNC) == 0 ); + CPPUNIT_ASSERT( stdout_arr[0] == "hi" ); } void ExecTestCase::TestProcess() @@ -97,7 +104,8 @@ void ExecTestCase::TestProcess() // we're not going to process the wxEVT_END_PROCESS event, // so the proc instance will auto-delete itself after we kill // the asynch process: - CPPUNIT_ASSERT( wxKill(pid) == 0 ); + CPPUNIT_ASSERT( wxKill(pid, wxSIGTERM) == 0 || + wxKill(pid, wxSIGKILL) == 0 ); // test wxExecute with wxProcess and REDIRECTION @@ -105,11 +113,12 @@ void ExecTestCase::TestProcess() proc2->Redirect(); CPPUNIT_ASSERT( wxExecute(COMMAND, wxEXEC_SYNC, proc2) == 0 ); - wxStringOutputStream stdout; + wxStringOutputStream stdout_stream; CPPUNIT_ASSERT( proc2->GetInputStream() ); - CPPUNIT_ASSERT( proc2->GetInputStream()->Read(stdout).GetLastError() == wxSTREAM_EOF ); + CPPUNIT_ASSERT_EQUAL( wxSTREAM_EOF, + proc2->GetInputStream()->Read(stdout_stream).GetLastError() ); - wxString str(stdout.GetString()); + wxString str(stdout_stream.GetString()); CPPUNIT_ASSERT_EQUAL( "hi", str.Trim() ); } -- 2.45.2