#define TEST_WCHAR
#define TEST_ZIP
#else // #if TEST_ALL
- #define TEST_CMDLINE
+ #define TEST_EXECUTE
#endif
// some tests are interactive, define this to run them
wxPuts(_T("*** testing wxExecute ***"));
#ifdef __UNIX__
- #define COMMAND "cat -n ../../Makefile" // "echo hi"
+ #define COMMAND "echo hi"
+ #define ASYNC_COMMAND "xclock"
#define SHELL_COMMAND "echo hi from shell"
- #define REDIRECT_COMMAND COMMAND // "date"
+ #define REDIRECT_COMMAND "cat -n Makefile"
#elif defined(__WXMSW__)
#define COMMAND "command.com /c echo hi"
+ #define ASYNC_COMMAND "notepad"
#define SHELL_COMMAND "echo hi"
#define REDIRECT_COMMAND COMMAND
#else
wxPrintf(_T("Testing wxExecute: "));
fflush(stdout);
- if ( wxExecute(_T(COMMAND), true /* sync */) == 0 )
+ if ( wxExecute(_T(COMMAND), wxEXEC_SYNC) == 0 )
wxPuts(_T("Ok."));
else
wxPuts(_T("ERROR."));
-#if 0 // no, it doesn't work (yet?)
wxPrintf(_T("Testing async wxExecute: "));
fflush(stdout);
- if ( wxExecute(COMMAND) != 0 )
+ int pid = wxExecute(ASYNC_COMMAND);
+ if ( pid != 0 )
+ {
wxPuts(_T("Ok (command launched)."));
+ if ( wxKill(pid) == -1 )
+ wxPuts("ERROR: failed to kill child process.");
+ }
else
wxPuts(_T("ERROR."));
-#endif // 0
wxPrintf(_T("Testing wxExecute with redirection:\n"));
wxArrayString output;
}
else
{
- size_t count = output.GetCount();
- for ( size_t n = 0; n < count; n++ )
+ // don't show too much output, MAX_LINES is enough
+ static const unsigned MAX_LINES = 20;
+
+ const unsigned count = output.size();
+ for ( unsigned n = 0;
+ n < (count > MAX_LINES ? MAX_LINES/2 : count);
+ n++ )
{
- wxPrintf(_T("\t%s\n"), output[n].c_str());
+ wxPrintf("%04u:\t%s\n", n + 1, output[n]);
+ }
+
+ if ( count > MAX_LINES )
+ {
+ wxPrintf("... skipping %u lines...\n", count - MAX_LINES);
+
+ for ( unsigned n = count - MAX_LINES/2; n < count; n++ )
+ {
+ wxPrintf("%04u:\t%s\n", n + 1, output[n]);
+ }
}
wxPuts(_T("Ok."));