1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * KUnit API to save and access test attributes
4 *
5 * Copyright (C) 2023, Google LLC.
6 * Author: Rae Moar <rmoar@google.com>
7 */
8
9#ifndef _KUNIT_ATTRIBUTES_H
10#define _KUNIT_ATTRIBUTES_H
11
12/*
13 * struct kunit_attr_filter - representation of attributes filter with the
14 * attribute object and string input
15 */
16struct kunit_attr_filter {
17	struct kunit_attr *attr;
18	char *input;
19};
20
21/*
22 * Returns the name of the filter's attribute.
23 */
24const char *kunit_attr_filter_name(struct kunit_attr_filter filter);
25
26/*
27 * Print all test attributes for a test case or suite.
28 * Output format for test cases: "# <test_name>.<attribute>: <value>"
29 * Output format for test suites: "# <attribute>: <value>"
30 */
31void kunit_print_attr(void *test_or_suite, bool is_test, unsigned int test_level);
32
33/*
34 * Returns the number of fitlers in input.
35 */
36int kunit_get_filter_count(char *input);
37
38/*
39 * Parse attributes filter input and return an objects containing the
40 * attribute object and the string input of the next filter.
41 */
42struct kunit_attr_filter kunit_next_attr_filter(char **filters, int *err);
43
44/*
45 * Returns a copy of the suite containing only tests that pass the filter.
46 */
47struct kunit_suite *kunit_filter_attr_tests(const struct kunit_suite *const suite,
48		struct kunit_attr_filter filter, char *action, int *err);
49
50#endif /* _KUNIT_ATTRIBUTES_H */
51