From ed545d364011eed865cc051e7afe8ccf10ac64e9 Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Thu, 1 Apr 2021 11:48:43 -0400 Subject: [PATCH] Import libtap from babeltrace Import the fixes to our local copy of libtap from the babeltrace repository. This will allow enabling stricter compiler warnings down the line. Change-Id: I557ad39345dfaf6a08219109a5790d1bf12abb78 Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers --- tests/utils/tap.c | 85 ++++++++++++++++++++++++++++------------------- tests/utils/tap.h | 52 +++++++++++++---------------- 2 files changed, 74 insertions(+), 63 deletions(-) diff --git a/tests/utils/tap.c b/tests/utils/tap.c index 3e384d6..97a1c60 100644 --- a/tests/utils/tap.c +++ b/tests/utils/tap.c @@ -1,33 +1,17 @@ -/*- - * Copyright (c) 2004 Nik Clayton - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. +/* + * SPDX-License-Identifier: BSD-2-Clause * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. + * Copyright (C) 2004 Nik Clayton + * Copyright (C) 2017 Jérémie Galarneau */ #include #include #include #include +#include +#include +#include #include "tap.h" @@ -38,7 +22,7 @@ static unsigned int test_count = 0; /* Number of tests that have been run */ static unsigned int e_tests = 0; /* Expected number of tests to run */ static unsigned int failures = 0; /* Number of tests that failed */ static char *todo_msg = NULL; -static char *todo_msg_fixed = "libtap malloc issue"; +static const char *todo_msg_fixed = "libtap malloc issue"; static int todo = 0; static int test_died = 0; static int tap_is_disabled = 0; @@ -59,6 +43,18 @@ static void _expected_tests(unsigned int); static void _tap_init(void); static void _cleanup(void); +#ifdef __MINGW32__ +static inline +void flockfile (FILE * filehandle) { + return; +} + +static inline +void funlockfile(FILE * filehandle) { + return; +} +#endif + /* * Generate a test result. * @@ -67,8 +63,8 @@ static void _cleanup(void); * test_comment -- a comment to print afterwards, may be NULL */ unsigned int -_gen_result(int ok, const char *func, char *file, unsigned int line, - char *test_name, ...) +_gen_result(int ok, const char *func, const char *file, unsigned int line, + const char *test_name, ...) { va_list ap; char *local_test_name = NULL; @@ -94,8 +90,7 @@ _gen_result(int ok, const char *func, char *file, unsigned int line, if(local_test_name) { name_is_digits = 1; for(c = local_test_name; *c != '\0'; c++) { - if(!isdigit((unsigned char)*c) && - !isspace((unsigned char)*c)) { + if(!isdigit((unsigned char) *c) && !isspace((unsigned char) *c)) { name_is_digits = 0; break; } @@ -214,7 +209,7 @@ plan_no_plan(void) * Note that the plan is to skip all tests */ int -plan_skip_all(char *reason) +plan_skip_all(const char *reason) { LOCK; @@ -270,7 +265,7 @@ plan_tests(unsigned int tests) } unsigned int -diag(char *fmt, ...) +diag(const char *fmt, ...) { va_list ap; @@ -293,7 +288,7 @@ rdiag_start(void) } unsigned int -rdiag(char *fmt, ...) +rdiag(const char *fmt, ...) { va_list ap; @@ -311,6 +306,28 @@ rdiag_end(void) return 0; } +void +diag_multiline(const char *val) +{ + size_t len, i, line_start_idx = 0; + + assert(val); + len = strlen(val); + + for (i = 0; i < len; i++) { + int line_length; + + if (val[i] != '\n') { + continue; + } + + assert((i - line_start_idx + 1) <= INT_MAX); + line_length = i - line_start_idx + 1; + fprintf(stderr, "# %.*s", line_length, &val[line_start_idx]); + line_start_idx = i + 1; + } +} + void _expected_tests(unsigned int tests) { @@ -320,7 +337,7 @@ _expected_tests(unsigned int tests) } int -skip(unsigned int n, char *fmt, ...) +skip(unsigned int n, const char *fmt, ...) { va_list ap; char *skip_msg = NULL; @@ -328,7 +345,7 @@ skip(unsigned int n, char *fmt, ...) LOCK; va_start(ap, fmt); - if (asprintf(&skip_msg, fmt, ap) == -1) { + if (vasprintf(&skip_msg, fmt, ap) == -1) { skip_msg = NULL; } va_end(ap); @@ -348,7 +365,7 @@ skip(unsigned int n, char *fmt, ...) } void -todo_start(char *fmt, ...) +todo_start(const char *fmt, ...) { va_list ap; diff --git a/tests/utils/tap.h b/tests/utils/tap.h index 9118bf5..39312fc 100644 --- a/tests/utils/tap.h +++ b/tests/utils/tap.h @@ -1,27 +1,8 @@ -/*- - * Copyright (c) 2004 Nik Clayton - * All rights reserved. +/* + * SPDX-License-Identifier: BSD-2-Clause * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. + * Copyright (C) 2004 Nik Clayton + * Copyright (C) 2017 Jérémie Galarneau */ /* '## __VA_ARGS__' is a gcc'ism. C99 doesn't allow the token pasting @@ -73,17 +54,29 @@ #define skip_end() } while(0); -unsigned int _gen_result(int, const char *, char *, unsigned int, char *, ...); +#ifdef __MINGW_PRINTF_FORMAT +# define TAP_PRINTF_FORMAT __MINGW_PRINTF_FORMAT +#else +# define TAP_PRINTF_FORMAT printf +#endif + +__attribute__((format(TAP_PRINTF_FORMAT, 5, 6))) +unsigned int _gen_result(int, const char *, const char *, unsigned int, const char *, ...); int plan_no_plan(void); -int plan_skip_all(char *); +__attribute__((noreturn)) +int plan_skip_all(const char *); int plan_tests(unsigned int); -unsigned int diag(char *, ...); +__attribute__((format(TAP_PRINTF_FORMAT, 1, 2))) +unsigned int diag(const char *, ...); +void diag_multiline(const char *); -int skip(unsigned int, char *, ...); +__attribute__((format(TAP_PRINTF_FORMAT, 2, 3))) +int skip(unsigned int, const char *, ...); -void todo_start(char *, ...); +__attribute__((format(TAP_PRINTF_FORMAT, 1, 2))) +void todo_start(const char *, ...); void todo_end(void); int exit_status(void); @@ -91,5 +84,6 @@ int exit_status(void); void tap_disable(void); unsigned int rdiag_start(void); -unsigned int rdiag(char *fmt, ...); +__attribute__((format(TAP_PRINTF_FORMAT, 1, 2))) +unsigned int rdiag(const char *fmt, ...); unsigned int rdiag_end(void); -- 2.34.1