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