aboutsummaryrefslogtreecommitdiff
path: root/winsup/testsuite
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2023-07-20 13:54:09 +0100
committerJon Turney <jon.turney@dronecode.org.uk>2023-08-08 14:15:36 +0100
commitc88ac48eab3e9df4c7bb353af1b5dfd3798fa9f0 (patch)
treea5cebbf34deb60e6000e62c19dacea59f2d90ab8 /winsup/testsuite
parent2e7332d6bd0219da491e899e0c3cee335ec8c9ab (diff)
downloadnewlib-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.c26
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)
{