Message ID | 20210528075932.347154-1-davidgow@google.com (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | Brendan Higgins |
Headers | show |
Series | [v2,1/4] kunit: Support skipped tests | expand |
Hi David,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.13-rc3 next-20210527]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/David-Gow/kunit-Support-skipped-tests/20210528-160224
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 97e5bf604b7a0d6e1b3e00fe31d5fd4b9bffeaae
config: i386-randconfig-s001-20210528 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-341-g8af24329-dirty
# https://github.com/0day-ci/linux/commit/a464519206cd4484f64540020093cb45ef8e272e
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review David-Gow/kunit-Support-skipped-tests/20210528-160224
git checkout a464519206cd4484f64540020093cb45ef8e272e
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
lib/kunit/debugfs.c:28:6: warning: no previous prototype for 'kunit_debugfs_cleanup' [-Wmissing-prototypes]
28 | void kunit_debugfs_cleanup(void)
| ^~~~~~~~~~~~~~~~~~~~~
lib/kunit/debugfs.c:33:6: warning: no previous prototype for 'kunit_debugfs_init' [-Wmissing-prototypes]
33 | void kunit_debugfs_init(void)
| ^~~~~~~~~~~~~~~~~~
lib/kunit/debugfs.c: In function 'debugfs_print_results':
lib/kunit/debugfs.c:67:6: error: implicit declaration of function 'kunit_status_to_string'; did you mean 'kunit_status_to_ok_not_ok'? [-Werror=implicit-function-declaration]
67 | kunit_status_to_string(success), 1, suite->name);
| ^~~~~~~~~~~~~~~~~~~~~~
| kunit_status_to_ok_not_ok
>> lib/kunit/debugfs.c:66:20: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'int' [-Wformat=]
66 | seq_printf(seq, "%s %d - %s\n",
| ~^
| |
| char *
| %d
67 | kunit_status_to_string(success), 1, suite->name);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| int
lib/kunit/debugfs.c: At top level:
lib/kunit/debugfs.c:92:6: warning: no previous prototype for 'kunit_debugfs_create_suite' [-Wmissing-prototypes]
92 | void kunit_debugfs_create_suite(struct kunit_suite *suite)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/debugfs.c:108:6: warning: no previous prototype for 'kunit_debugfs_destroy_suite' [-Wmissing-prototypes]
108 | void kunit_debugfs_destroy_suite(struct kunit_suite *suite)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +66 lib/kunit/debugfs.c
e2219db280e3fe Alan Maguire 2020-03-26 48
e2219db280e3fe Alan Maguire 2020-03-26 49 /*
e2219db280e3fe Alan Maguire 2020-03-26 50 * /sys/kernel/debug/kunit/<testsuite>/results shows all results for testsuite.
e2219db280e3fe Alan Maguire 2020-03-26 51 */
e2219db280e3fe Alan Maguire 2020-03-26 52 static int debugfs_print_results(struct seq_file *seq, void *v)
e2219db280e3fe Alan Maguire 2020-03-26 53 {
e2219db280e3fe Alan Maguire 2020-03-26 54 struct kunit_suite *suite = (struct kunit_suite *)seq->private;
e2219db280e3fe Alan Maguire 2020-03-26 55 bool success = kunit_suite_has_succeeded(suite);
e2219db280e3fe Alan Maguire 2020-03-26 56 struct kunit_case *test_case;
e2219db280e3fe Alan Maguire 2020-03-26 57
e2219db280e3fe Alan Maguire 2020-03-26 58 if (!suite || !suite->log)
e2219db280e3fe Alan Maguire 2020-03-26 59 return 0;
e2219db280e3fe Alan Maguire 2020-03-26 60
e2219db280e3fe Alan Maguire 2020-03-26 61 seq_printf(seq, "%s", suite->log);
e2219db280e3fe Alan Maguire 2020-03-26 62
e2219db280e3fe Alan Maguire 2020-03-26 63 kunit_suite_for_each_test_case(suite, test_case)
e2219db280e3fe Alan Maguire 2020-03-26 64 debugfs_print_result(seq, suite, test_case);
e2219db280e3fe Alan Maguire 2020-03-26 65
e2219db280e3fe Alan Maguire 2020-03-26 @66 seq_printf(seq, "%s %d - %s\n",
e2219db280e3fe Alan Maguire 2020-03-26 67 kunit_status_to_string(success), 1, suite->name);
e2219db280e3fe Alan Maguire 2020-03-26 68 return 0;
e2219db280e3fe Alan Maguire 2020-03-26 69 }
e2219db280e3fe Alan Maguire 2020-03-26 70
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi David, I love your patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v5.13-rc3 next-20210527] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/David-Gow/kunit-Support-skipped-tests/20210528-160224 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 97e5bf604b7a0d6e1b3e00fe31d5fd4b9bffeaae config: x86_64-rhel-8.3 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/a464519206cd4484f64540020093cb45ef8e272e git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review David-Gow/kunit-Support-skipped-tests/20210528-160224 git checkout a464519206cd4484f64540020093cb45ef8e272e # save the attached .config to linux build tree make W=1 ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): In file included from include/linux/kernel.h:15, from include/kunit/assert.h:13, from include/kunit/test.h:12, from lib/kunit/kunit-test.c:8: lib/kunit/kunit-test.c: In function 'kunit_status_mark_skipped_test': include/linux/minmax.h:20:28: warning: comparison of distinct pointer types lacks a cast 20 | (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1))) | ^~ include/kunit/test.h:834:9: note: in expansion of macro '__typecheck' 834 | ((void)__typecheck(__left, __right)); \ | ^~~~~~~~~~~ include/kunit/test.h:858:2: note: in expansion of macro 'KUNIT_BASE_BINARY_ASSERTION' 858 | KUNIT_BASE_BINARY_ASSERTION(test, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:947:2: note: in expansion of macro 'KUNIT_BASE_EQ_MSG_ASSERTION' 947 | KUNIT_BASE_EQ_MSG_ASSERTION(test, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:957:2: note: in expansion of macro 'KUNIT_BINARY_EQ_MSG_ASSERTION' 957 | KUNIT_BINARY_EQ_MSG_ASSERTION(test, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1320:2: note: in expansion of macro 'KUNIT_BINARY_EQ_ASSERTION' 1320 | KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right) | ^~~~~~~~~~~~~~~~~~~~~~~~~ lib/kunit/kunit-test.c:458:2: note: in expansion of macro 'KUNIT_EXPECT_EQ' 458 | KUNIT_EXPECT_EQ(test, fake.status, KUNIT_SUCCESS); | ^~~~~~~~~~~~~~~ In file included from lib/kunit/kunit-test.c:8: >> include/kunit/test.h:1188:24: error: invalid initializer 1188 | typeof(left) __left = (left); \ | ^ include/kunit/test.h:1211:2: note: in expansion of macro 'KUNIT_BINARY_STR_ASSERTION' 1211 | KUNIT_BINARY_STR_ASSERTION(test, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1218:2: note: in expansion of macro 'KUNIT_BINARY_STR_EQ_MSG_ASSERTION' 1218 | KUNIT_BINARY_STR_EQ_MSG_ASSERTION(test, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1502:2: note: in expansion of macro 'KUNIT_BINARY_STR_EQ_ASSERTION' 1502 | KUNIT_BINARY_STR_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ lib/kunit/kunit-test.c:459:2: note: in expansion of macro 'KUNIT_EXPECT_STREQ' 459 | KUNIT_EXPECT_STREQ(test, fake.status_comment, ""); | ^~~~~~~~~~~~~~~~~~ >> include/kunit/test.h:1188:24: error: invalid initializer 1188 | typeof(left) __left = (left); \ | ^ include/kunit/test.h:1211:2: note: in expansion of macro 'KUNIT_BINARY_STR_ASSERTION' 1211 | KUNIT_BINARY_STR_ASSERTION(test, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1218:2: note: in expansion of macro 'KUNIT_BINARY_STR_EQ_MSG_ASSERTION' 1218 | KUNIT_BINARY_STR_EQ_MSG_ASSERTION(test, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1502:2: note: in expansion of macro 'KUNIT_BINARY_STR_EQ_ASSERTION' 1502 | KUNIT_BINARY_STR_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ lib/kunit/kunit-test.c:466:2: note: in expansion of macro 'KUNIT_EXPECT_STREQ' 466 | KUNIT_EXPECT_STREQ(test, fake.status_comment, "Accepts format string: YES"); | ^~~~~~~~~~~~~~~~~~ vim +1188 include/kunit/test.h 73cda7bb8bfb1d Brendan Higgins 2019-09-23 849 73cda7bb8bfb1d Brendan Higgins 2019-09-23 850 #define KUNIT_BASE_EQ_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 851 assert_class, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 852 ASSERT_CLASS_INIT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 853 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 854 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 855 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 856 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 857 ...) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 858 KUNIT_BASE_BINARY_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 859 assert_class, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 860 ASSERT_CLASS_INIT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 861 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 862 left, ==, right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 863 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 864 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 865 73cda7bb8bfb1d Brendan Higgins 2019-09-23 866 #define KUNIT_BASE_NE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 867 assert_class, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 868 ASSERT_CLASS_INIT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 869 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 870 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 871 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 872 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 873 ...) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 874 KUNIT_BASE_BINARY_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 875 assert_class, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 876 ASSERT_CLASS_INIT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 877 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 878 left, !=, right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 879 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 880 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 881 73cda7bb8bfb1d Brendan Higgins 2019-09-23 882 #define KUNIT_BASE_LT_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 883 assert_class, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 884 ASSERT_CLASS_INIT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 885 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 886 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 887 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 888 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 889 ...) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 890 KUNIT_BASE_BINARY_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 891 assert_class, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 892 ASSERT_CLASS_INIT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 893 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 894 left, <, right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 895 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 896 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 897 73cda7bb8bfb1d Brendan Higgins 2019-09-23 898 #define KUNIT_BASE_LE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 899 assert_class, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 900 ASSERT_CLASS_INIT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 901 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 902 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 903 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 904 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 905 ...) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 906 KUNIT_BASE_BINARY_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 907 assert_class, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 908 ASSERT_CLASS_INIT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 909 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 910 left, <=, right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 911 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 912 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 913 73cda7bb8bfb1d Brendan Higgins 2019-09-23 914 #define KUNIT_BASE_GT_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 915 assert_class, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 916 ASSERT_CLASS_INIT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 917 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 918 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 919 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 920 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 921 ...) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 922 KUNIT_BASE_BINARY_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 923 assert_class, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 924 ASSERT_CLASS_INIT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 925 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 926 left, >, right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 927 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 928 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 929 73cda7bb8bfb1d Brendan Higgins 2019-09-23 930 #define KUNIT_BASE_GE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 931 assert_class, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 932 ASSERT_CLASS_INIT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 933 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 934 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 935 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 936 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 937 ...) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 938 KUNIT_BASE_BINARY_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 939 assert_class, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 940 ASSERT_CLASS_INIT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 941 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 942 left, >=, right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 943 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 944 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 945 73cda7bb8bfb1d Brendan Higgins 2019-09-23 946 #define KUNIT_BINARY_EQ_MSG_ASSERTION(test, assert_type, left, right, fmt, ...)\ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 947 KUNIT_BASE_EQ_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 948 kunit_binary_assert, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 949 KUNIT_INIT_BINARY_ASSERT_STRUCT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 950 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 951 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 952 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 953 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 954 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 955 73cda7bb8bfb1d Brendan Higgins 2019-09-23 956 #define KUNIT_BINARY_EQ_ASSERTION(test, assert_type, left, right) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 957 KUNIT_BINARY_EQ_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 958 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 959 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 960 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 961 NULL) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 962 73cda7bb8bfb1d Brendan Higgins 2019-09-23 963 #define KUNIT_BINARY_PTR_EQ_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 964 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 965 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 966 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 967 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 968 ...) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 969 KUNIT_BASE_EQ_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 970 kunit_binary_ptr_assert, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 971 KUNIT_INIT_BINARY_PTR_ASSERT_STRUCT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 972 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 973 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 974 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 975 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 976 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 977 73cda7bb8bfb1d Brendan Higgins 2019-09-23 978 #define KUNIT_BINARY_PTR_EQ_ASSERTION(test, assert_type, left, right) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 979 KUNIT_BINARY_PTR_EQ_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 980 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 981 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 982 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 983 NULL) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 984 73cda7bb8bfb1d Brendan Higgins 2019-09-23 985 #define KUNIT_BINARY_NE_MSG_ASSERTION(test, assert_type, left, right, fmt, ...)\ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 986 KUNIT_BASE_NE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 987 kunit_binary_assert, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 988 KUNIT_INIT_BINARY_ASSERT_STRUCT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 989 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 990 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 991 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 992 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 993 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 994 73cda7bb8bfb1d Brendan Higgins 2019-09-23 995 #define KUNIT_BINARY_NE_ASSERTION(test, assert_type, left, right) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 996 KUNIT_BINARY_NE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 997 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 998 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 999 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1000 NULL) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1001 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1002 #define KUNIT_BINARY_PTR_NE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1003 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1004 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1005 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1006 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1007 ...) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1008 KUNIT_BASE_NE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1009 kunit_binary_ptr_assert, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1010 KUNIT_INIT_BINARY_PTR_ASSERT_STRUCT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1011 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1012 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1013 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1014 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1015 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1016 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1017 #define KUNIT_BINARY_PTR_NE_ASSERTION(test, assert_type, left, right) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1018 KUNIT_BINARY_PTR_NE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1019 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1020 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1021 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1022 NULL) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1023 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1024 #define KUNIT_BINARY_LT_MSG_ASSERTION(test, assert_type, left, right, fmt, ...)\ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1025 KUNIT_BASE_LT_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1026 kunit_binary_assert, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1027 KUNIT_INIT_BINARY_ASSERT_STRUCT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1028 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1029 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1030 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1031 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1032 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1033 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1034 #define KUNIT_BINARY_LT_ASSERTION(test, assert_type, left, right) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1035 KUNIT_BINARY_LT_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1036 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1037 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1038 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1039 NULL) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1040 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1041 #define KUNIT_BINARY_PTR_LT_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1042 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1043 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1044 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1045 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1046 ...) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1047 KUNIT_BASE_LT_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1048 kunit_binary_ptr_assert, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1049 KUNIT_INIT_BINARY_PTR_ASSERT_STRUCT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1050 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1051 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1052 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1053 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1054 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1055 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1056 #define KUNIT_BINARY_PTR_LT_ASSERTION(test, assert_type, left, right) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1057 KUNIT_BINARY_PTR_LT_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1058 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1059 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1060 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1061 NULL) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1062 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1063 #define KUNIT_BINARY_LE_MSG_ASSERTION(test, assert_type, left, right, fmt, ...)\ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1064 KUNIT_BASE_LE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1065 kunit_binary_assert, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1066 KUNIT_INIT_BINARY_ASSERT_STRUCT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1067 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1068 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1069 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1070 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1071 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1072 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1073 #define KUNIT_BINARY_LE_ASSERTION(test, assert_type, left, right) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1074 KUNIT_BINARY_LE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1075 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1076 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1077 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1078 NULL) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1079 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1080 #define KUNIT_BINARY_PTR_LE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1081 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1082 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1083 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1084 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1085 ...) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1086 KUNIT_BASE_LE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1087 kunit_binary_ptr_assert, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1088 KUNIT_INIT_BINARY_PTR_ASSERT_STRUCT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1089 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1090 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1091 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1092 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1093 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1094 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1095 #define KUNIT_BINARY_PTR_LE_ASSERTION(test, assert_type, left, right) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1096 KUNIT_BINARY_PTR_LE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1097 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1098 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1099 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1100 NULL) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1101 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1102 #define KUNIT_BINARY_GT_MSG_ASSERTION(test, assert_type, left, right, fmt, ...)\ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1103 KUNIT_BASE_GT_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1104 kunit_binary_assert, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1105 KUNIT_INIT_BINARY_ASSERT_STRUCT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1106 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1107 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1108 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1109 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1110 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1111 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1112 #define KUNIT_BINARY_GT_ASSERTION(test, assert_type, left, right) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1113 KUNIT_BINARY_GT_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1114 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1115 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1116 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1117 NULL) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1118 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1119 #define KUNIT_BINARY_PTR_GT_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1120 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1121 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1122 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1123 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1124 ...) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1125 KUNIT_BASE_GT_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1126 kunit_binary_ptr_assert, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1127 KUNIT_INIT_BINARY_PTR_ASSERT_STRUCT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1128 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1129 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1130 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1131 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1132 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1133 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1134 #define KUNIT_BINARY_PTR_GT_ASSERTION(test, assert_type, left, right) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1135 KUNIT_BINARY_PTR_GT_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1136 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1137 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1138 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1139 NULL) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1140 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1141 #define KUNIT_BINARY_GE_MSG_ASSERTION(test, assert_type, left, right, fmt, ...)\ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1142 KUNIT_BASE_GE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1143 kunit_binary_assert, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1144 KUNIT_INIT_BINARY_ASSERT_STRUCT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1145 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1146 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1147 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1148 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1149 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1150 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1151 #define KUNIT_BINARY_GE_ASSERTION(test, assert_type, left, right) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1152 KUNIT_BINARY_GE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1153 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1154 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1155 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1156 NULL) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1157 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1158 #define KUNIT_BINARY_PTR_GE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1159 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1160 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1161 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1162 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1163 ...) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1164 KUNIT_BASE_GE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1165 kunit_binary_ptr_assert, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1166 KUNIT_INIT_BINARY_PTR_ASSERT_STRUCT, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1167 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1168 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1169 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1170 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1171 ##__VA_ARGS__) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1172 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1173 #define KUNIT_BINARY_PTR_GE_ASSERTION(test, assert_type, left, right) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1174 KUNIT_BINARY_PTR_GE_MSG_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1175 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1176 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1177 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1178 NULL) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1179 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1180 #define KUNIT_BINARY_STR_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1181 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1182 left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1183 op, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1184 right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1185 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1186 ...) \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1187 do { \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 @1188 typeof(left) __left = (left); \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1189 typeof(right) __right = (right); \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1190 \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1191 KUNIT_ASSERTION(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1192 strcmp(__left, __right) op 0, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1193 kunit_binary_str_assert, \ 3084db0e0d5076 Daniel Latypov 2020-11-02 1194 KUNIT_INIT_BINARY_STR_ASSERT_STRUCT(test, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1195 assert_type, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1196 #op, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1197 #left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1198 __left, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1199 #right, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1200 __right), \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1201 fmt, \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1202 ##__VA_ARGS__); \ 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1203 } while (0) 73cda7bb8bfb1d Brendan Higgins 2019-09-23 1204 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
On Fri, May 28, 2021 at 12:59 AM David Gow <davidgow@google.com> wrote: > > The kunit_mark_skipped() macro marks the current test as "skipped", with > the provided reason. The kunit_skip() macro will mark the test as > skipped, and abort the test. > > The TAP specification supports this "SKIP directive" as a comment after > the "ok" / "not ok" for a test. See the "Directives" section of the TAP > spec for details: > https://testanything.org/tap-specification.html#directives > > The 'success' field for KUnit tests is replaced with a kunit_status > enum, which can be SUCCESS, FAILURE, or SKIPPED, combined with a > 'status_comment' containing information on why a test was skipped. > > A new 'kunit_status' test suite is added to test this. > > Signed-off-by: David Gow <davidgow@google.com> > Tested-by: Marco Elver <elver@google.com> > Reviewed-by: Daniel Latypov <dlatypov@google.com> One fairly minor nit below. Other than that, looks great! Reviewed-by: Brendan Higgins <brendanhiggins@google.com> > --- [...] > diff --git a/include/kunit/test.h b/include/kunit/test.h > index b68c61348121..1401c620ac5e 100644 > --- a/include/kunit/test.h > +++ b/include/kunit/test.h > @@ -105,6 +105,18 @@ struct kunit; > #define KUNIT_SUBTEST_INDENT " " > #define KUNIT_SUBSUBTEST_INDENT " " > > +/** > + * enum kunit_status - Type of result for a test or test suite > + * @KUNIT_SUCCESS: Denotes the test suite has not failed nor been skipped > + * @KUNIT_FAILURE: Denotes the test has failed. > + * @KUNIT_SKIPPED: Denotes the test has been skipped. > + */ > +enum kunit_status { > + KUNIT_SUCCESS, > + KUNIT_FAILURE, > + KUNIT_SKIPPED, > +}; > + > /** > * struct kunit_case - represents an individual test case. > * > @@ -148,13 +160,20 @@ struct kunit_case { > const void* (*generate_params)(const void *prev, char *desc); > > /* private: internal use only. */ > - bool success; > + enum kunit_status status; > char *log; > }; > > -static inline char *kunit_status_to_string(bool status) > +static inline char *kunit_status_to_ok_not_ok(enum kunit_status status) > { > - return status ? "ok" : "not ok"; > + switch (status) { > + case KUNIT_SKIPPED: > + case KUNIT_SUCCESS: > + return "ok"; > + case KUNIT_FAILURE: > + return "not ok"; > + } > + return "invalid"; > } > > /** > @@ -212,6 +231,7 @@ struct kunit_suite { > struct kunit_case *test_cases; > > /* private: internal use only */ > + char status_comment[256]; nit: How about we make the 256 a constant since you use it in a number of places? If not, at least when you reference the struct, you might want to use ARRAY_SIZE(...). > struct dentry *debugfs; > char *log; > }; [...]
diff --git a/include/kunit/test.h b/include/kunit/test.h index b68c61348121..1401c620ac5e 100644 --- a/include/kunit/test.h +++ b/include/kunit/test.h @@ -105,6 +105,18 @@ struct kunit; #define KUNIT_SUBTEST_INDENT " " #define KUNIT_SUBSUBTEST_INDENT " " +/** + * enum kunit_status - Type of result for a test or test suite + * @KUNIT_SUCCESS: Denotes the test suite has not failed nor been skipped + * @KUNIT_FAILURE: Denotes the test has failed. + * @KUNIT_SKIPPED: Denotes the test has been skipped. + */ +enum kunit_status { + KUNIT_SUCCESS, + KUNIT_FAILURE, + KUNIT_SKIPPED, +}; + /** * struct kunit_case - represents an individual test case. * @@ -148,13 +160,20 @@ struct kunit_case { const void* (*generate_params)(const void *prev, char *desc); /* private: internal use only. */ - bool success; + enum kunit_status status; char *log; }; -static inline char *kunit_status_to_string(bool status) +static inline char *kunit_status_to_ok_not_ok(enum kunit_status status) { - return status ? "ok" : "not ok"; + switch (status) { + case KUNIT_SKIPPED: + case KUNIT_SUCCESS: + return "ok"; + case KUNIT_FAILURE: + return "not ok"; + } + return "invalid"; } /** @@ -212,6 +231,7 @@ struct kunit_suite { struct kunit_case *test_cases; /* private: internal use only */ + char status_comment[256]; struct dentry *debugfs; char *log; }; @@ -245,19 +265,21 @@ struct kunit { * be read after the test case finishes once all threads associated * with the test case have terminated. */ - bool success; /* Read only after test_case finishes! */ spinlock_t lock; /* Guards all mutable test state. */ + enum kunit_status status; /* Read only after test_case finishes! */ /* * Because resources is a list that may be updated multiple times (with * new resources) from any thread associated with a test case, we must * protect it with some type of lock. */ struct list_head resources; /* Protected by lock. */ + + char status_comment[256]; }; static inline void kunit_set_failure(struct kunit *test) { - WRITE_ONCE(test->success, false); + WRITE_ONCE(test->status, KUNIT_FAILURE); } void kunit_init_test(struct kunit *test, const char *name, char *log); @@ -348,7 +370,7 @@ static inline int kunit_run_all_tests(void) #define kunit_suite_for_each_test_case(suite, test_case) \ for (test_case = suite->test_cases; test_case->run_case; test_case++) -bool kunit_suite_has_succeeded(struct kunit_suite *suite); +enum kunit_status kunit_suite_has_succeeded(struct kunit_suite *suite); /* * Like kunit_alloc_resource() below, but returns the struct kunit_resource @@ -612,6 +634,40 @@ void kunit_cleanup(struct kunit *test); void kunit_log_append(char *log, const char *fmt, ...); +/** + * kunit_mark_skipped() - Marks @test_or_suite as skipped + * + * @test_or_suite: The test context object. + * @fmt: A printk() style format string. + * + * Marks the test as skipped. @fmt is given output as the test status + * comment, typically the reason the test was skipped. + * + * Test execution continues after kunit_mark_skipped() is called. + */ +#define kunit_mark_skipped(test_or_suite, fmt, ...) \ + do { \ + WRITE_ONCE((test_or_suite)->status, KUNIT_SKIPPED); \ + scnprintf((test_or_suite)->status_comment, 256, fmt, ##__VA_ARGS__); \ + } while (0) + +/** + * kunit_skip() - Marks @test_or_suite as skipped + * + * @test_or_suite: The test context object. + * @fmt: A printk() style format string. + * + * Skips the test. @fmt is given output as the test status + * comment, typically the reason the test was skipped. + * + * Test execution is halted after kunit_skip() is called. + */ +#define kunit_skip(test_or_suite, fmt, ...) \ + do { \ + kunit_mark_skipped((test_or_suite), fmt, ##__VA_ARGS__);\ + kunit_try_catch_throw(&((test_or_suite)->try_catch)); \ + } while (0) + /* * printk and log to per-test or per-suite log buffer. Logging only done * if CONFIG_KUNIT_DEBUGFS is 'y'; if it is 'n', no log is allocated/used. diff --git a/lib/kunit/kunit-test.c b/lib/kunit/kunit-test.c index 69f902440a0e..d69efcbed624 100644 --- a/lib/kunit/kunit-test.c +++ b/lib/kunit/kunit-test.c @@ -437,7 +437,47 @@ static void kunit_log_test(struct kunit *test) #endif } +static void kunit_status_set_failure_test(struct kunit *test) +{ + struct kunit fake; + + kunit_init_test(&fake, "fake test", NULL); + + KUNIT_EXPECT_EQ(test, fake.status, (enum kunit_status)KUNIT_SUCCESS); + kunit_set_failure(&fake); + KUNIT_EXPECT_EQ(test, fake.status, (enum kunit_status)KUNIT_FAILURE); +} + +static void kunit_status_mark_skipped_test(struct kunit *test) +{ + struct kunit fake; + + kunit_init_test(&fake, "fake test", NULL); + + /* Before: Should be SUCCESS with no comment. */ + KUNIT_EXPECT_EQ(test, fake.status, KUNIT_SUCCESS); + KUNIT_EXPECT_STREQ(test, fake.status_comment, ""); + + /* Mark the test as skipped. */ + kunit_mark_skipped(&fake, "Accepts format string: %s", "YES"); + + /* After: Should be SKIPPED with our comment. */ + KUNIT_EXPECT_EQ(test, fake.status, (enum kunit_status)KUNIT_SKIPPED); + KUNIT_EXPECT_STREQ(test, fake.status_comment, "Accepts format string: YES"); +} + +static struct kunit_case kunit_status_test_cases[] = { + KUNIT_CASE(kunit_status_set_failure_test), + KUNIT_CASE(kunit_status_mark_skipped_test), + {} +}; + +static struct kunit_suite kunit_status_test_suite = { + .name = "kunit_status", + .test_cases = kunit_status_test_cases, +}; + kunit_test_suites(&kunit_try_catch_test_suite, &kunit_resource_test_suite, - &kunit_log_test_suite); + &kunit_log_test_suite, &kunit_status_test_suite); MODULE_LICENSE("GPL v2"); diff --git a/lib/kunit/test.c b/lib/kunit/test.c index 2f6cc0123232..8ce0c8fddb96 100644 --- a/lib/kunit/test.c +++ b/lib/kunit/test.c @@ -98,12 +98,14 @@ static void kunit_print_subtest_start(struct kunit_suite *suite) static void kunit_print_ok_not_ok(void *test_or_suite, bool is_test, - bool is_ok, + enum kunit_status status, size_t test_number, - const char *description) + const char *description, + const char *directive) { struct kunit_suite *suite = is_test ? NULL : test_or_suite; struct kunit *test = is_test ? test_or_suite : NULL; + const char *directive_header = (status == KUNIT_SKIPPED) ? " # SKIP " : ""; /* * We do not log the test suite results as doing so would @@ -114,25 +116,31 @@ static void kunit_print_ok_not_ok(void *test_or_suite, * representation. */ if (suite) - pr_info("%s %zd - %s\n", - kunit_status_to_string(is_ok), - test_number, description); + pr_info("%s %zd - %s%s%s\n", + kunit_status_to_ok_not_ok(status), + test_number, description, directive_header, + (status == KUNIT_SKIPPED) ? directive : ""); else - kunit_log(KERN_INFO, test, KUNIT_SUBTEST_INDENT "%s %zd - %s", - kunit_status_to_string(is_ok), - test_number, description); + kunit_log(KERN_INFO, test, + KUNIT_SUBTEST_INDENT "%s %zd - %s%s%s", + kunit_status_to_ok_not_ok(status), + test_number, description, directive_header, + (status == KUNIT_SKIPPED) ? directive : ""); } -bool kunit_suite_has_succeeded(struct kunit_suite *suite) +enum kunit_status kunit_suite_has_succeeded(struct kunit_suite *suite) { const struct kunit_case *test_case; + enum kunit_status status = KUNIT_SKIPPED; kunit_suite_for_each_test_case(suite, test_case) { - if (!test_case->success) - return false; + if (test_case->status == KUNIT_FAILURE) + return KUNIT_FAILURE; + else if (test_case->status == KUNIT_SUCCESS) + status = KUNIT_SUCCESS; } - return true; + return status; } EXPORT_SYMBOL_GPL(kunit_suite_has_succeeded); @@ -143,7 +151,8 @@ static void kunit_print_subtest_end(struct kunit_suite *suite) kunit_print_ok_not_ok((void *)suite, false, kunit_suite_has_succeeded(suite), kunit_suite_counter++, - suite->name); + suite->name, + suite->status_comment); } unsigned int kunit_test_case_num(struct kunit_suite *suite, @@ -252,7 +261,8 @@ void kunit_init_test(struct kunit *test, const char *name, char *log) test->log = log; if (test->log) test->log[0] = '\0'; - test->success = true; + test->status = KUNIT_SUCCESS; + test->status_comment[0] = '\0'; } EXPORT_SYMBOL_GPL(kunit_init_test); @@ -376,7 +386,8 @@ static void kunit_run_case_catch_errors(struct kunit_suite *suite, context.test_case = test_case; kunit_try_catch_run(try_catch, &context); - test_case->success = test->success; + test_case->status = test->status; + } int kunit_run_tests(struct kunit_suite *suite) @@ -388,7 +399,6 @@ int kunit_run_tests(struct kunit_suite *suite) kunit_suite_for_each_test_case(suite, test_case) { struct kunit test = { .param_value = NULL, .param_index = 0 }; - bool test_success = true; if (test_case->generate_params) { /* Get initial param. */ @@ -398,7 +408,6 @@ int kunit_run_tests(struct kunit_suite *suite) do { kunit_run_case_catch_errors(suite, test_case, &test); - test_success &= test_case->success; if (test_case->generate_params) { if (param_desc[0] == '\0') { @@ -410,7 +419,7 @@ int kunit_run_tests(struct kunit_suite *suite) KUNIT_SUBTEST_INDENT "# %s: %s %d - %s", test_case->name, - kunit_status_to_string(test.success), + kunit_status_to_ok_not_ok(test.status), test.param_index + 1, param_desc); /* Get next param. */ @@ -420,9 +429,10 @@ int kunit_run_tests(struct kunit_suite *suite) } } while (test.param_value); - kunit_print_ok_not_ok(&test, true, test_success, + kunit_print_ok_not_ok(&test, true, test_case->status, kunit_test_case_num(suite, test_case), - test_case->name); + test_case->name, + test.status_comment); } kunit_print_subtest_end(suite); @@ -434,6 +444,7 @@ EXPORT_SYMBOL_GPL(kunit_run_tests); static void kunit_init_suite(struct kunit_suite *suite) { kunit_debugfs_create_suite(suite); + suite->status_comment[0] = '\0'; } int __kunit_test_suites_init(struct kunit_suite * const * const suites)