[RESEND PATCH v2] list: test: Mending tests for list_cut_position()

I Hsin Cheng posted 1 patch 2 months, 3 weeks ago
There is a newer version of this series
lib/list-test.c | 6 ++++++
1 file changed, 6 insertions(+)
[RESEND PATCH v2] list: test: Mending tests for list_cut_position()
Posted by I Hsin Cheng 2 months, 3 weeks ago
Mending test for list_cut_position*() for the missing check of integer
"i" after the second loop. The variable should be checked for second
time to make sure both lists after the cut operation are formed as
expected.

Signed-off-by: I Hsin Cheng <richard120310@gmail.com>
---
 lib/list-test.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/list-test.c b/lib/list-test.c
index 37cbc33e9fdb..8d1d47a9fe9e 100644
--- a/lib/list-test.c
+++ b/lib/list-test.c
@@ -404,10 +404,13 @@ static void list_test_list_cut_position(struct kunit *test)
 
 	KUNIT_EXPECT_EQ(test, i, 2);
 
+	i = 0;
 	list_for_each(cur, &list1) {
 		KUNIT_EXPECT_PTR_EQ(test, cur, &entries[i]);
 		i++;
 	}
+
+	KUNIT_EXPECT_EQ(test, i, 1);
 }
 
 static void list_test_list_cut_before(struct kunit *test)
@@ -432,10 +435,13 @@ static void list_test_list_cut_before(struct kunit *test)
 
 	KUNIT_EXPECT_EQ(test, i, 1);
 
+	i = 0;
 	list_for_each(cur, &list1) {
 		KUNIT_EXPECT_PTR_EQ(test, cur, &entries[i]);
 		i++;
 	}
+
+	KUNIT_EXPECT_EQ(test, i, 2);
 }
 
 static void list_test_list_splice(struct kunit *test)
-- 
2.43.0
Re: [RESEND PATCH v2] list: test: Mending tests for list_cut_position()
Posted by David Gow 2 months, 1 week ago
On Tue, 10 Sept 2024 at 12:35, I Hsin Cheng <richard120310@gmail.com> wrote:
>
> Mending test for list_cut_position*() for the missing check of integer
> "i" after the second loop. The variable should be checked for second
> time to make sure both lists after the cut operation are formed as
> expected.
>
> Signed-off-by: I Hsin Cheng <richard120310@gmail.com>
> ---

Alas, this breaks the list test, as we're comparing the entries we get
from list_for_each() with entries[i], so changing the value of 'i'
will compare against the wrong elements.

You could either update the KUNIT_EXPECT_EQ at the bottom to verify
the _total_ number of elements (which should be fine, as we already
verify the value of i after the first loop), or compare each entry
against, e.g., &entries[2 + i].

This is causing a test failure on -next:
https://lore.kernel.org/all/202409161554.6c3e8d5d-oliver.sang@intel.com/

Could we remove this from mm-nonmm pending a fix?

Cheers,
-- David

>  lib/list-test.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/lib/list-test.c b/lib/list-test.c
> index 37cbc33e9fdb..8d1d47a9fe9e 100644
> --- a/lib/list-test.c
> +++ b/lib/list-test.c
> @@ -404,10 +404,13 @@ static void list_test_list_cut_position(struct kunit *test)
>
>         KUNIT_EXPECT_EQ(test, i, 2);
>
> +       i = 0;
>         list_for_each(cur, &list1) {
>                 KUNIT_EXPECT_PTR_EQ(test, cur, &entries[i]);

Either change this to &entries[2 + i], or...

>                 i++;
>         }
> +
> +       KUNIT_EXPECT_EQ(test, i, 1);

This to expect i == 3

>  }
>
>  static void list_test_list_cut_before(struct kunit *test)
> @@ -432,10 +435,13 @@ static void list_test_list_cut_before(struct kunit *test)
>
>         KUNIT_EXPECT_EQ(test, i, 1);
>
> +       i = 0;
>         list_for_each(cur, &list1) {
>                 KUNIT_EXPECT_PTR_EQ(test, cur, &entries[i]);

Either change this to &entries[1 + i], or...

>                 i++;
>         }
> +
> +       KUNIT_EXPECT_EQ(test, i, 2);

This to expect i == 3.

>  }
>
>  static void list_test_list_splice(struct kunit *test)
> --
> 2.43.0
>