Commit c3653f7f authored by Marek Chalupa's avatar Marek Chalupa Committed by Pekka Paalanen
Browse files

tests: detect if debugger is attached



Copy function from libinput/test/litest.c is_debugger_detached()
and use it in our test-runner. If debugger is attached, turn off
leak checks and timeouts automatically.

Revision of libinput: 028513a0a723e97941c39c4aeb17433198723913

v2. rebased to master
Signed-off-by: default avatarMarek Chalupa <mchqwerty@gmail.com>
Acked-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
parent 0e1cc7ab
......@@ -33,6 +33,7 @@
#include <dlfcn.h>
#include <errno.h>
#include <limits.h>
#include <sys/ptrace.h>
#include "test-runner.h"
......@@ -246,6 +247,38 @@ stderr_reset_color(void)
fprintf(stderr, "\033[0m");
}
/* this function is taken from libinput/test/litest.c
* (rev 028513a0a723e97941c39)
*/
static int
is_debugger_attached(void)
{
int status;
int rc;
int pid = fork();
if (pid == -1)
return 0;
if (pid == 0) {
int ppid = getppid();
if (ptrace(PTRACE_ATTACH, ppid, NULL, NULL) == 0) {
waitpid(ppid, NULL, 0);
ptrace(PTRACE_CONT, NULL, NULL);
ptrace(PTRACE_DETACH, ppid, NULL, NULL);
rc = 0;
} else {
rc = 1;
}
_exit(rc);
} else {
waitpid(pid, &status, 0);
rc = WEXITSTATUS(status);
}
return rc;
}
int main(int argc, char *argv[])
{
const struct test *t;
......@@ -259,12 +292,17 @@ int main(int argc, char *argv[])
sys_malloc = dlsym(RTLD_NEXT, "malloc");
sys_free = dlsym(RTLD_NEXT, "free");
leak_check_enabled = !getenv("WAYLAND_TEST_NO_LEAK_CHECK");
timeouts_enabled = !getenv("WAYLAND_TEST_NO_TIMEOUTS");
if (isatty(fileno(stderr)))
is_atty = 1;
if (is_debugger_attached()) {
leak_check_enabled = 0;
timeouts_enabled = 0;
} else {
leak_check_enabled = !getenv("WAYLAND_TEST_NO_LEAK_CHECK");
timeouts_enabled = !getenv("WAYLAND_TEST_NO_TIMEOUTS");
}
if (argc == 2 && strcmp(argv[1], "--help") == 0)
usage(argv[0], EXIT_SUCCESS);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment