From: Florian Weimer Date: Sat, 31 Dec 2016 11:20:49 +0000 (+0100) Subject: support: Use support_record_failure consistently X-Git-Tag: upstream/2.30~3868 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=039c5a05cc905e3d48392e7ea9f85e339b7c068b;p=platform%2Fupstream%2Fglibc.git support: Use support_record_failure consistently This causes more test programs to link in the support_record_failure function, which triggers an early call to mmap from an ELF constructor, but this should not have side effects intefering with the functionality actually under test (unlike, say, a call to malloc). --- diff --git a/ChangeLog b/ChangeLog index e7b2fa1..7ab09eb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,27 @@ 2016-12-31 Florian Weimer + * support/check.h (FAIL_RET, FAIL_EXIT, FAIL_EXIT1): Document that + test failures are recorded. + * support/check.c (support_print_failure_impl): Call + support_record_failure. + (support_exit_failure_impl): Call support_record_failure if status + indicates failure. + * support/delayed_exit.c (delayed_exit_thread): Use FAIL_EXIT1. + * support/xasprintf.c (xasprintf): Likewise. + * support/xfork.c (xfork): Likewise. + * support/xpthread_check_return.c (xpthread_check_return): + Likewise. + * support/xsocket.c (xsocket): Likeweise. + * support/xwaitpid.c (xwaitpid): Likewise. + * support/support_record_failure.c (struct test_failures): Adjust + to coding style. + * support/support_test_verify_impl.c (support_test_verify_impl): + Adjust error messages. + * support/tst-support_record_failure-2.sh (different_status): + Adjust error messages. + +2016-12-31 Florian Weimer + * support/namespace.h: New file. * support/support_become_root.c: Likewise. * support/support_enter_network_namespace.c: Likewise. diff --git a/support/check.c b/support/check.c index 75fdf52..04d2503 100644 --- a/support/check.c +++ b/support/check.c @@ -21,6 +21,7 @@ #include #include #include +#include static void print_failure (const char *file, int line, const char *format, va_list ap) @@ -34,6 +35,7 @@ int support_print_failure_impl (const char *file, int line, const char *format, ...) { + support_record_failure (); va_list ap; va_start (ap, format); print_failure (file, line, format, ap); @@ -45,6 +47,8 @@ void support_exit_failure_impl (int status, const char *file, int line, const char *format, ...) { + if (status != EXIT_SUCCESS && status != EXIT_UNSUPPORTED) + support_record_failure (); va_list ap; va_start (ap, format); print_failure (file, line, format, ap); diff --git a/support/check.h b/support/check.h index 92cb5d9..129bff2 100644 --- a/support/check.h +++ b/support/check.h @@ -23,15 +23,19 @@ __BEGIN_DECLS -/* Print failure message to standard output and return 1. */ +/* Record a test failure, print the failure message to standard output + and return 1. */ #define FAIL_RET(...) \ return support_print_failure_impl (__FILE__, __LINE__, __VA_ARGS__) -/* Print failure message and terminate the process with STATUS. */ +/* Print the failure message and terminate the process with STATUS. + Record a the process as failed if STATUS is neither EXIT_SUCCESS + nor EXIT_UNSUPPORTED. */ #define FAIL_EXIT(status, ...) \ support_exit_failure_impl (status, __FILE__, __LINE__, __VA_ARGS__) -/* Print failure message and terminate with exit status 1. */ +/* Record a test failure, print the failure message and terminate with + exit status 1. */ #define FAIL_EXIT1(...) \ support_exit_failure_impl (1, __FILE__, __LINE__, __VA_ARGS__) diff --git a/support/delayed_exit.c b/support/delayed_exit.c index d5b2e10..1384f5c 100644 --- a/support/delayed_exit.c +++ b/support/delayed_exit.c @@ -22,6 +22,7 @@ #include #include #include +#include #include static void * @@ -31,10 +32,7 @@ delayed_exit_thread (void *seconds_as_ptr) struct timespec delay = { seconds, 0 }; struct timespec remaining = { 0 }; if (nanosleep (&delay, &remaining) != 0) - { - printf ("error: nanosleep: %m\n"); - exit (1); - } + FAIL_EXIT1 ("nanosleep: %m"); /* Exit the process sucessfully. */ exit (0); return NULL; diff --git a/support/support_record_failure.c b/support/support_record_failure.c index 24b2d6e..30de2f6 100644 --- a/support/support_record_failure.c +++ b/support/support_record_failure.c @@ -36,8 +36,8 @@ propagate to the parent process. */ struct test_failures { - unsigned counter; - unsigned failed; + unsigned int counter; + unsigned int failed; }; static struct test_failures *state; diff --git a/support/support_test_verify_impl.c b/support/support_test_verify_impl.c index 28b1524..3b74e57 100644 --- a/support/support_test_verify_impl.c +++ b/support/support_test_verify_impl.c @@ -26,7 +26,7 @@ support_test_verify_impl (int status, const char *file, int line, const char *expr) { support_record_failure (); - printf ("FAIL %s:%d: not true: %s\n", file, line, expr); + printf ("error: %s:%d: not true: %s\n", file, line, expr); if (status >= 0) exit (status); diff --git a/support/tst-support_record_failure-2.sh b/support/tst-support_record_failure-2.sh index 71af382..a96a60d 100644 --- a/support/tst-support_record_failure-2.sh +++ b/support/tst-support_record_failure-2.sh @@ -52,15 +52,15 @@ different_status () { run_test 1 "error: 1 test failures" $direct --status=1 run_test 2 "error: 1 test failures" $direct --status=2 run_test 1 "error: 1 test failures" $direct --status=77 - run_test 2 "FAIL tst-support_record_failure.c:108: not true: false + run_test 2 "error: tst-support_record_failure.c:108: not true: false error: 1 test failures" $direct --test-verify } different_status different_status --direct -run_test 1 "FAIL tst-support_record_failure.c:113: not true: false +run_test 1 "error: tst-support_record_failure.c:113: not true: false error: 1 test failures" --test-verify-exit # --direct does not print the summary error message if exit is called. -run_test 1 "FAIL tst-support_record_failure.c:113: not true: false" \ +run_test 1 "error: tst-support_record_failure.c:113: not true: false" \ --direct --test-verify-exit diff --git a/support/xasprintf.c b/support/xasprintf.c index b9dc91b..6aa1fe6 100644 --- a/support/xasprintf.c +++ b/support/xasprintf.c @@ -21,6 +21,7 @@ #include #include #include +#include char * xasprintf (const char *format, ...) @@ -29,10 +30,7 @@ xasprintf (const char *format, ...) va_start (ap, format); char *result; if (vasprintf (&result, format, ap) < 0) - { - printf ("error: asprintf: %m\n"); - exit (1); - } + FAIL_EXIT1 ("asprintf: %m"); va_end (ap); return result; } diff --git a/support/xfork.c b/support/xfork.c index 4b2ce91..6a2d9cc 100644 --- a/support/xfork.c +++ b/support/xfork.c @@ -20,15 +20,13 @@ #include #include +#include pid_t xfork (void) { pid_t result = fork (); if (result < 0) - { - printf ("error: fork: %m\n"); - exit (1); - } + FAIL_EXIT1 ("fork: %m"); return result; } diff --git a/support/xpthread_check_return.c b/support/xpthread_check_return.c index 8781ee1..398f945 100644 --- a/support/xpthread_check_return.c +++ b/support/xpthread_check_return.c @@ -21,6 +21,7 @@ #include #include #include +#include void xpthread_check_return (const char *function, int value) @@ -28,7 +29,6 @@ xpthread_check_return (const char *function, int value) if (value != 0) { errno = value; - printf ("error: %s: %m\n", function); - exit (1); + FAIL_EXIT1 ("%s: %m", function); } } diff --git a/support/xsocket.c b/support/xsocket.c index 9ebe63f..268a825 100644 --- a/support/xsocket.c +++ b/support/xsocket.c @@ -27,10 +27,6 @@ xsocket (int domain, int type, int protocol) { int fd = socket (domain, type, protocol); if (fd < 0) - { - support_record_failure (); - printf ("error: socket (%d, %d, %d): %m\n", domain, type, protocol); - exit (1); - } + FAIL_EXIT1 ("socket (%d, %d, %d): %m\n", domain, type, protocol); return fd; } diff --git a/support/xwaitpid.c b/support/xwaitpid.c index 5a6e540..f577535 100644 --- a/support/xwaitpid.c +++ b/support/xwaitpid.c @@ -20,6 +20,7 @@ #include #include +#include #include int @@ -27,9 +28,6 @@ xwaitpid (int pid, int *status, int flags) { pid_t result = waitpid (pid, status, flags); if (result < 0) - { - printf ("error: waitpid: %m\n"); - exit (1); - } + FAIL_EXIT1 ("waitpid: %m\n"); return result; }