[newlib-cygwin] Cygwin: testsuite: test posix_spawnp

Jeremy Drake via Cygwin-cvs <[email protected]>
Newsgroups gmane.os.cygwin.cvs
Message-ID <[email protected]>
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=0139b7ae692e39475c72c89113290bb1b4b06131

commit 0139b7ae692e39475c72c89113290bb1b4b06131
Author: Jeremy Drake <[email protected]>
Date:   Wed Jun 18 12:20:49 2025 -0700

    Cygwin: testsuite: test posix_spawnp
    
    Given the limited binaries available (sh, ls, sleep), use sh -c true
    
    Signed-off-by: Jeremy Drake <[email protected]>

Diff:
---
 winsup/testsuite/Makefile.am                     |  1 +
 winsup/testsuite/winsup.api/posix_spawn/spawnp.c | 25 ++++++++++++++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/winsup/testsuite/Makefile.am b/winsup/testsuite/Makefile.am
index 0b265261c..1cda72905 100644
--- a/winsup/testsuite/Makefile.am
+++ b/winsup/testsuite/Makefile.am
@@ -312,6 +312,7 @@ check_PROGRAMS = \
 	winsup.api/pthread/threadidafterfork \
 	winsup.api/pthread/tsd1 \
 	winsup.api/posix_spawn/errors \
+	winsup.api/posix_spawn/spawnp \
 	winsup.api/samples/sample-fail \
 	winsup.api/samples/sample-pass
 # winsup.api/ltp/ulimit01 is omitted as we don't have <ulimit.h>
diff --git a/winsup/testsuite/winsup.api/posix_spawn/spawnp.c b/winsup/testsuite/winsup.api/posix_spawn/spawnp.c
new file mode 100644
index 000000000..c7bee878f
--- /dev/null
+++ b/winsup/testsuite/winsup.api/posix_spawn/spawnp.c
@@ -0,0 +1,25 @@
+#include "test.h"
+#include <spawn.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int main (void)
+{
+  pid_t pid;
+  int status;
+  /* the test installation has very limited binaries on the PATH, but sh is one
+     of them and 'true' should be a builtin */
+  char *childargv[] = {"sh", "-c", "true", NULL};
+  char *childenv[] = {NULL};
+
+  /* unbuffer stdout */
+  setvbuf(stdout, NULL, _IONBF, 0);
+
+  /* can posix_spawnp find a program even with an empty environment? */
+  errCode (posix_spawnp (&pid, childargv[0], NULL, NULL, childargv, childenv));
+  negError (waitpid (pid, &status, 0));
+  exitStatus (status, 0);
+
+  return 0;
+}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.