diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2023-07-20 13:54:09 +0100 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2023-08-08 14:15:36 +0100 |
commit | c88ac48eab3e9df4c7bb353af1b5dfd3798fa9f0 (patch) | |
tree | a5cebbf34deb60e6000e62c19dacea59f2d90ab8 /winsup/testsuite | |
parent | 2e7332d6bd0219da491e899e0c3cee335ec8c9ab (diff) | |
download | newlib-c88ac48eab3e9df4c7bb353af1b5dfd3798fa9f0.zip newlib-c88ac48eab3e9df4c7bb353af1b5dfd3798fa9f0.tar.gz newlib-c88ac48eab3e9df4c7bb353af1b5dfd3798fa9f0.tar.bz2 |
Cygwin: testsuite: Add '-notimeout' option to cygrun
Add '-notimeout' option for cygrun. This is very useful when using it
to run a test standalone and under a debugger.
Also: warn about excess arguments
Diffstat (limited to 'winsup/testsuite')
-rw-r--r-- | winsup/testsuite/cygrun.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/winsup/testsuite/cygrun.c b/winsup/testsuite/cygrun.c index d8de7d1..4502013 100644 --- a/winsup/testsuite/cygrun.c +++ b/winsup/testsuite/cygrun.c @@ -23,24 +23,42 @@ main (int argc, char **argv) DWORD res; DWORD ec = 1; char *p; + DWORD timeout = 60 * 1000; if (argc < 2) { fprintf (stderr, "Usage: cygrun [program]\n"); - exit (0); + exit (1); + } + + int i; + for (i = 1; i < argc; ++i) + { + if (strcmp (argv[i], "-notimeout") == 0) + timeout = INFINITE; + else + break; + } + + char *command = argv[i]; + + if (i < (argc-1)) + { + fprintf (stderr, "cygrun: excess arguments\n"); + exit (1); } SetEnvironmentVariable ("CYGWIN_TESTING", "1"); memset (&sa, 0, sizeof (sa)); memset (&pi, 0, sizeof (pi)); - if (!CreateProcess (0, argv[1], 0, 0, 1, 0, 0, 0, &sa, &pi)) + if (!CreateProcess (0, command, 0, 0, 1, 0, 0, 0, &sa, &pi)) { - fprintf (stderr, "CreateProcess %s failed\n", argv[1]); + fprintf (stderr, "CreateProcess %s failed\n", command); exit (1); } - res = WaitForSingleObject (pi.hProcess, 60 * 1000); + res = WaitForSingleObject (pi.hProcess, timeout); if (res == WAIT_TIMEOUT) { |