mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
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.
This commit is contained in:
@ -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>
|
||||
|
Reference in New Issue
Block a user