kunit: Add test attributes API structure
authorRae Moar <rmoar@google.com>
Tue, 25 Jul 2023 21:25:12 +0000 (21:25 +0000)
committerShuah Khan <skhan@linuxfoundation.org>
Wed, 26 Jul 2023 19:28:57 +0000 (13:28 -0600)
commit39e92cb1e4a1f6a12097ea2aa9e9ca6f2d2f8a83
tree54c0b4863deb1e462fbf6a9a25775f7d3a222a2b
parent64bd4641310c41a1ecf07c13c67bc0ed61045dfd
kunit: Add test attributes API structure

Add the basic structure of the test attribute API to KUnit, which can be
used to save and access test associated data.

Add attributes.c and attributes.h to hold associated structs and functions
for the API.

Create a struct that holds a variety of associated helper functions for
each test attribute. These helper functions will be used to get the
attribute value, convert the value to a string, and filter based on the
value. This struct is flexible by design to allow for attributes of
numerous types and contexts.

Add a method to print test attributes in the format of "# [<test_name if
not suite>.]<attribute_name>: <attribute_value>".

Example for a suite: "# speed: slow"

Example for a test case: "# test_case.speed: very_slow"

Use this method to report attributes in the KTAP output (KTAP spec:
https://docs.kernel.org/dev-tools/ktap.html) and _list_tests output when
kernel's new kunit.action=list_attr option is used. Note this is derivative
of the kunit.action=list option.

In test.h, add fields and associated helper functions to test cases and
suites to hold user-inputted test attributes.

Reviewed-by: David Gow <davidgow@google.com>
Signed-off-by: Rae Moar <rmoar@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
include/kunit/attributes.h [new file with mode: 0644]
include/kunit/test.h
lib/kunit/Makefile
lib/kunit/attributes.c [new file with mode: 0644]
lib/kunit/executor.c
lib/kunit/test.c