kselftest.h 2.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/*
 * kselftest.h:	kselftest framework return codes to include from
 *		selftests.
 *
 * Copyright (c) 2014 Shuah Khan <shuahkh@osg.samsung.com>
 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
 *
 * This file is released under the GPLv2.
 */
#ifndef __KSELFTEST_H
#define __KSELFTEST_H

#include <stdlib.h>
#include <unistd.h>

D
Darren Hart 已提交
16 17 18 19 20 21 22
/* define kselftest exit codes */
#define KSFT_PASS  0
#define KSFT_FAIL  1
#define KSFT_XFAIL 2
#define KSFT_XPASS 3
#define KSFT_SKIP  4

23 24 25 26 27 28 29 30 31 32 33
/* counters */
struct ksft_count {
	unsigned int ksft_pass;
	unsigned int ksft_fail;
	unsigned int ksft_xfail;
	unsigned int ksft_xpass;
	unsigned int ksft_xskip;
};

static struct ksft_count ksft_cnt;

34 35 36 37 38 39 40
static inline int ksft_test_num(void)
{
	return ksft_cnt.ksft_pass + ksft_cnt.ksft_fail +
		ksft_cnt.ksft_xfail + ksft_cnt.ksft_xpass +
		ksft_cnt.ksft_xskip;
}

41 42 43 44 45 46
static inline void ksft_inc_pass_cnt(void) { ksft_cnt.ksft_pass++; }
static inline void ksft_inc_fail_cnt(void) { ksft_cnt.ksft_fail++; }
static inline void ksft_inc_xfail_cnt(void) { ksft_cnt.ksft_xfail++; }
static inline void ksft_inc_xpass_cnt(void) { ksft_cnt.ksft_xpass++; }
static inline void ksft_inc_xskip_cnt(void) { ksft_cnt.ksft_xskip++; }

47 48 49 50 51
static inline void ksft_print_header(void)
{
	printf("TAP version 13\n");
}

52 53
static inline void ksft_print_cnts(void)
{
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
	printf("1..%d\n", ksft_test_num());
}

static inline void ksft_test_result_pass(const char *msg)
{
	ksft_cnt.ksft_pass++;
	printf("ok %d %s\n", ksft_test_num(), msg);
}

static inline void ksft_test_result_fail(const char *msg)
{
	ksft_cnt.ksft_fail++;
	printf("not ok %d %s\n", ksft_test_num(), msg);
}

static inline void ksft_test_result_skip(const char *msg)
{
	ksft_cnt.ksft_xskip++;
	printf("ok %d # skip %s\n", ksft_test_num(), msg);
73 74 75 76
}

static inline int ksft_exit_pass(void)
{
77
	ksft_print_cnts();
D
Darren Hart 已提交
78
	exit(KSFT_PASS);
79
}
80

81 82
static inline int ksft_exit_fail(void)
{
83 84
	printf("Bail out!\n");
	ksft_print_cnts();
D
Darren Hart 已提交
85
	exit(KSFT_FAIL);
86
}
87 88 89 90 91 92 93 94

static inline int ksft_exit_fail_msg(const char *msg)
{
	printf("Bail out! %s\n", msg);
	ksft_print_cnts();
	exit(KSFT_FAIL);
}

95 96
static inline int ksft_exit_xfail(void)
{
97
	ksft_print_cnts();
D
Darren Hart 已提交
98
	exit(KSFT_XFAIL);
99
}
100

101 102
static inline int ksft_exit_xpass(void)
{
103
	ksft_print_cnts();
D
Darren Hart 已提交
104
	exit(KSFT_XPASS);
105
}
106

107 108
static inline int ksft_exit_skip(void)
{
109
	ksft_print_cnts();
D
Darren Hart 已提交
110
	exit(KSFT_SKIP);
111 112 113
}

#endif /* __KSELFTEST_H */