1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __LIBPERF_INTERNAL_TESTS_H 3 #define __LIBPERF_INTERNAL_TESTS_H 4 5 #include <stdio.h> 6 #include <unistd.h> 7 8 extern int tests_failed; 9 extern int tests_verbose; 10 11 static inline int get_verbose(char **argv, int argc) 12 { 13 int c; 14 int verbose = 0; 15 16 while ((c = getopt(argc, argv, "v")) != -1) { 17 switch (c) 18 { 19 case 'v': 20 verbose = 1; 21 break; 22 default: 23 break; 24 } 25 } 26 optind = 1; 27 28 return verbose; 29 } 30 31 #define __T_START \ 32 do { \ 33 tests_verbose = get_verbose(argv, argc); \ 34 fprintf(stdout, "- running %s...", __FILE__); \ 35 fflush(NULL); \ 36 tests_failed = 0; \ 37 } while (0) 38 39 #define __T_END \ 40 do { \ 41 if (tests_failed) \ 42 fprintf(stdout, " FAILED (%d)\n", tests_failed); \ 43 else \ 44 fprintf(stdout, "OK\n"); \ 45 } while (0) 46 47 #define __T(text, cond) \ 48 do { \ 49 if (!(cond)) { \ 50 fprintf(stderr, "FAILED %s:%d %s\n", __FILE__, __LINE__, text); \ 51 tests_failed++; \ 52 return -1; \ 53 } \ 54 } while (0) 55 56 #define __T_VERBOSE(...) \ 57 do { \ 58 if (tests_verbose) { \ 59 if (tests_verbose == 1) { \ 60 fputc('\n', stderr); \ 61 tests_verbose++; \ 62 } \ 63 fprintf(stderr, ##__VA_ARGS__); \ 64 } \ 65 } while (0) 66 67 #endif /* __LIBPERF_INTERNAL_TESTS_H */ 68