about summary refs log tree commit diff
path: root/stdlib
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2016-12-09 08:18:27 +0100
committerFlorian Weimer <fweimer@redhat.com>2016-12-09 08:18:27 +0100
commitc23de0aacbeaa7a091609b35764bed931475a16d (patch)
treebe4396f71292ee7a509912d70e74323d1587d227 /stdlib
parentc03073774f915fe7841c2b551fe304544143470f (diff)
downloadglibc-c23de0aacbeaa7a091609b35764bed931475a16d.tar.gz
glibc-c23de0aacbeaa7a091609b35764bed931475a16d.tar.xz
glibc-c23de0aacbeaa7a091609b35764bed931475a16d.zip
support: Introduce new subdirectory for test infrastructure
The new test driver in <support/test-driver.c> has feature parity with
the old one.  The main difference is that its hooking mechanism is
based on functions and function pointers instead of macros.  This
commit also implements a new environment variable, TEST_COREDUMPS,
which disables the code which disables coredumps (that is, it enables
them if the invocation environment has not disabled them).

<test-skeleton.c> defines wrapper functions so that it is possible to
use existing macros with the new-style hook functionality.

This commit changes only a few test cases to the new test driver, to
make sure that it works as expected.
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/tst-secure-getenv.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/stdlib/tst-secure-getenv.c b/stdlib/tst-secure-getenv.c
index 58208dbc59..ce8e73c97c 100644
--- a/stdlib/tst-secure-getenv.c
+++ b/stdlib/tst-secure-getenv.c
@@ -30,11 +30,12 @@
 #include <sys/wait.h>
 #include <unistd.h>
 
+#include <support/support.h>
+#include <support/test-driver.h>
+
 static char MAGIC_ARGUMENT[] = "run-actual-test";
 #define MAGIC_STATUS 19
 
-static const char *test_dir;
-
 /* Return a GID which is not our current GID, but is present in the
    supplementary group list.  */
 static gid_t
@@ -64,27 +65,17 @@ choose_gid (void)
 static int
 run_executable_sgid (gid_t target)
 {
-  char *dirname = 0;
-  char *execname = 0;
+  char *dirname = xasprintf ("%s/secure-getenv.%jd",
+			     test_dir, (intmax_t) getpid ());
+  char *execname = xasprintf ("%s/bin", dirname);
   int infd = -1;
   int outfd = -1;
   int ret = -1;
-  if (asprintf (&dirname, "%s/secure-getenv.%jd",
-		test_dir, (intmax_t) getpid ()) < 0)
-    {
-      printf ("asprintf: %m\n");
-      goto err;
-    }
   if (mkdir (dirname, 0700) < 0)
     {
       printf ("mkdir: %m\n");
       goto err;
     }
-  if (asprintf (&execname, "%s/bin", dirname) < 0)
-    {
-      printf ("asprintf: %m\n");
-      goto err;
-    }
   infd = open ("/proc/self/exe", O_RDONLY);
   if (infd < 0)
     {
@@ -247,6 +238,5 @@ alternative_main (int argc, char **argv)
     }
 }
 
-#define PREPARE(argc, argv) alternative_main(argc, argv)
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
+#define PREPARE alternative_main
+#include <support/test-driver.c>