This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] fix posix/tst-spawn test


On 09/27/2017 04:53 PM, Szabolcs Nagy wrote:
Sorry, one more thing: I think you should not interleave the spawns and waits.  I think you can do a -1 wait
after the PID wait, and the test will still pass.  This should be closer to the original test.

why does that matter?

It checks that you can actually launch multiple child processes.

diff --git a/posix/tst-spawn.c b/posix/tst-spawn.c
index 08d92bd7a7..4e5e76351c 100644
--- a/posix/tst-spawn.c
+++ b/posix/tst-spawn.c
@@ -23,9 +23,10 @@
  #include <spawn.h>
  #include <stdlib.h>
  #include <string.h>
-#include <unistd.h>
  #include <wait.h>
  #include <sys/param.h>
+#include <support/check.h>
+#include <support/xunistd.h>
/* Nonzero if the program gets called via `exec'. */
@@ -249,13 +250,16 @@ do_test (int argc, char *argv[])
       error (EXIT_FAILURE, errno, "posix_spawn_file_actions_destroy");
     free (name3_copy);
- /* Wait for the child. */
-  if (waitpid (pid, &status, 0) != pid)
-    error (EXIT_FAILURE, errno, "wrong child");
+  /* Wait for the children.  */
+  TEST_VERIFY (xwaitpid (pid, &status, 0) == pid);
+  TEST_VERIFY (WIFEXITED (status));
+  TEST_VERIFY (!WIFSIGNALED (status));
+  TEST_VERIFY (WEXITSTATUS (status) == 0);
- if (WTERMSIG (status) != 0)
-    error (EXIT_FAILURE, 0, "Child terminated incorrectly");
-  status = WEXITSTATUS (status);
+  xwaitpid (-1, &status, 0);
+  TEST_VERIFY (WIFEXITED (status));
+  TEST_VERIFY (!WIFSIGNALED (status));
+  TEST_VERIFY (WEXITSTATUS (status) == 0);
- return status;
+  return 0;
  }

Looks good to me, thanks.

Florian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]