Hi David, On 10/24/19 4:46 PM, David Gow wrote:
Add a KUnit test for the kernel doubly linked list implementation in include/linux/list.h Each test case (list_test_x) is focused on testing the behaviour of the list function/macro 'x'. None of the tests pass invalid lists to these macros, and so should behave identically with DEBUG_LIST enabled and disabled. Note that, at present, it only tests the list_ types (not the singly-linked hlist_), and does not yet test all of the list_for_each_entry* macros (and some related things like list_prepare_entry). Signed-off-by: David Gow <davidgow@xxxxxxxxxx> Reviewed-by: Brendan Higgins <brendanhiggins@xxxxxxxxxx> Tested-by: Brendan Higgins <brendanhiggins@xxxxxxxxxx> --- This revision addresses Brendan's comments in https://lore.kernel.org/linux-kselftest/20191023220248.GA55483@xxxxxxxxxx/ Specifically: - Brendan's Reviewed-by/Tested-by being included in the description. - A couple of trailing tabs in Kconfig.debug & list-test.c - Reformatting of previously >80 character lines. Earlier versions of this patchset can be found: v5: https://lore.kernel.org/linux-kselftest/20191022221322.122788-1-davidgow@xxxxxxxxxx/ v4: https://lore.kernel.org/linux-kselftest/20191018215549.65000-1-davidgow@xxxxxxxxxx/ v3: https://lore.kernel.org/linux-kselftest/20191016215707.95317-1-davidgow@xxxxxxxxxx/ v2: https://lore.kernel.org/linux-kselftest/20191010185631.26541-1-davidgow@xxxxxxxxxx/ v1: https://lore.kernel.org/linux-kselftest/20191007213633.92565-1-davidgow@xxxxxxxxxx/
CHECK: Unnecessary parentheses around test_struct.list #699: FILE: lib/list-test.c:510: + KUNIT_EXPECT_PTR_EQ(test, &test_struct, list_entry(&(test_struct.list), CHECK: Alignment should match open parenthesis #700: FILE: lib/list-test.c:511: + KUNIT_EXPECT_PTR_EQ(test, &test_struct, list_entry(&(test_struct.list), + struct list_test_struct, list)); CHECK: Please don't use multiple blank lines #711: FILE: lib/list-test.c:522: + + CHECK: Alignment should match open parenthesis #713: FILE: lib/list-test.c:524: + KUNIT_EXPECT_PTR_EQ(test, &test_struct1, list_first_entry(&list, + struct list_test_struct, list)); CHECK: Please don't use multiple blank lines #724: FILE: lib/list-test.c:535: + + CHECK: Alignment should match open parenthesis #726: FILE: lib/list-test.c:537: + KUNIT_EXPECT_PTR_EQ(test, &test_struct2, list_last_entry(&list, + struct list_test_struct, list)); CHECK: Alignment should match open parenthesis #735: FILE: lib/list-test.c:546: + KUNIT_EXPECT_FALSE(test, list_first_entry_or_null(&list, + struct list_test_struct, list)); CHECK: Alignment should match open parenthesis #741: FILE: lib/list-test.c:552: + KUNIT_EXPECT_PTR_EQ(test, &test_struct1, + list_first_entry_or_null(&list, CHECK: Alignment should match open parenthesis #742: FILE: lib/list-test.c:553: + list_first_entry_or_null(&list, + struct list_test_struct, list)); CHECK: Please don't use multiple blank lines #753: FILE: lib/list-test.c:564: + + CHECK: Alignment should match open parenthesis #755: FILE: lib/list-test.c:566: + KUNIT_EXPECT_PTR_EQ(test, &test_struct2, list_next_entry(&test_struct1, + list)); CHECK: Please don't use multiple blank lines #766: FILE: lib/list-test.c:577: + + CHECK: Alignment should match open parenthesis #768: FILE: lib/list-test.c:579: + KUNIT_EXPECT_PTR_EQ(test, &test_struct1, list_prev_entry(&test_struct2, + list)); ERROR: that open brace { should be on the previous line #789: FILE: lib/list-test.c:600: +static void list_test_list_for_each_prev(struct kunit *test) +{ ERROR: that open brace { should be on the previous line #807: FILE: lib/list-test.c:618: +static void list_test_list_for_each_safe(struct kunit *test) +{ CHECK: Please don't use multiple blank lines #813: FILE: lib/list-test.c:624: + + ERROR: that open brace { should be on the previous line #828: FILE: lib/list-test.c:639: +static void list_test_list_for_each_prev_safe(struct kunit *test) +{ ERROR: that open brace { should be on the previous line #848: FILE: lib/list-test.c:659: +static void list_test_list_for_each_entry(struct kunit *test) +{ ERROR: that open brace { should be on the previous line #869: FILE: lib/list-test.c:680: +static void list_test_list_for_each_entry_reverse(struct kunit *test) +{ I am seeing these error and warns. As per our hallway conversation, the "for_each*" in the test naming is tripping up checkpatch.pl For now you can change the name a bit to not trip checkpatch and maybe explore fixing checkpatch to differentiate between function names with "for_each" in them vs. the actual for_each usages in the code. thanks, -- Shuah