From: kernel test robot <lkp@intel.com> To: Arpitha Raghunandan <98.arpi@gmail.com>, brendanhiggins@google.com, skhan@linuxfoundation.org, elver@google.com, yzaikin@google.com, tytso@mit.edu, adilger.kernel@dilger.ca Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com, Arpitha Raghunandan <98.arpi@gmail.com>, linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 1/2] kunit: Support for Parameterized Testing Date: Sat, 24 Oct 2020 02:08:40 +0800 [thread overview] Message-ID: <202010240247.JNQ8VRdQ-lkp@intel.com> (raw) In-Reply-To: <20201023150536.282568-1-98.arpi@gmail.com> [-- Attachment #1: Type: text/plain, Size: 41868 bytes --] Hi Arpitha, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on ext4/dev] [also build test WARNING on linus/master v5.9 next-20201023] [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/Arpitha-Raghunandan/kunit-Support-for-Parameterized-Testing/20201023-230827 base: https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev config: x86_64-randconfig-r015-20201023 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 147b9497e79a98a8614b2b5eb4ba653b44f6b6f0) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # https://github.com/0day-ci/linux/commit/2c09a7974ce3b438845bfafb539513dc91c021b4 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Arpitha-Raghunandan/kunit-Support-for-Parameterized-Testing/20201023-230827 git checkout 2c09a7974ce3b438845bfafb539513dc91c021b4 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 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 >>): In file included from lib/kunit/test.c:9: >> include/kunit/test.h:1732:2: warning: comparison of distinct pointer types ('typeof (__left) *' (aka 'unsigned long *') and 'typeof (__right) *' (aka 'int *')) [-Wcompare-distinct-pointer-types] KUNIT_ASSERT_EQ(test, (prev_param - param_array) % type_size, 0); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1494:2: note: expanded from macro 'KUNIT_ASSERT_EQ' KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_ASSERTION, left, right) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:843:2: note: expanded from macro 'KUNIT_BINARY_EQ_ASSERTION' KUNIT_BINARY_EQ_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:833:2: note: expanded from macro 'KUNIT_BINARY_EQ_MSG_ASSERTION' KUNIT_BASE_EQ_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:744:2: note: expanded from macro 'KUNIT_BASE_EQ_MSG_ASSERTION' KUNIT_BASE_BINARY_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:720:9: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION' ((void)__typecheck(__left, __right)); \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kernel.h:850:29: note: expanded from macro '__typecheck' (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1))) ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~ In file included from lib/kunit/test.c:9: >> include/kunit/test.h:1737:2: warning: incompatible pointer to integer conversion initializing 'long long' with an expression of type 'typeof (prev_param)' (aka 'void *') [-Wint-conversion] KUNIT_ASSERT_GE(test, prev_param, param_array); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1644:2: note: expanded from macro 'KUNIT_ASSERT_GE' KUNIT_BINARY_GE_ASSERTION(test, KUNIT_ASSERTION, left, right) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1038:2: note: expanded from macro 'KUNIT_BINARY_GE_ASSERTION' KUNIT_BINARY_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1028:2: note: expanded from macro 'KUNIT_BINARY_GE_MSG_ASSERTION' KUNIT_BASE_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/kunit/test.h:729:8: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION' __left, \ ^~~~~~ include/kunit/assert.h:238:16: note: expanded from macro 'KUNIT_INIT_BINARY_ASSERT_STRUCT' .left_value = left_val, \ ^~~~~~~~ include/kunit/test.h:622:36: note: expanded from macro 'KUNIT_ASSERTION' struct assert_class __assertion = INITIALIZER; \ ^~~~~~~~~~~ >> include/kunit/test.h:1737:2: warning: incompatible pointer to integer conversion initializing 'long long' with an expression of type 'typeof (param_array)' (aka 'void *') [-Wint-conversion] KUNIT_ASSERT_GE(test, prev_param, param_array); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1644:2: note: expanded from macro 'KUNIT_ASSERT_GE' KUNIT_BINARY_GE_ASSERTION(test, KUNIT_ASSERTION, left, right) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1038:2: note: expanded from macro 'KUNIT_BINARY_GE_ASSERTION' KUNIT_BINARY_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1028:2: note: expanded from macro 'KUNIT_BINARY_GE_MSG_ASSERTION' KUNIT_BASE_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/kunit/test.h:731:8: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION' __right), \ ^~~~~~~ include/kunit/assert.h:240:17: note: expanded from macro 'KUNIT_INIT_BINARY_ASSERT_STRUCT' .right_value = right_val \ ^~~~~~~~~ include/kunit/test.h:622:36: note: expanded from macro 'KUNIT_ASSERTION' struct assert_class __assertion = INITIALIZER; \ ^~~~~~~~~~~ 3 warnings generated. -- In file included from lib/kunit/debugfs.c:10: >> include/kunit/test.h:1732:2: warning: comparison of distinct pointer types ('typeof (__left) *' (aka 'unsigned long *') and 'typeof (__right) *' (aka 'int *')) [-Wcompare-distinct-pointer-types] KUNIT_ASSERT_EQ(test, (prev_param - param_array) % type_size, 0); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1494:2: note: expanded from macro 'KUNIT_ASSERT_EQ' KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_ASSERTION, left, right) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:843:2: note: expanded from macro 'KUNIT_BINARY_EQ_ASSERTION' KUNIT_BINARY_EQ_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:833:2: note: expanded from macro 'KUNIT_BINARY_EQ_MSG_ASSERTION' KUNIT_BASE_EQ_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:744:2: note: expanded from macro 'KUNIT_BASE_EQ_MSG_ASSERTION' KUNIT_BASE_BINARY_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:720:9: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION' ((void)__typecheck(__left, __right)); \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kernel.h:850:29: note: expanded from macro '__typecheck' (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1))) ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~ In file included from lib/kunit/debugfs.c:10: >> include/kunit/test.h:1737:2: warning: incompatible pointer to integer conversion initializing 'long long' with an expression of type 'typeof (prev_param)' (aka 'void *') [-Wint-conversion] KUNIT_ASSERT_GE(test, prev_param, param_array); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1644:2: note: expanded from macro 'KUNIT_ASSERT_GE' KUNIT_BINARY_GE_ASSERTION(test, KUNIT_ASSERTION, left, right) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1038:2: note: expanded from macro 'KUNIT_BINARY_GE_ASSERTION' KUNIT_BINARY_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1028:2: note: expanded from macro 'KUNIT_BINARY_GE_MSG_ASSERTION' KUNIT_BASE_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/kunit/test.h:729:8: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION' __left, \ ^~~~~~ include/kunit/assert.h:238:16: note: expanded from macro 'KUNIT_INIT_BINARY_ASSERT_STRUCT' .left_value = left_val, \ ^~~~~~~~ include/kunit/test.h:622:36: note: expanded from macro 'KUNIT_ASSERTION' struct assert_class __assertion = INITIALIZER; \ ^~~~~~~~~~~ >> include/kunit/test.h:1737:2: warning: incompatible pointer to integer conversion initializing 'long long' with an expression of type 'typeof (param_array)' (aka 'void *') [-Wint-conversion] KUNIT_ASSERT_GE(test, prev_param, param_array); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1644:2: note: expanded from macro 'KUNIT_ASSERT_GE' KUNIT_BINARY_GE_ASSERTION(test, KUNIT_ASSERTION, left, right) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1038:2: note: expanded from macro 'KUNIT_BINARY_GE_ASSERTION' KUNIT_BINARY_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1028:2: note: expanded from macro 'KUNIT_BINARY_GE_MSG_ASSERTION' KUNIT_BASE_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/kunit/test.h:731:8: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION' __right), \ ^~~~~~~ include/kunit/assert.h:240:17: note: expanded from macro 'KUNIT_INIT_BINARY_ASSERT_STRUCT' .right_value = right_val \ ^~~~~~~~~ include/kunit/test.h:622:36: note: expanded from macro 'KUNIT_ASSERTION' struct assert_class __assertion = INITIALIZER; \ ^~~~~~~~~~~ lib/kunit/debugfs.c:28:6: warning: no previous prototype for function 'kunit_debugfs_cleanup' [-Wmissing-prototypes] void kunit_debugfs_cleanup(void) ^ lib/kunit/debugfs.c:28:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void kunit_debugfs_cleanup(void) ^ static lib/kunit/debugfs.c:33:6: warning: no previous prototype for function 'kunit_debugfs_init' [-Wmissing-prototypes] void kunit_debugfs_init(void) ^ lib/kunit/debugfs.c:33:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void kunit_debugfs_init(void) ^ static lib/kunit/debugfs.c:92:6: warning: no previous prototype for function 'kunit_debugfs_create_suite' [-Wmissing-prototypes] void kunit_debugfs_create_suite(struct kunit_suite *suite) ^ lib/kunit/debugfs.c:92:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void kunit_debugfs_create_suite(struct kunit_suite *suite) ^ static lib/kunit/debugfs.c:108:6: warning: no previous prototype for function 'kunit_debugfs_destroy_suite' [-Wmissing-prototypes] void kunit_debugfs_destroy_suite(struct kunit_suite *suite) ^ lib/kunit/debugfs.c:108:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void kunit_debugfs_destroy_suite(struct kunit_suite *suite) ^ static 7 warnings generated. vim +1732 include/kunit/test.h 1147 1148 #define KUNIT_PTR_NOT_ERR_OR_NULL_ASSERTION(test, assert_type, ptr) \ 1149 KUNIT_PTR_NOT_ERR_OR_NULL_MSG_ASSERTION(test, \ 1150 assert_type, \ 1151 ptr, \ 1152 NULL) 1153 1154 /** 1155 * KUNIT_EXPECT_TRUE() - Causes a test failure when the expression is not true. 1156 * @test: The test context object. 1157 * @condition: an arbitrary boolean expression. The test fails when this does 1158 * not evaluate to true. 1159 * 1160 * This and expectations of the form `KUNIT_EXPECT_*` will cause the test case 1161 * to fail when the specified condition is not met; however, it will not prevent 1162 * the test case from continuing to run; this is otherwise known as an 1163 * *expectation failure*. 1164 */ 1165 #define KUNIT_EXPECT_TRUE(test, condition) \ 1166 KUNIT_TRUE_ASSERTION(test, KUNIT_EXPECTATION, condition) 1167 1168 #define KUNIT_EXPECT_TRUE_MSG(test, condition, fmt, ...) \ 1169 KUNIT_TRUE_MSG_ASSERTION(test, \ 1170 KUNIT_EXPECTATION, \ 1171 condition, \ 1172 fmt, \ 1173 ##__VA_ARGS__) 1174 1175 /** 1176 * KUNIT_EXPECT_FALSE() - Makes a test failure when the expression is not false. 1177 * @test: The test context object. 1178 * @condition: an arbitrary boolean expression. The test fails when this does 1179 * not evaluate to false. 1180 * 1181 * Sets an expectation that @condition evaluates to false. See 1182 * KUNIT_EXPECT_TRUE() for more information. 1183 */ 1184 #define KUNIT_EXPECT_FALSE(test, condition) \ 1185 KUNIT_FALSE_ASSERTION(test, KUNIT_EXPECTATION, condition) 1186 1187 #define KUNIT_EXPECT_FALSE_MSG(test, condition, fmt, ...) \ 1188 KUNIT_FALSE_MSG_ASSERTION(test, \ 1189 KUNIT_EXPECTATION, \ 1190 condition, \ 1191 fmt, \ 1192 ##__VA_ARGS__) 1193 1194 /** 1195 * KUNIT_EXPECT_EQ() - Sets an expectation that @left and @right are equal. 1196 * @test: The test context object. 1197 * @left: an arbitrary expression that evaluates to a primitive C type. 1198 * @right: an arbitrary expression that evaluates to a primitive C type. 1199 * 1200 * Sets an expectation that the values that @left and @right evaluate to are 1201 * equal. This is semantically equivalent to 1202 * KUNIT_EXPECT_TRUE(@test, (@left) == (@right)). See KUNIT_EXPECT_TRUE() for 1203 * more information. 1204 */ 1205 #define KUNIT_EXPECT_EQ(test, left, right) \ 1206 KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1207 1208 #define KUNIT_EXPECT_EQ_MSG(test, left, right, fmt, ...) \ 1209 KUNIT_BINARY_EQ_MSG_ASSERTION(test, \ 1210 KUNIT_EXPECTATION, \ 1211 left, \ 1212 right, \ 1213 fmt, \ 1214 ##__VA_ARGS__) 1215 1216 /** 1217 * KUNIT_EXPECT_PTR_EQ() - Expects that pointers @left and @right are equal. 1218 * @test: The test context object. 1219 * @left: an arbitrary expression that evaluates to a pointer. 1220 * @right: an arbitrary expression that evaluates to a pointer. 1221 * 1222 * Sets an expectation that the values that @left and @right evaluate to are 1223 * equal. This is semantically equivalent to 1224 * KUNIT_EXPECT_TRUE(@test, (@left) == (@right)). See KUNIT_EXPECT_TRUE() for 1225 * more information. 1226 */ 1227 #define KUNIT_EXPECT_PTR_EQ(test, left, right) \ 1228 KUNIT_BINARY_PTR_EQ_ASSERTION(test, \ 1229 KUNIT_EXPECTATION, \ 1230 left, \ 1231 right) 1232 1233 #define KUNIT_EXPECT_PTR_EQ_MSG(test, left, right, fmt, ...) \ 1234 KUNIT_BINARY_PTR_EQ_MSG_ASSERTION(test, \ 1235 KUNIT_EXPECTATION, \ 1236 left, \ 1237 right, \ 1238 fmt, \ 1239 ##__VA_ARGS__) 1240 1241 /** 1242 * KUNIT_EXPECT_NE() - An expectation that @left and @right are not equal. 1243 * @test: The test context object. 1244 * @left: an arbitrary expression that evaluates to a primitive C type. 1245 * @right: an arbitrary expression that evaluates to a primitive C type. 1246 * 1247 * Sets an expectation that the values that @left and @right evaluate to are not 1248 * equal. This is semantically equivalent to 1249 * KUNIT_EXPECT_TRUE(@test, (@left) != (@right)). See KUNIT_EXPECT_TRUE() for 1250 * more information. 1251 */ 1252 #define KUNIT_EXPECT_NE(test, left, right) \ 1253 KUNIT_BINARY_NE_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1254 1255 #define KUNIT_EXPECT_NE_MSG(test, left, right, fmt, ...) \ 1256 KUNIT_BINARY_NE_MSG_ASSERTION(test, \ 1257 KUNIT_EXPECTATION, \ 1258 left, \ 1259 right, \ 1260 fmt, \ 1261 ##__VA_ARGS__) 1262 1263 /** 1264 * KUNIT_EXPECT_PTR_NE() - Expects that pointers @left and @right are not equal. 1265 * @test: The test context object. 1266 * @left: an arbitrary expression that evaluates to a pointer. 1267 * @right: an arbitrary expression that evaluates to a pointer. 1268 * 1269 * Sets an expectation that the values that @left and @right evaluate to are not 1270 * equal. This is semantically equivalent to 1271 * KUNIT_EXPECT_TRUE(@test, (@left) != (@right)). See KUNIT_EXPECT_TRUE() for 1272 * more information. 1273 */ 1274 #define KUNIT_EXPECT_PTR_NE(test, left, right) \ 1275 KUNIT_BINARY_PTR_NE_ASSERTION(test, \ 1276 KUNIT_EXPECTATION, \ 1277 left, \ 1278 right) 1279 1280 #define KUNIT_EXPECT_PTR_NE_MSG(test, left, right, fmt, ...) \ 1281 KUNIT_BINARY_PTR_NE_MSG_ASSERTION(test, \ 1282 KUNIT_EXPECTATION, \ 1283 left, \ 1284 right, \ 1285 fmt, \ 1286 ##__VA_ARGS__) 1287 1288 /** 1289 * KUNIT_EXPECT_LT() - An expectation that @left is less than @right. 1290 * @test: The test context object. 1291 * @left: an arbitrary expression that evaluates to a primitive C type. 1292 * @right: an arbitrary expression that evaluates to a primitive C type. 1293 * 1294 * Sets an expectation that the value that @left evaluates to is less than the 1295 * value that @right evaluates to. This is semantically equivalent to 1296 * KUNIT_EXPECT_TRUE(@test, (@left) < (@right)). See KUNIT_EXPECT_TRUE() for 1297 * more information. 1298 */ 1299 #define KUNIT_EXPECT_LT(test, left, right) \ 1300 KUNIT_BINARY_LT_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1301 1302 #define KUNIT_EXPECT_LT_MSG(test, left, right, fmt, ...) \ 1303 KUNIT_BINARY_LT_MSG_ASSERTION(test, \ 1304 KUNIT_EXPECTATION, \ 1305 left, \ 1306 right, \ 1307 fmt, \ 1308 ##__VA_ARGS__) 1309 1310 /** 1311 * KUNIT_EXPECT_LE() - Expects that @left is less than or equal to @right. 1312 * @test: The test context object. 1313 * @left: an arbitrary expression that evaluates to a primitive C type. 1314 * @right: an arbitrary expression that evaluates to a primitive C type. 1315 * 1316 * Sets an expectation that the value that @left evaluates to is less than or 1317 * equal to the value that @right evaluates to. Semantically this is equivalent 1318 * to KUNIT_EXPECT_TRUE(@test, (@left) <= (@right)). See KUNIT_EXPECT_TRUE() for 1319 * more information. 1320 */ 1321 #define KUNIT_EXPECT_LE(test, left, right) \ 1322 KUNIT_BINARY_LE_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1323 1324 #define KUNIT_EXPECT_LE_MSG(test, left, right, fmt, ...) \ 1325 KUNIT_BINARY_LE_MSG_ASSERTION(test, \ 1326 KUNIT_EXPECTATION, \ 1327 left, \ 1328 right, \ 1329 fmt, \ 1330 ##__VA_ARGS__) 1331 1332 /** 1333 * KUNIT_EXPECT_GT() - An expectation that @left is greater than @right. 1334 * @test: The test context object. 1335 * @left: an arbitrary expression that evaluates to a primitive C type. 1336 * @right: an arbitrary expression that evaluates to a primitive C type. 1337 * 1338 * Sets an expectation that the value that @left evaluates to is greater than 1339 * the value that @right evaluates to. This is semantically equivalent to 1340 * KUNIT_EXPECT_TRUE(@test, (@left) > (@right)). See KUNIT_EXPECT_TRUE() for 1341 * more information. 1342 */ 1343 #define KUNIT_EXPECT_GT(test, left, right) \ 1344 KUNIT_BINARY_GT_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1345 1346 #define KUNIT_EXPECT_GT_MSG(test, left, right, fmt, ...) \ 1347 KUNIT_BINARY_GT_MSG_ASSERTION(test, \ 1348 KUNIT_EXPECTATION, \ 1349 left, \ 1350 right, \ 1351 fmt, \ 1352 ##__VA_ARGS__) 1353 1354 /** 1355 * KUNIT_EXPECT_GE() - Expects that @left is greater than or equal to @right. 1356 * @test: The test context object. 1357 * @left: an arbitrary expression that evaluates to a primitive C type. 1358 * @right: an arbitrary expression that evaluates to a primitive C type. 1359 * 1360 * Sets an expectation that the value that @left evaluates to is greater than 1361 * the value that @right evaluates to. This is semantically equivalent to 1362 * KUNIT_EXPECT_TRUE(@test, (@left) >= (@right)). See KUNIT_EXPECT_TRUE() for 1363 * more information. 1364 */ 1365 #define KUNIT_EXPECT_GE(test, left, right) \ 1366 KUNIT_BINARY_GE_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1367 1368 #define KUNIT_EXPECT_GE_MSG(test, left, right, fmt, ...) \ 1369 KUNIT_BINARY_GE_MSG_ASSERTION(test, \ 1370 KUNIT_EXPECTATION, \ 1371 left, \ 1372 right, \ 1373 fmt, \ 1374 ##__VA_ARGS__) 1375 1376 /** 1377 * KUNIT_EXPECT_STREQ() - Expects that strings @left and @right are equal. 1378 * @test: The test context object. 1379 * @left: an arbitrary expression that evaluates to a null terminated string. 1380 * @right: an arbitrary expression that evaluates to a null terminated string. 1381 * 1382 * Sets an expectation that the values that @left and @right evaluate to are 1383 * equal. This is semantically equivalent to 1384 * KUNIT_EXPECT_TRUE(@test, !strcmp((@left), (@right))). See KUNIT_EXPECT_TRUE() 1385 * for more information. 1386 */ 1387 #define KUNIT_EXPECT_STREQ(test, left, right) \ 1388 KUNIT_BINARY_STR_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1389 1390 #define KUNIT_EXPECT_STREQ_MSG(test, left, right, fmt, ...) \ 1391 KUNIT_BINARY_STR_EQ_MSG_ASSERTION(test, \ 1392 KUNIT_EXPECTATION, \ 1393 left, \ 1394 right, \ 1395 fmt, \ 1396 ##__VA_ARGS__) 1397 1398 /** 1399 * KUNIT_EXPECT_STRNEQ() - Expects that strings @left and @right are not equal. 1400 * @test: The test context object. 1401 * @left: an arbitrary expression that evaluates to a null terminated string. 1402 * @right: an arbitrary expression that evaluates to a null terminated string. 1403 * 1404 * Sets an expectation that the values that @left and @right evaluate to are 1405 * not equal. This is semantically equivalent to 1406 * KUNIT_EXPECT_TRUE(@test, strcmp((@left), (@right))). See KUNIT_EXPECT_TRUE() 1407 * for more information. 1408 */ 1409 #define KUNIT_EXPECT_STRNEQ(test, left, right) \ 1410 KUNIT_BINARY_STR_NE_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1411 1412 #define KUNIT_EXPECT_STRNEQ_MSG(test, left, right, fmt, ...) \ 1413 KUNIT_BINARY_STR_NE_MSG_ASSERTION(test, \ 1414 KUNIT_EXPECTATION, \ 1415 left, \ 1416 right, \ 1417 fmt, \ 1418 ##__VA_ARGS__) 1419 1420 /** 1421 * KUNIT_EXPECT_NOT_ERR_OR_NULL() - Expects that @ptr is not null and not err. 1422 * @test: The test context object. 1423 * @ptr: an arbitrary pointer. 1424 * 1425 * Sets an expectation that the value that @ptr evaluates to is not null and not 1426 * an errno stored in a pointer. This is semantically equivalent to 1427 * KUNIT_EXPECT_TRUE(@test, !IS_ERR_OR_NULL(@ptr)). See KUNIT_EXPECT_TRUE() for 1428 * more information. 1429 */ 1430 #define KUNIT_EXPECT_NOT_ERR_OR_NULL(test, ptr) \ 1431 KUNIT_PTR_NOT_ERR_OR_NULL_ASSERTION(test, KUNIT_EXPECTATION, ptr) 1432 1433 #define KUNIT_EXPECT_NOT_ERR_OR_NULL_MSG(test, ptr, fmt, ...) \ 1434 KUNIT_PTR_NOT_ERR_OR_NULL_MSG_ASSERTION(test, \ 1435 KUNIT_EXPECTATION, \ 1436 ptr, \ 1437 fmt, \ 1438 ##__VA_ARGS__) 1439 1440 #define KUNIT_ASSERT_FAILURE(test, fmt, ...) \ 1441 KUNIT_FAIL_ASSERTION(test, KUNIT_ASSERTION, fmt, ##__VA_ARGS__) 1442 1443 /** 1444 * KUNIT_ASSERT_TRUE() - Sets an assertion that @condition is true. 1445 * @test: The test context object. 1446 * @condition: an arbitrary boolean expression. The test fails and aborts when 1447 * this does not evaluate to true. 1448 * 1449 * This and assertions of the form `KUNIT_ASSERT_*` will cause the test case to 1450 * fail *and immediately abort* when the specified condition is not met. Unlike 1451 * an expectation failure, it will prevent the test case from continuing to run; 1452 * this is otherwise known as an *assertion failure*. 1453 */ 1454 #define KUNIT_ASSERT_TRUE(test, condition) \ 1455 KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition) 1456 1457 #define KUNIT_ASSERT_TRUE_MSG(test, condition, fmt, ...) \ 1458 KUNIT_TRUE_MSG_ASSERTION(test, \ 1459 KUNIT_ASSERTION, \ 1460 condition, \ 1461 fmt, \ 1462 ##__VA_ARGS__) 1463 1464 /** 1465 * KUNIT_ASSERT_FALSE() - Sets an assertion that @condition is false. 1466 * @test: The test context object. 1467 * @condition: an arbitrary boolean expression. 1468 * 1469 * Sets an assertion that the value that @condition evaluates to is false. This 1470 * is the same as KUNIT_EXPECT_FALSE(), except it causes an assertion failure 1471 * (see KUNIT_ASSERT_TRUE()) when the assertion is not met. 1472 */ 1473 #define KUNIT_ASSERT_FALSE(test, condition) \ 1474 KUNIT_FALSE_ASSERTION(test, KUNIT_ASSERTION, condition) 1475 1476 #define KUNIT_ASSERT_FALSE_MSG(test, condition, fmt, ...) \ 1477 KUNIT_FALSE_MSG_ASSERTION(test, \ 1478 KUNIT_ASSERTION, \ 1479 condition, \ 1480 fmt, \ 1481 ##__VA_ARGS__) 1482 1483 /** 1484 * KUNIT_ASSERT_EQ() - Sets an assertion that @left and @right are equal. 1485 * @test: The test context object. 1486 * @left: an arbitrary expression that evaluates to a primitive C type. 1487 * @right: an arbitrary expression that evaluates to a primitive C type. 1488 * 1489 * Sets an assertion that the values that @left and @right evaluate to are 1490 * equal. This is the same as KUNIT_EXPECT_EQ(), except it causes an assertion 1491 * failure (see KUNIT_ASSERT_TRUE()) when the assertion is not met. 1492 */ 1493 #define KUNIT_ASSERT_EQ(test, left, right) \ 1494 KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_ASSERTION, left, right) 1495 1496 #define KUNIT_ASSERT_EQ_MSG(test, left, right, fmt, ...) \ 1497 KUNIT_BINARY_EQ_MSG_ASSERTION(test, \ 1498 KUNIT_ASSERTION, \ 1499 left, \ 1500 right, \ 1501 fmt, \ 1502 ##__VA_ARGS__) 1503 1504 /** 1505 * KUNIT_ASSERT_PTR_EQ() - Asserts that pointers @left and @right are equal. 1506 * @test: The test context object. 1507 * @left: an arbitrary expression that evaluates to a pointer. 1508 * @right: an arbitrary expression that evaluates to a pointer. 1509 * 1510 * Sets an assertion that the values that @left and @right evaluate to are 1511 * equal. This is the same as KUNIT_EXPECT_EQ(), except it causes an assertion 1512 * failure (see KUNIT_ASSERT_TRUE()) when the assertion is not met. 1513 */ 1514 #define KUNIT_ASSERT_PTR_EQ(test, left, right) \ 1515 KUNIT_BINARY_PTR_EQ_ASSERTION(test, KUNIT_ASSERTION, left, right) 1516 1517 #define KUNIT_ASSERT_PTR_EQ_MSG(test, left, right, fmt, ...) \ 1518 KUNIT_BINARY_PTR_EQ_MSG_ASSERTION(test, \ 1519 KUNIT_ASSERTION, \ 1520 left, \ 1521 right, \ 1522 fmt, \ 1523 ##__VA_ARGS__) 1524 1525 /** 1526 * KUNIT_ASSERT_NE() - An assertion that @left and @right are not equal. 1527 * @test: The test context object. 1528 * @left: an arbitrary expression that evaluates to a primitive C type. 1529 * @right: an arbitrary expression that evaluates to a primitive C type. 1530 * 1531 * Sets an assertion that the values that @left and @right evaluate to are not 1532 * equal. This is the same as KUNIT_EXPECT_NE(), except it causes an assertion 1533 * failure (see KUNIT_ASSERT_TRUE()) when the assertion is not met. 1534 */ 1535 #define KUNIT_ASSERT_NE(test, left, right) \ 1536 KUNIT_BINARY_NE_ASSERTION(test, KUNIT_ASSERTION, left, right) 1537 1538 #define KUNIT_ASSERT_NE_MSG(test, left, right, fmt, ...) \ 1539 KUNIT_BINARY_NE_MSG_ASSERTION(test, \ 1540 KUNIT_ASSERTION, \ 1541 left, \ 1542 right, \ 1543 fmt, \ 1544 ##__VA_ARGS__) 1545 1546 /** 1547 * KUNIT_ASSERT_PTR_NE() - Asserts that pointers @left and @right are not equal. 1548 * KUNIT_ASSERT_PTR_EQ() - Asserts that pointers @left and @right are equal. 1549 * @test: The test context object. 1550 * @left: an arbitrary expression that evaluates to a pointer. 1551 * @right: an arbitrary expression that evaluates to a pointer. 1552 * 1553 * Sets an assertion that the values that @left and @right evaluate to are not 1554 * equal. This is the same as KUNIT_EXPECT_NE(), except it causes an assertion 1555 * failure (see KUNIT_ASSERT_TRUE()) when the assertion is not met. 1556 */ 1557 #define KUNIT_ASSERT_PTR_NE(test, left, right) \ 1558 KUNIT_BINARY_PTR_NE_ASSERTION(test, KUNIT_ASSERTION, left, right) 1559 1560 #define KUNIT_ASSERT_PTR_NE_MSG(test, left, right, fmt, ...) \ 1561 KUNIT_BINARY_PTR_NE_MSG_ASSERTION(test, \ 1562 KUNIT_ASSERTION, \ 1563 left, \ 1564 right, \ 1565 fmt, \ 1566 ##__VA_ARGS__) 1567 /** 1568 * KUNIT_ASSERT_LT() - An assertion that @left is less than @right. 1569 * @test: The test context object. 1570 * @left: an arbitrary expression that evaluates to a primitive C type. 1571 * @right: an arbitrary expression that evaluates to a primitive C type. 1572 * 1573 * Sets an assertion that the value that @left evaluates to is less than the 1574 * value that @right evaluates to. This is the same as KUNIT_EXPECT_LT(), except 1575 * it causes an assertion failure (see KUNIT_ASSERT_TRUE()) when the assertion 1576 * is not met. 1577 */ 1578 #define KUNIT_ASSERT_LT(test, left, right) \ 1579 KUNIT_BINARY_LT_ASSERTION(test, KUNIT_ASSERTION, left, right) 1580 1581 #define KUNIT_ASSERT_LT_MSG(test, left, right, fmt, ...) \ 1582 KUNIT_BINARY_LT_MSG_ASSERTION(test, \ 1583 KUNIT_ASSERTION, \ 1584 left, \ 1585 right, \ 1586 fmt, \ 1587 ##__VA_ARGS__) 1588 /** 1589 * KUNIT_ASSERT_LE() - An assertion that @left is less than or equal to @right. 1590 * @test: The test context object. 1591 * @left: an arbitrary expression that evaluates to a primitive C type. 1592 * @right: an arbitrary expression that evaluates to a primitive C type. 1593 * 1594 * Sets an assertion that the value that @left evaluates to is less than or 1595 * equal to the value that @right evaluates to. This is the same as 1596 * KUNIT_EXPECT_LE(), except it causes an assertion failure (see 1597 * KUNIT_ASSERT_TRUE()) when the assertion is not met. 1598 */ 1599 #define KUNIT_ASSERT_LE(test, left, right) \ 1600 KUNIT_BINARY_LE_ASSERTION(test, KUNIT_ASSERTION, left, right) 1601 1602 #define KUNIT_ASSERT_LE_MSG(test, left, right, fmt, ...) \ 1603 KUNIT_BINARY_LE_MSG_ASSERTION(test, \ 1604 KUNIT_ASSERTION, \ 1605 left, \ 1606 right, \ 1607 fmt, \ 1608 ##__VA_ARGS__) 1609 1610 /** 1611 * KUNIT_ASSERT_GT() - An assertion that @left is greater than @right. 1612 * @test: The test context object. 1613 * @left: an arbitrary expression that evaluates to a primitive C type. 1614 * @right: an arbitrary expression that evaluates to a primitive C type. 1615 * 1616 * Sets an assertion that the value that @left evaluates to is greater than the 1617 * value that @right evaluates to. This is the same as KUNIT_EXPECT_GT(), except 1618 * it causes an assertion failure (see KUNIT_ASSERT_TRUE()) when the assertion 1619 * is not met. 1620 */ 1621 #define KUNIT_ASSERT_GT(test, left, right) \ 1622 KUNIT_BINARY_GT_ASSERTION(test, KUNIT_ASSERTION, left, right) 1623 1624 #define KUNIT_ASSERT_GT_MSG(test, left, right, fmt, ...) \ 1625 KUNIT_BINARY_GT_MSG_ASSERTION(test, \ 1626 KUNIT_ASSERTION, \ 1627 left, \ 1628 right, \ 1629 fmt, \ 1630 ##__VA_ARGS__) 1631 1632 /** 1633 * KUNIT_ASSERT_GE() - Assertion that @left is greater than or equal to @right. 1634 * @test: The test context object. 1635 * @left: an arbitrary expression that evaluates to a primitive C type. 1636 * @right: an arbitrary expression that evaluates to a primitive C type. 1637 * 1638 * Sets an assertion that the value that @left evaluates to is greater than the 1639 * value that @right evaluates to. This is the same as KUNIT_EXPECT_GE(), except 1640 * it causes an assertion failure (see KUNIT_ASSERT_TRUE()) when the assertion 1641 * is not met. 1642 */ 1643 #define KUNIT_ASSERT_GE(test, left, right) \ 1644 KUNIT_BINARY_GE_ASSERTION(test, KUNIT_ASSERTION, left, right) 1645 1646 #define KUNIT_ASSERT_GE_MSG(test, left, right, fmt, ...) \ 1647 KUNIT_BINARY_GE_MSG_ASSERTION(test, \ 1648 KUNIT_ASSERTION, \ 1649 left, \ 1650 right, \ 1651 fmt, \ 1652 ##__VA_ARGS__) 1653 1654 /** 1655 * KUNIT_ASSERT_STREQ() - An assertion that strings @left and @right are equal. 1656 * @test: The test context object. 1657 * @left: an arbitrary expression that evaluates to a null terminated string. 1658 * @right: an arbitrary expression that evaluates to a null terminated string. 1659 * 1660 * Sets an assertion that the values that @left and @right evaluate to are 1661 * equal. This is the same as KUNIT_EXPECT_STREQ(), except it causes an 1662 * assertion failure (see KUNIT_ASSERT_TRUE()) when the assertion is not met. 1663 */ 1664 #define KUNIT_ASSERT_STREQ(test, left, right) \ 1665 KUNIT_BINARY_STR_EQ_ASSERTION(test, KUNIT_ASSERTION, left, right) 1666 1667 #define KUNIT_ASSERT_STREQ_MSG(test, left, right, fmt, ...) \ 1668 KUNIT_BINARY_STR_EQ_MSG_ASSERTION(test, \ 1669 KUNIT_ASSERTION, \ 1670 left, \ 1671 right, \ 1672 fmt, \ 1673 ##__VA_ARGS__) 1674 1675 /** 1676 * KUNIT_ASSERT_STRNEQ() - Expects that strings @left and @right are not equal. 1677 * @test: The test context object. 1678 * @left: an arbitrary expression that evaluates to a null terminated string. 1679 * @right: an arbitrary expression that evaluates to a null terminated string. 1680 * 1681 * Sets an expectation that the values that @left and @right evaluate to are 1682 * not equal. This is semantically equivalent to 1683 * KUNIT_ASSERT_TRUE(@test, strcmp((@left), (@right))). See KUNIT_ASSERT_TRUE() 1684 * for more information. 1685 */ 1686 #define KUNIT_ASSERT_STRNEQ(test, left, right) \ 1687 KUNIT_BINARY_STR_NE_ASSERTION(test, KUNIT_ASSERTION, left, right) 1688 1689 #define KUNIT_ASSERT_STRNEQ_MSG(test, left, right, fmt, ...) \ 1690 KUNIT_BINARY_STR_NE_MSG_ASSERTION(test, \ 1691 KUNIT_ASSERTION, \ 1692 left, \ 1693 right, \ 1694 fmt, \ 1695 ##__VA_ARGS__) 1696 1697 /** 1698 * KUNIT_ASSERT_NOT_ERR_OR_NULL() - Assertion that @ptr is not null and not err. 1699 * @test: The test context object. 1700 * @ptr: an arbitrary pointer. 1701 * 1702 * Sets an assertion that the value that @ptr evaluates to is not null and not 1703 * an errno stored in a pointer. This is the same as 1704 * KUNIT_EXPECT_NOT_ERR_OR_NULL(), except it causes an assertion failure (see 1705 * KUNIT_ASSERT_TRUE()) when the assertion is not met. 1706 */ 1707 #define KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr) \ 1708 KUNIT_PTR_NOT_ERR_OR_NULL_ASSERTION(test, KUNIT_ASSERTION, ptr) 1709 1710 #define KUNIT_ASSERT_NOT_ERR_OR_NULL_MSG(test, ptr, fmt, ...) \ 1711 KUNIT_PTR_NOT_ERR_OR_NULL_MSG_ASSERTION(test, \ 1712 KUNIT_ASSERTION, \ 1713 ptr, \ 1714 fmt, \ 1715 ##__VA_ARGS__) 1716 1717 /** 1718 * kunit_param_generator_helper() - Helper method for test parameter generators 1719 * required in parameterized tests. 1720 * @test: The test context object. 1721 * @prev_param: a pointer to the previous test parameter, NULL for first parameter. 1722 * @param_array: a user-supplied pointer to an array of test parameters. 1723 * @array_size: number of test parameters in the array. 1724 * @type_size: size of one test parameter. 1725 */ 1726 static inline void *kunit_param_generator_helper(struct kunit *test, 1727 void *prev_param, 1728 void *param_array, 1729 size_t array_size, 1730 size_t type_size) 1731 { > 1732 KUNIT_ASSERT_EQ(test, (prev_param - param_array) % type_size, 0); 1733 1734 if (!prev_param) 1735 return param_array; 1736 > 1737 KUNIT_ASSERT_GE(test, prev_param, param_array); 1738 1739 if (prev_param + type_size < param_array + (array_size * type_size)) 1740 return prev_param + type_size; 1741 else 1742 return NULL; 1743 } 1744 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 32031 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com> To: kbuild-all@lists.01.org Subject: Re: [PATCH v2 1/2] kunit: Support for Parameterized Testing Date: Sat, 24 Oct 2020 02:08:40 +0800 [thread overview] Message-ID: <202010240247.JNQ8VRdQ-lkp@intel.com> (raw) In-Reply-To: <20201023150536.282568-1-98.arpi@gmail.com> [-- Attachment #1: Type: text/plain, Size: 42669 bytes --] Hi Arpitha, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on ext4/dev] [also build test WARNING on linus/master v5.9 next-20201023] [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/Arpitha-Raghunandan/kunit-Support-for-Parameterized-Testing/20201023-230827 base: https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev config: x86_64-randconfig-r015-20201023 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 147b9497e79a98a8614b2b5eb4ba653b44f6b6f0) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # https://github.com/0day-ci/linux/commit/2c09a7974ce3b438845bfafb539513dc91c021b4 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Arpitha-Raghunandan/kunit-Support-for-Parameterized-Testing/20201023-230827 git checkout 2c09a7974ce3b438845bfafb539513dc91c021b4 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 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 >>): In file included from lib/kunit/test.c:9: >> include/kunit/test.h:1732:2: warning: comparison of distinct pointer types ('typeof (__left) *' (aka 'unsigned long *') and 'typeof (__right) *' (aka 'int *')) [-Wcompare-distinct-pointer-types] KUNIT_ASSERT_EQ(test, (prev_param - param_array) % type_size, 0); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1494:2: note: expanded from macro 'KUNIT_ASSERT_EQ' KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_ASSERTION, left, right) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:843:2: note: expanded from macro 'KUNIT_BINARY_EQ_ASSERTION' KUNIT_BINARY_EQ_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:833:2: note: expanded from macro 'KUNIT_BINARY_EQ_MSG_ASSERTION' KUNIT_BASE_EQ_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:744:2: note: expanded from macro 'KUNIT_BASE_EQ_MSG_ASSERTION' KUNIT_BASE_BINARY_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:720:9: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION' ((void)__typecheck(__left, __right)); \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kernel.h:850:29: note: expanded from macro '__typecheck' (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1))) ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~ In file included from lib/kunit/test.c:9: >> include/kunit/test.h:1737:2: warning: incompatible pointer to integer conversion initializing 'long long' with an expression of type 'typeof (prev_param)' (aka 'void *') [-Wint-conversion] KUNIT_ASSERT_GE(test, prev_param, param_array); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1644:2: note: expanded from macro 'KUNIT_ASSERT_GE' KUNIT_BINARY_GE_ASSERTION(test, KUNIT_ASSERTION, left, right) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1038:2: note: expanded from macro 'KUNIT_BINARY_GE_ASSERTION' KUNIT_BINARY_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1028:2: note: expanded from macro 'KUNIT_BINARY_GE_MSG_ASSERTION' KUNIT_BASE_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/kunit/test.h:729:8: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION' __left, \ ^~~~~~ include/kunit/assert.h:238:16: note: expanded from macro 'KUNIT_INIT_BINARY_ASSERT_STRUCT' .left_value = left_val, \ ^~~~~~~~ include/kunit/test.h:622:36: note: expanded from macro 'KUNIT_ASSERTION' struct assert_class __assertion = INITIALIZER; \ ^~~~~~~~~~~ >> include/kunit/test.h:1737:2: warning: incompatible pointer to integer conversion initializing 'long long' with an expression of type 'typeof (param_array)' (aka 'void *') [-Wint-conversion] KUNIT_ASSERT_GE(test, prev_param, param_array); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1644:2: note: expanded from macro 'KUNIT_ASSERT_GE' KUNIT_BINARY_GE_ASSERTION(test, KUNIT_ASSERTION, left, right) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1038:2: note: expanded from macro 'KUNIT_BINARY_GE_ASSERTION' KUNIT_BINARY_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1028:2: note: expanded from macro 'KUNIT_BINARY_GE_MSG_ASSERTION' KUNIT_BASE_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/kunit/test.h:731:8: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION' __right), \ ^~~~~~~ include/kunit/assert.h:240:17: note: expanded from macro 'KUNIT_INIT_BINARY_ASSERT_STRUCT' .right_value = right_val \ ^~~~~~~~~ include/kunit/test.h:622:36: note: expanded from macro 'KUNIT_ASSERTION' struct assert_class __assertion = INITIALIZER; \ ^~~~~~~~~~~ 3 warnings generated. -- In file included from lib/kunit/debugfs.c:10: >> include/kunit/test.h:1732:2: warning: comparison of distinct pointer types ('typeof (__left) *' (aka 'unsigned long *') and 'typeof (__right) *' (aka 'int *')) [-Wcompare-distinct-pointer-types] KUNIT_ASSERT_EQ(test, (prev_param - param_array) % type_size, 0); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1494:2: note: expanded from macro 'KUNIT_ASSERT_EQ' KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_ASSERTION, left, right) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:843:2: note: expanded from macro 'KUNIT_BINARY_EQ_ASSERTION' KUNIT_BINARY_EQ_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:833:2: note: expanded from macro 'KUNIT_BINARY_EQ_MSG_ASSERTION' KUNIT_BASE_EQ_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:744:2: note: expanded from macro 'KUNIT_BASE_EQ_MSG_ASSERTION' KUNIT_BASE_BINARY_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:720:9: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION' ((void)__typecheck(__left, __right)); \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kernel.h:850:29: note: expanded from macro '__typecheck' (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1))) ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~ In file included from lib/kunit/debugfs.c:10: >> include/kunit/test.h:1737:2: warning: incompatible pointer to integer conversion initializing 'long long' with an expression of type 'typeof (prev_param)' (aka 'void *') [-Wint-conversion] KUNIT_ASSERT_GE(test, prev_param, param_array); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1644:2: note: expanded from macro 'KUNIT_ASSERT_GE' KUNIT_BINARY_GE_ASSERTION(test, KUNIT_ASSERTION, left, right) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1038:2: note: expanded from macro 'KUNIT_BINARY_GE_ASSERTION' KUNIT_BINARY_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1028:2: note: expanded from macro 'KUNIT_BINARY_GE_MSG_ASSERTION' KUNIT_BASE_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/kunit/test.h:729:8: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION' __left, \ ^~~~~~ include/kunit/assert.h:238:16: note: expanded from macro 'KUNIT_INIT_BINARY_ASSERT_STRUCT' .left_value = left_val, \ ^~~~~~~~ include/kunit/test.h:622:36: note: expanded from macro 'KUNIT_ASSERTION' struct assert_class __assertion = INITIALIZER; \ ^~~~~~~~~~~ >> include/kunit/test.h:1737:2: warning: incompatible pointer to integer conversion initializing 'long long' with an expression of type 'typeof (param_array)' (aka 'void *') [-Wint-conversion] KUNIT_ASSERT_GE(test, prev_param, param_array); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1644:2: note: expanded from macro 'KUNIT_ASSERT_GE' KUNIT_BINARY_GE_ASSERTION(test, KUNIT_ASSERTION, left, right) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1038:2: note: expanded from macro 'KUNIT_BINARY_GE_ASSERTION' KUNIT_BINARY_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/kunit/test.h:1028:2: note: expanded from macro 'KUNIT_BINARY_GE_MSG_ASSERTION' KUNIT_BASE_GE_MSG_ASSERTION(test, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/kunit/test.h:731:8: note: expanded from macro 'KUNIT_BASE_BINARY_ASSERTION' __right), \ ^~~~~~~ include/kunit/assert.h:240:17: note: expanded from macro 'KUNIT_INIT_BINARY_ASSERT_STRUCT' .right_value = right_val \ ^~~~~~~~~ include/kunit/test.h:622:36: note: expanded from macro 'KUNIT_ASSERTION' struct assert_class __assertion = INITIALIZER; \ ^~~~~~~~~~~ lib/kunit/debugfs.c:28:6: warning: no previous prototype for function 'kunit_debugfs_cleanup' [-Wmissing-prototypes] void kunit_debugfs_cleanup(void) ^ lib/kunit/debugfs.c:28:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void kunit_debugfs_cleanup(void) ^ static lib/kunit/debugfs.c:33:6: warning: no previous prototype for function 'kunit_debugfs_init' [-Wmissing-prototypes] void kunit_debugfs_init(void) ^ lib/kunit/debugfs.c:33:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void kunit_debugfs_init(void) ^ static lib/kunit/debugfs.c:92:6: warning: no previous prototype for function 'kunit_debugfs_create_suite' [-Wmissing-prototypes] void kunit_debugfs_create_suite(struct kunit_suite *suite) ^ lib/kunit/debugfs.c:92:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void kunit_debugfs_create_suite(struct kunit_suite *suite) ^ static lib/kunit/debugfs.c:108:6: warning: no previous prototype for function 'kunit_debugfs_destroy_suite' [-Wmissing-prototypes] void kunit_debugfs_destroy_suite(struct kunit_suite *suite) ^ lib/kunit/debugfs.c:108:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void kunit_debugfs_destroy_suite(struct kunit_suite *suite) ^ static 7 warnings generated. vim +1732 include/kunit/test.h 1147 1148 #define KUNIT_PTR_NOT_ERR_OR_NULL_ASSERTION(test, assert_type, ptr) \ 1149 KUNIT_PTR_NOT_ERR_OR_NULL_MSG_ASSERTION(test, \ 1150 assert_type, \ 1151 ptr, \ 1152 NULL) 1153 1154 /** 1155 * KUNIT_EXPECT_TRUE() - Causes a test failure when the expression is not true. 1156 * @test: The test context object. 1157 * @condition: an arbitrary boolean expression. The test fails when this does 1158 * not evaluate to true. 1159 * 1160 * This and expectations of the form `KUNIT_EXPECT_*` will cause the test case 1161 * to fail when the specified condition is not met; however, it will not prevent 1162 * the test case from continuing to run; this is otherwise known as an 1163 * *expectation failure*. 1164 */ 1165 #define KUNIT_EXPECT_TRUE(test, condition) \ 1166 KUNIT_TRUE_ASSERTION(test, KUNIT_EXPECTATION, condition) 1167 1168 #define KUNIT_EXPECT_TRUE_MSG(test, condition, fmt, ...) \ 1169 KUNIT_TRUE_MSG_ASSERTION(test, \ 1170 KUNIT_EXPECTATION, \ 1171 condition, \ 1172 fmt, \ 1173 ##__VA_ARGS__) 1174 1175 /** 1176 * KUNIT_EXPECT_FALSE() - Makes a test failure when the expression is not false. 1177 * @test: The test context object. 1178 * @condition: an arbitrary boolean expression. The test fails when this does 1179 * not evaluate to false. 1180 * 1181 * Sets an expectation that @condition evaluates to false. See 1182 * KUNIT_EXPECT_TRUE() for more information. 1183 */ 1184 #define KUNIT_EXPECT_FALSE(test, condition) \ 1185 KUNIT_FALSE_ASSERTION(test, KUNIT_EXPECTATION, condition) 1186 1187 #define KUNIT_EXPECT_FALSE_MSG(test, condition, fmt, ...) \ 1188 KUNIT_FALSE_MSG_ASSERTION(test, \ 1189 KUNIT_EXPECTATION, \ 1190 condition, \ 1191 fmt, \ 1192 ##__VA_ARGS__) 1193 1194 /** 1195 * KUNIT_EXPECT_EQ() - Sets an expectation that @left and @right are equal. 1196 * @test: The test context object. 1197 * @left: an arbitrary expression that evaluates to a primitive C type. 1198 * @right: an arbitrary expression that evaluates to a primitive C type. 1199 * 1200 * Sets an expectation that the values that @left and @right evaluate to are 1201 * equal. This is semantically equivalent to 1202 * KUNIT_EXPECT_TRUE(@test, (@left) == (@right)). See KUNIT_EXPECT_TRUE() for 1203 * more information. 1204 */ 1205 #define KUNIT_EXPECT_EQ(test, left, right) \ 1206 KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1207 1208 #define KUNIT_EXPECT_EQ_MSG(test, left, right, fmt, ...) \ 1209 KUNIT_BINARY_EQ_MSG_ASSERTION(test, \ 1210 KUNIT_EXPECTATION, \ 1211 left, \ 1212 right, \ 1213 fmt, \ 1214 ##__VA_ARGS__) 1215 1216 /** 1217 * KUNIT_EXPECT_PTR_EQ() - Expects that pointers @left and @right are equal. 1218 * @test: The test context object. 1219 * @left: an arbitrary expression that evaluates to a pointer. 1220 * @right: an arbitrary expression that evaluates to a pointer. 1221 * 1222 * Sets an expectation that the values that @left and @right evaluate to are 1223 * equal. This is semantically equivalent to 1224 * KUNIT_EXPECT_TRUE(@test, (@left) == (@right)). See KUNIT_EXPECT_TRUE() for 1225 * more information. 1226 */ 1227 #define KUNIT_EXPECT_PTR_EQ(test, left, right) \ 1228 KUNIT_BINARY_PTR_EQ_ASSERTION(test, \ 1229 KUNIT_EXPECTATION, \ 1230 left, \ 1231 right) 1232 1233 #define KUNIT_EXPECT_PTR_EQ_MSG(test, left, right, fmt, ...) \ 1234 KUNIT_BINARY_PTR_EQ_MSG_ASSERTION(test, \ 1235 KUNIT_EXPECTATION, \ 1236 left, \ 1237 right, \ 1238 fmt, \ 1239 ##__VA_ARGS__) 1240 1241 /** 1242 * KUNIT_EXPECT_NE() - An expectation that @left and @right are not equal. 1243 * @test: The test context object. 1244 * @left: an arbitrary expression that evaluates to a primitive C type. 1245 * @right: an arbitrary expression that evaluates to a primitive C type. 1246 * 1247 * Sets an expectation that the values that @left and @right evaluate to are not 1248 * equal. This is semantically equivalent to 1249 * KUNIT_EXPECT_TRUE(@test, (@left) != (@right)). See KUNIT_EXPECT_TRUE() for 1250 * more information. 1251 */ 1252 #define KUNIT_EXPECT_NE(test, left, right) \ 1253 KUNIT_BINARY_NE_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1254 1255 #define KUNIT_EXPECT_NE_MSG(test, left, right, fmt, ...) \ 1256 KUNIT_BINARY_NE_MSG_ASSERTION(test, \ 1257 KUNIT_EXPECTATION, \ 1258 left, \ 1259 right, \ 1260 fmt, \ 1261 ##__VA_ARGS__) 1262 1263 /** 1264 * KUNIT_EXPECT_PTR_NE() - Expects that pointers @left and @right are not equal. 1265 * @test: The test context object. 1266 * @left: an arbitrary expression that evaluates to a pointer. 1267 * @right: an arbitrary expression that evaluates to a pointer. 1268 * 1269 * Sets an expectation that the values that @left and @right evaluate to are not 1270 * equal. This is semantically equivalent to 1271 * KUNIT_EXPECT_TRUE(@test, (@left) != (@right)). See KUNIT_EXPECT_TRUE() for 1272 * more information. 1273 */ 1274 #define KUNIT_EXPECT_PTR_NE(test, left, right) \ 1275 KUNIT_BINARY_PTR_NE_ASSERTION(test, \ 1276 KUNIT_EXPECTATION, \ 1277 left, \ 1278 right) 1279 1280 #define KUNIT_EXPECT_PTR_NE_MSG(test, left, right, fmt, ...) \ 1281 KUNIT_BINARY_PTR_NE_MSG_ASSERTION(test, \ 1282 KUNIT_EXPECTATION, \ 1283 left, \ 1284 right, \ 1285 fmt, \ 1286 ##__VA_ARGS__) 1287 1288 /** 1289 * KUNIT_EXPECT_LT() - An expectation that @left is less than @right. 1290 * @test: The test context object. 1291 * @left: an arbitrary expression that evaluates to a primitive C type. 1292 * @right: an arbitrary expression that evaluates to a primitive C type. 1293 * 1294 * Sets an expectation that the value that @left evaluates to is less than the 1295 * value that @right evaluates to. This is semantically equivalent to 1296 * KUNIT_EXPECT_TRUE(@test, (@left) < (@right)). See KUNIT_EXPECT_TRUE() for 1297 * more information. 1298 */ 1299 #define KUNIT_EXPECT_LT(test, left, right) \ 1300 KUNIT_BINARY_LT_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1301 1302 #define KUNIT_EXPECT_LT_MSG(test, left, right, fmt, ...) \ 1303 KUNIT_BINARY_LT_MSG_ASSERTION(test, \ 1304 KUNIT_EXPECTATION, \ 1305 left, \ 1306 right, \ 1307 fmt, \ 1308 ##__VA_ARGS__) 1309 1310 /** 1311 * KUNIT_EXPECT_LE() - Expects that @left is less than or equal to @right. 1312 * @test: The test context object. 1313 * @left: an arbitrary expression that evaluates to a primitive C type. 1314 * @right: an arbitrary expression that evaluates to a primitive C type. 1315 * 1316 * Sets an expectation that the value that @left evaluates to is less than or 1317 * equal to the value that @right evaluates to. Semantically this is equivalent 1318 * to KUNIT_EXPECT_TRUE(@test, (@left) <= (@right)). See KUNIT_EXPECT_TRUE() for 1319 * more information. 1320 */ 1321 #define KUNIT_EXPECT_LE(test, left, right) \ 1322 KUNIT_BINARY_LE_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1323 1324 #define KUNIT_EXPECT_LE_MSG(test, left, right, fmt, ...) \ 1325 KUNIT_BINARY_LE_MSG_ASSERTION(test, \ 1326 KUNIT_EXPECTATION, \ 1327 left, \ 1328 right, \ 1329 fmt, \ 1330 ##__VA_ARGS__) 1331 1332 /** 1333 * KUNIT_EXPECT_GT() - An expectation that @left is greater than @right. 1334 * @test: The test context object. 1335 * @left: an arbitrary expression that evaluates to a primitive C type. 1336 * @right: an arbitrary expression that evaluates to a primitive C type. 1337 * 1338 * Sets an expectation that the value that @left evaluates to is greater than 1339 * the value that @right evaluates to. This is semantically equivalent to 1340 * KUNIT_EXPECT_TRUE(@test, (@left) > (@right)). See KUNIT_EXPECT_TRUE() for 1341 * more information. 1342 */ 1343 #define KUNIT_EXPECT_GT(test, left, right) \ 1344 KUNIT_BINARY_GT_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1345 1346 #define KUNIT_EXPECT_GT_MSG(test, left, right, fmt, ...) \ 1347 KUNIT_BINARY_GT_MSG_ASSERTION(test, \ 1348 KUNIT_EXPECTATION, \ 1349 left, \ 1350 right, \ 1351 fmt, \ 1352 ##__VA_ARGS__) 1353 1354 /** 1355 * KUNIT_EXPECT_GE() - Expects that @left is greater than or equal to @right. 1356 * @test: The test context object. 1357 * @left: an arbitrary expression that evaluates to a primitive C type. 1358 * @right: an arbitrary expression that evaluates to a primitive C type. 1359 * 1360 * Sets an expectation that the value that @left evaluates to is greater than 1361 * the value that @right evaluates to. This is semantically equivalent to 1362 * KUNIT_EXPECT_TRUE(@test, (@left) >= (@right)). See KUNIT_EXPECT_TRUE() for 1363 * more information. 1364 */ 1365 #define KUNIT_EXPECT_GE(test, left, right) \ 1366 KUNIT_BINARY_GE_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1367 1368 #define KUNIT_EXPECT_GE_MSG(test, left, right, fmt, ...) \ 1369 KUNIT_BINARY_GE_MSG_ASSERTION(test, \ 1370 KUNIT_EXPECTATION, \ 1371 left, \ 1372 right, \ 1373 fmt, \ 1374 ##__VA_ARGS__) 1375 1376 /** 1377 * KUNIT_EXPECT_STREQ() - Expects that strings @left and @right are equal. 1378 * @test: The test context object. 1379 * @left: an arbitrary expression that evaluates to a null terminated string. 1380 * @right: an arbitrary expression that evaluates to a null terminated string. 1381 * 1382 * Sets an expectation that the values that @left and @right evaluate to are 1383 * equal. This is semantically equivalent to 1384 * KUNIT_EXPECT_TRUE(@test, !strcmp((@left), (@right))). See KUNIT_EXPECT_TRUE() 1385 * for more information. 1386 */ 1387 #define KUNIT_EXPECT_STREQ(test, left, right) \ 1388 KUNIT_BINARY_STR_EQ_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1389 1390 #define KUNIT_EXPECT_STREQ_MSG(test, left, right, fmt, ...) \ 1391 KUNIT_BINARY_STR_EQ_MSG_ASSERTION(test, \ 1392 KUNIT_EXPECTATION, \ 1393 left, \ 1394 right, \ 1395 fmt, \ 1396 ##__VA_ARGS__) 1397 1398 /** 1399 * KUNIT_EXPECT_STRNEQ() - Expects that strings @left and @right are not equal. 1400 * @test: The test context object. 1401 * @left: an arbitrary expression that evaluates to a null terminated string. 1402 * @right: an arbitrary expression that evaluates to a null terminated string. 1403 * 1404 * Sets an expectation that the values that @left and @right evaluate to are 1405 * not equal. This is semantically equivalent to 1406 * KUNIT_EXPECT_TRUE(@test, strcmp((@left), (@right))). See KUNIT_EXPECT_TRUE() 1407 * for more information. 1408 */ 1409 #define KUNIT_EXPECT_STRNEQ(test, left, right) \ 1410 KUNIT_BINARY_STR_NE_ASSERTION(test, KUNIT_EXPECTATION, left, right) 1411 1412 #define KUNIT_EXPECT_STRNEQ_MSG(test, left, right, fmt, ...) \ 1413 KUNIT_BINARY_STR_NE_MSG_ASSERTION(test, \ 1414 KUNIT_EXPECTATION, \ 1415 left, \ 1416 right, \ 1417 fmt, \ 1418 ##__VA_ARGS__) 1419 1420 /** 1421 * KUNIT_EXPECT_NOT_ERR_OR_NULL() - Expects that @ptr is not null and not err. 1422 * @test: The test context object. 1423 * @ptr: an arbitrary pointer. 1424 * 1425 * Sets an expectation that the value that @ptr evaluates to is not null and not 1426 * an errno stored in a pointer. This is semantically equivalent to 1427 * KUNIT_EXPECT_TRUE(@test, !IS_ERR_OR_NULL(@ptr)). See KUNIT_EXPECT_TRUE() for 1428 * more information. 1429 */ 1430 #define KUNIT_EXPECT_NOT_ERR_OR_NULL(test, ptr) \ 1431 KUNIT_PTR_NOT_ERR_OR_NULL_ASSERTION(test, KUNIT_EXPECTATION, ptr) 1432 1433 #define KUNIT_EXPECT_NOT_ERR_OR_NULL_MSG(test, ptr, fmt, ...) \ 1434 KUNIT_PTR_NOT_ERR_OR_NULL_MSG_ASSERTION(test, \ 1435 KUNIT_EXPECTATION, \ 1436 ptr, \ 1437 fmt, \ 1438 ##__VA_ARGS__) 1439 1440 #define KUNIT_ASSERT_FAILURE(test, fmt, ...) \ 1441 KUNIT_FAIL_ASSERTION(test, KUNIT_ASSERTION, fmt, ##__VA_ARGS__) 1442 1443 /** 1444 * KUNIT_ASSERT_TRUE() - Sets an assertion that @condition is true. 1445 * @test: The test context object. 1446 * @condition: an arbitrary boolean expression. The test fails and aborts when 1447 * this does not evaluate to true. 1448 * 1449 * This and assertions of the form `KUNIT_ASSERT_*` will cause the test case to 1450 * fail *and immediately abort* when the specified condition is not met. Unlike 1451 * an expectation failure, it will prevent the test case from continuing to run; 1452 * this is otherwise known as an *assertion failure*. 1453 */ 1454 #define KUNIT_ASSERT_TRUE(test, condition) \ 1455 KUNIT_TRUE_ASSERTION(test, KUNIT_ASSERTION, condition) 1456 1457 #define KUNIT_ASSERT_TRUE_MSG(test, condition, fmt, ...) \ 1458 KUNIT_TRUE_MSG_ASSERTION(test, \ 1459 KUNIT_ASSERTION, \ 1460 condition, \ 1461 fmt, \ 1462 ##__VA_ARGS__) 1463 1464 /** 1465 * KUNIT_ASSERT_FALSE() - Sets an assertion that @condition is false. 1466 * @test: The test context object. 1467 * @condition: an arbitrary boolean expression. 1468 * 1469 * Sets an assertion that the value that @condition evaluates to is false. This 1470 * is the same as KUNIT_EXPECT_FALSE(), except it causes an assertion failure 1471 * (see KUNIT_ASSERT_TRUE()) when the assertion is not met. 1472 */ 1473 #define KUNIT_ASSERT_FALSE(test, condition) \ 1474 KUNIT_FALSE_ASSERTION(test, KUNIT_ASSERTION, condition) 1475 1476 #define KUNIT_ASSERT_FALSE_MSG(test, condition, fmt, ...) \ 1477 KUNIT_FALSE_MSG_ASSERTION(test, \ 1478 KUNIT_ASSERTION, \ 1479 condition, \ 1480 fmt, \ 1481 ##__VA_ARGS__) 1482 1483 /** 1484 * KUNIT_ASSERT_EQ() - Sets an assertion that @left and @right are equal. 1485 * @test: The test context object. 1486 * @left: an arbitrary expression that evaluates to a primitive C type. 1487 * @right: an arbitrary expression that evaluates to a primitive C type. 1488 * 1489 * Sets an assertion that the values that @left and @right evaluate to are 1490 * equal. This is the same as KUNIT_EXPECT_EQ(), except it causes an assertion 1491 * failure (see KUNIT_ASSERT_TRUE()) when the assertion is not met. 1492 */ 1493 #define KUNIT_ASSERT_EQ(test, left, right) \ 1494 KUNIT_BINARY_EQ_ASSERTION(test, KUNIT_ASSERTION, left, right) 1495 1496 #define KUNIT_ASSERT_EQ_MSG(test, left, right, fmt, ...) \ 1497 KUNIT_BINARY_EQ_MSG_ASSERTION(test, \ 1498 KUNIT_ASSERTION, \ 1499 left, \ 1500 right, \ 1501 fmt, \ 1502 ##__VA_ARGS__) 1503 1504 /** 1505 * KUNIT_ASSERT_PTR_EQ() - Asserts that pointers @left and @right are equal. 1506 * @test: The test context object. 1507 * @left: an arbitrary expression that evaluates to a pointer. 1508 * @right: an arbitrary expression that evaluates to a pointer. 1509 * 1510 * Sets an assertion that the values that @left and @right evaluate to are 1511 * equal. This is the same as KUNIT_EXPECT_EQ(), except it causes an assertion 1512 * failure (see KUNIT_ASSERT_TRUE()) when the assertion is not met. 1513 */ 1514 #define KUNIT_ASSERT_PTR_EQ(test, left, right) \ 1515 KUNIT_BINARY_PTR_EQ_ASSERTION(test, KUNIT_ASSERTION, left, right) 1516 1517 #define KUNIT_ASSERT_PTR_EQ_MSG(test, left, right, fmt, ...) \ 1518 KUNIT_BINARY_PTR_EQ_MSG_ASSERTION(test, \ 1519 KUNIT_ASSERTION, \ 1520 left, \ 1521 right, \ 1522 fmt, \ 1523 ##__VA_ARGS__) 1524 1525 /** 1526 * KUNIT_ASSERT_NE() - An assertion that @left and @right are not equal. 1527 * @test: The test context object. 1528 * @left: an arbitrary expression that evaluates to a primitive C type. 1529 * @right: an arbitrary expression that evaluates to a primitive C type. 1530 * 1531 * Sets an assertion that the values that @left and @right evaluate to are not 1532 * equal. This is the same as KUNIT_EXPECT_NE(), except it causes an assertion 1533 * failure (see KUNIT_ASSERT_TRUE()) when the assertion is not met. 1534 */ 1535 #define KUNIT_ASSERT_NE(test, left, right) \ 1536 KUNIT_BINARY_NE_ASSERTION(test, KUNIT_ASSERTION, left, right) 1537 1538 #define KUNIT_ASSERT_NE_MSG(test, left, right, fmt, ...) \ 1539 KUNIT_BINARY_NE_MSG_ASSERTION(test, \ 1540 KUNIT_ASSERTION, \ 1541 left, \ 1542 right, \ 1543 fmt, \ 1544 ##__VA_ARGS__) 1545 1546 /** 1547 * KUNIT_ASSERT_PTR_NE() - Asserts that pointers @left and @right are not equal. 1548 * KUNIT_ASSERT_PTR_EQ() - Asserts that pointers @left and @right are equal. 1549 * @test: The test context object. 1550 * @left: an arbitrary expression that evaluates to a pointer. 1551 * @right: an arbitrary expression that evaluates to a pointer. 1552 * 1553 * Sets an assertion that the values that @left and @right evaluate to are not 1554 * equal. This is the same as KUNIT_EXPECT_NE(), except it causes an assertion 1555 * failure (see KUNIT_ASSERT_TRUE()) when the assertion is not met. 1556 */ 1557 #define KUNIT_ASSERT_PTR_NE(test, left, right) \ 1558 KUNIT_BINARY_PTR_NE_ASSERTION(test, KUNIT_ASSERTION, left, right) 1559 1560 #define KUNIT_ASSERT_PTR_NE_MSG(test, left, right, fmt, ...) \ 1561 KUNIT_BINARY_PTR_NE_MSG_ASSERTION(test, \ 1562 KUNIT_ASSERTION, \ 1563 left, \ 1564 right, \ 1565 fmt, \ 1566 ##__VA_ARGS__) 1567 /** 1568 * KUNIT_ASSERT_LT() - An assertion that @left is less than @right. 1569 * @test: The test context object. 1570 * @left: an arbitrary expression that evaluates to a primitive C type. 1571 * @right: an arbitrary expression that evaluates to a primitive C type. 1572 * 1573 * Sets an assertion that the value that @left evaluates to is less than the 1574 * value that @right evaluates to. This is the same as KUNIT_EXPECT_LT(), except 1575 * it causes an assertion failure (see KUNIT_ASSERT_TRUE()) when the assertion 1576 * is not met. 1577 */ 1578 #define KUNIT_ASSERT_LT(test, left, right) \ 1579 KUNIT_BINARY_LT_ASSERTION(test, KUNIT_ASSERTION, left, right) 1580 1581 #define KUNIT_ASSERT_LT_MSG(test, left, right, fmt, ...) \ 1582 KUNIT_BINARY_LT_MSG_ASSERTION(test, \ 1583 KUNIT_ASSERTION, \ 1584 left, \ 1585 right, \ 1586 fmt, \ 1587 ##__VA_ARGS__) 1588 /** 1589 * KUNIT_ASSERT_LE() - An assertion that @left is less than or equal to @right. 1590 * @test: The test context object. 1591 * @left: an arbitrary expression that evaluates to a primitive C type. 1592 * @right: an arbitrary expression that evaluates to a primitive C type. 1593 * 1594 * Sets an assertion that the value that @left evaluates to is less than or 1595 * equal to the value that @right evaluates to. This is the same as 1596 * KUNIT_EXPECT_LE(), except it causes an assertion failure (see 1597 * KUNIT_ASSERT_TRUE()) when the assertion is not met. 1598 */ 1599 #define KUNIT_ASSERT_LE(test, left, right) \ 1600 KUNIT_BINARY_LE_ASSERTION(test, KUNIT_ASSERTION, left, right) 1601 1602 #define KUNIT_ASSERT_LE_MSG(test, left, right, fmt, ...) \ 1603 KUNIT_BINARY_LE_MSG_ASSERTION(test, \ 1604 KUNIT_ASSERTION, \ 1605 left, \ 1606 right, \ 1607 fmt, \ 1608 ##__VA_ARGS__) 1609 1610 /** 1611 * KUNIT_ASSERT_GT() - An assertion that @left is greater than @right. 1612 * @test: The test context object. 1613 * @left: an arbitrary expression that evaluates to a primitive C type. 1614 * @right: an arbitrary expression that evaluates to a primitive C type. 1615 * 1616 * Sets an assertion that the value that @left evaluates to is greater than the 1617 * value that @right evaluates to. This is the same as KUNIT_EXPECT_GT(), except 1618 * it causes an assertion failure (see KUNIT_ASSERT_TRUE()) when the assertion 1619 * is not met. 1620 */ 1621 #define KUNIT_ASSERT_GT(test, left, right) \ 1622 KUNIT_BINARY_GT_ASSERTION(test, KUNIT_ASSERTION, left, right) 1623 1624 #define KUNIT_ASSERT_GT_MSG(test, left, right, fmt, ...) \ 1625 KUNIT_BINARY_GT_MSG_ASSERTION(test, \ 1626 KUNIT_ASSERTION, \ 1627 left, \ 1628 right, \ 1629 fmt, \ 1630 ##__VA_ARGS__) 1631 1632 /** 1633 * KUNIT_ASSERT_GE() - Assertion that @left is greater than or equal to @right. 1634 * @test: The test context object. 1635 * @left: an arbitrary expression that evaluates to a primitive C type. 1636 * @right: an arbitrary expression that evaluates to a primitive C type. 1637 * 1638 * Sets an assertion that the value that @left evaluates to is greater than the 1639 * value that @right evaluates to. This is the same as KUNIT_EXPECT_GE(), except 1640 * it causes an assertion failure (see KUNIT_ASSERT_TRUE()) when the assertion 1641 * is not met. 1642 */ 1643 #define KUNIT_ASSERT_GE(test, left, right) \ 1644 KUNIT_BINARY_GE_ASSERTION(test, KUNIT_ASSERTION, left, right) 1645 1646 #define KUNIT_ASSERT_GE_MSG(test, left, right, fmt, ...) \ 1647 KUNIT_BINARY_GE_MSG_ASSERTION(test, \ 1648 KUNIT_ASSERTION, \ 1649 left, \ 1650 right, \ 1651 fmt, \ 1652 ##__VA_ARGS__) 1653 1654 /** 1655 * KUNIT_ASSERT_STREQ() - An assertion that strings @left and @right are equal. 1656 * @test: The test context object. 1657 * @left: an arbitrary expression that evaluates to a null terminated string. 1658 * @right: an arbitrary expression that evaluates to a null terminated string. 1659 * 1660 * Sets an assertion that the values that @left and @right evaluate to are 1661 * equal. This is the same as KUNIT_EXPECT_STREQ(), except it causes an 1662 * assertion failure (see KUNIT_ASSERT_TRUE()) when the assertion is not met. 1663 */ 1664 #define KUNIT_ASSERT_STREQ(test, left, right) \ 1665 KUNIT_BINARY_STR_EQ_ASSERTION(test, KUNIT_ASSERTION, left, right) 1666 1667 #define KUNIT_ASSERT_STREQ_MSG(test, left, right, fmt, ...) \ 1668 KUNIT_BINARY_STR_EQ_MSG_ASSERTION(test, \ 1669 KUNIT_ASSERTION, \ 1670 left, \ 1671 right, \ 1672 fmt, \ 1673 ##__VA_ARGS__) 1674 1675 /** 1676 * KUNIT_ASSERT_STRNEQ() - Expects that strings @left and @right are not equal. 1677 * @test: The test context object. 1678 * @left: an arbitrary expression that evaluates to a null terminated string. 1679 * @right: an arbitrary expression that evaluates to a null terminated string. 1680 * 1681 * Sets an expectation that the values that @left and @right evaluate to are 1682 * not equal. This is semantically equivalent to 1683 * KUNIT_ASSERT_TRUE(@test, strcmp((@left), (@right))). See KUNIT_ASSERT_TRUE() 1684 * for more information. 1685 */ 1686 #define KUNIT_ASSERT_STRNEQ(test, left, right) \ 1687 KUNIT_BINARY_STR_NE_ASSERTION(test, KUNIT_ASSERTION, left, right) 1688 1689 #define KUNIT_ASSERT_STRNEQ_MSG(test, left, right, fmt, ...) \ 1690 KUNIT_BINARY_STR_NE_MSG_ASSERTION(test, \ 1691 KUNIT_ASSERTION, \ 1692 left, \ 1693 right, \ 1694 fmt, \ 1695 ##__VA_ARGS__) 1696 1697 /** 1698 * KUNIT_ASSERT_NOT_ERR_OR_NULL() - Assertion that @ptr is not null and not err. 1699 * @test: The test context object. 1700 * @ptr: an arbitrary pointer. 1701 * 1702 * Sets an assertion that the value that @ptr evaluates to is not null and not 1703 * an errno stored in a pointer. This is the same as 1704 * KUNIT_EXPECT_NOT_ERR_OR_NULL(), except it causes an assertion failure (see 1705 * KUNIT_ASSERT_TRUE()) when the assertion is not met. 1706 */ 1707 #define KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr) \ 1708 KUNIT_PTR_NOT_ERR_OR_NULL_ASSERTION(test, KUNIT_ASSERTION, ptr) 1709 1710 #define KUNIT_ASSERT_NOT_ERR_OR_NULL_MSG(test, ptr, fmt, ...) \ 1711 KUNIT_PTR_NOT_ERR_OR_NULL_MSG_ASSERTION(test, \ 1712 KUNIT_ASSERTION, \ 1713 ptr, \ 1714 fmt, \ 1715 ##__VA_ARGS__) 1716 1717 /** 1718 * kunit_param_generator_helper() - Helper method for test parameter generators 1719 * required in parameterized tests. 1720 * @test: The test context object. 1721 * @prev_param: a pointer to the previous test parameter, NULL for first parameter. 1722 * @param_array: a user-supplied pointer to an array of test parameters. 1723 * @array_size: number of test parameters in the array. 1724 * @type_size: size of one test parameter. 1725 */ 1726 static inline void *kunit_param_generator_helper(struct kunit *test, 1727 void *prev_param, 1728 void *param_array, 1729 size_t array_size, 1730 size_t type_size) 1731 { > 1732 KUNIT_ASSERT_EQ(test, (prev_param - param_array) % type_size, 0); 1733 1734 if (!prev_param) 1735 return param_array; 1736 > 1737 KUNIT_ASSERT_GE(test, prev_param, param_array); 1738 1739 if (prev_param + type_size < param_array + (array_size * type_size)) 1740 return prev_param + type_size; 1741 else 1742 return NULL; 1743 } 1744 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [-- Attachment #2: config.gz --] [-- Type: application/gzip, Size: 32031 bytes --]
next prev parent reply other threads:[~2020-10-23 18:09 UTC|newest] Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-10-23 15:05 [PATCH v2 1/2] kunit: Support for Parameterized Testing Arpitha Raghunandan 2020-10-23 15:05 ` [Linux-kernel-mentees] " Arpitha Raghunandan 2020-10-23 15:06 ` [PATCH v2 2/2] fs: ext4: Modify inode-test.c to use KUnit parameterized testing feature Arpitha Raghunandan 2020-10-23 15:06 ` [Linux-kernel-mentees] " Arpitha Raghunandan 2020-10-23 17:33 ` kernel test robot 2020-10-23 17:33 ` kernel test robot 2020-10-26 18:11 ` Iurii Zaikin 2020-10-26 18:11 ` [Linux-kernel-mentees] " Iurii Zaikin via Linux-kernel-mentees 2020-10-26 18:19 ` Arpitha Raghunandan 2020-10-26 18:19 ` [Linux-kernel-mentees] " Arpitha Raghunandan 2020-10-23 18:08 ` kernel test robot [this message] 2020-10-23 18:08 ` [PATCH v2 1/2] kunit: Support for Parameterized Testing kernel test robot 2020-10-23 18:14 ` kernel test robot 2020-10-23 18:14 ` kernel test robot 2020-10-23 18:48 ` Marco Elver 2020-10-23 18:48 ` [Linux-kernel-mentees] " Marco Elver via Linux-kernel-mentees 2020-10-23 18:56 ` Marco Elver 2020-10-23 18:56 ` [Linux-kernel-mentees] " Marco Elver via Linux-kernel-mentees 2020-10-24 5:23 ` Arpitha Raghunandan 2020-10-24 5:23 ` [Linux-kernel-mentees] " Arpitha Raghunandan
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=202010240247.JNQ8VRdQ-lkp@intel.com \ --to=lkp@intel.com \ --cc=98.arpi@gmail.com \ --cc=adilger.kernel@dilger.ca \ --cc=brendanhiggins@google.com \ --cc=clang-built-linux@googlegroups.com \ --cc=elver@google.com \ --cc=kbuild-all@lists.01.org \ --cc=kunit-dev@googlegroups.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-kselftest@vger.kernel.org \ --cc=skhan@linuxfoundation.org \ --cc=tytso@mit.edu \ --cc=yzaikin@google.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.