[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJ-ks9=sVKZf=Cy9mk+mw2ua_XXwd58kudas4J5krTfPtQyVbA@mail.gmail.com>
Date: Tue, 11 Feb 2025 10:11:54 -0500
From: Tamir Duberstein <tamird@...il.com>
To: Petr Mladek <pmladek@...e.com>
Cc: David Gow <davidgow@...gle.com>, Steven Rostedt <rostedt@...dmis.org>,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
Rasmus Villemoes <linux@...musvillemoes.dk>, Sergey Senozhatsky <senozhatsky@...omium.org>,
Andrew Morton <akpm@...ux-foundation.org>, Shuah Khan <shuah@...nel.org>,
Geert Uytterhoeven <geert@...ux-m68k.org>, linux-kernel@...r.kernel.org,
linux-kselftest@...r.kernel.org
Subject: Re: [PATCH v6 2/2] scanf: break kunit into test cases
On Tue, Feb 11, 2025 at 6:54 AM Petr Mladek <pmladek@...e.com> wrote:
>
> On Mon 2025-02-10 13:13:49, Tamir Duberstein wrote:
> > Use `suite_init` and move some tests into `scanf_test_cases`. This
> > gives us nicer output in the event of a failure.
>
> Hmm, simulate the following failure in the original test module:
>
>
> diff --git a/lib/test_scanf.c b/lib/test_scanf.c
> index 44f8508c9d88..3ec12328cc4c 100644
> --- a/lib/test_scanf.c
> +++ b/lib/test_scanf.c
> @@ -564,7 +564,7 @@ static void __init numbers_list_field_width_val_h(const char *delim)
> numbers_list_val_width(unsigned short, "%hu", delim, "hu", check_ushort);
> numbers_list_val_width(short, "%hd", delim, "hd", check_short);
> numbers_list_val_width(short, "%hd", delim, "hi", check_short);
> - numbers_list_val_width(unsigned short, "%hx", delim, "hx", check_ushort);
> + numbers_list_val_width(unsigned short, "%hx", delim, "hx", check_uint);
> numbers_list_val_width(unsigned short, "0x%hx", delim, "hx", check_ushort);
> numbers_list_val_width(short, "0x%hx", delim, "hi", check_short);
> }
>
> and I got:
>
>
> [ 383.100048] test_scanf: vsscanf("1574 9 64ca 935b 7 142d ff58 0", "%4hx %1hx %4hx %4hx %1hx %4hx %4hx %1hx", ...) expected 2472240330 got 1690959881
> [ 383.102843] test_scanf: vsscanf("f12:2:d:2:c166:1:36b:1906", "%3hx:%1hx:%1hx:%1hx:%4hx:%1hx:%3hx:%4hx", ...) expected 131085 got 851970
> [ 383.105376] test_scanf: vsscanf("4,b2fe,3,593,6,0,3bde,0", "%1hx,%4hx,%1hx,%3hx,%1hx,%1hx,%4hx,%1hx", ...) expected 93519875 got 242430
> [ 383.105659] test_scanf: vsscanf("6-1-2-1-d9e6-f-93e-e567", "%1hx-%1hx-%1hx-%1hx-%4hx-%1hx-%3hx-%4hx", ...) expected 65538 got 131073
> [ 383.106127] test_scanf: vsscanf("72d6/35/e88d/1/0/6c8c/7/1", "%4hx/%2hx/%4hx/%1hx/%1hx/%4hx/%1hx/%1hx", ...) expected 125069 got 3901554741
> [ 383.106235] test_scanf: vsscanf("c9bea1b8122113e9a168df573", "%4hx%4hx%1hx%4hx%4hx%1hx%4hx%3hx", ...) expected 571539457 got 106936
> [ 383.106398] test_scanf: failed 6 out of 2545 tests
>
>
> When I tried to do the same in the new module:
>
> diff --git a/lib/scanf_kunit.c b/lib/scanf_kunit.c
> index e45f3c4f0437..692eb8cbbeab 100644
> --- a/lib/scanf_kunit.c
> +++ b/lib/scanf_kunit.c
> @@ -546,7 +546,7 @@ static void numbers_list_field_width_val_h(struct kunit *test, const char *delim
> numbers_list_val_width(unsigned short, "%hu", delim, "hu", check_ushort);
> numbers_list_val_width(short, "%hd", delim, "hd", check_short);
> numbers_list_val_width(short, "%hd", delim, "hi", check_short);
> - numbers_list_val_width(unsigned short, "%hx", delim, "hx", check_ushort);
> + numbers_list_val_width(unsigned short, "%hx", delim, "hx", check_uint);
> numbers_list_val_width(unsigned short, "0x%hx", delim, "hx", check_ushort);
> numbers_list_val_width(short, "0x%hx", delim, "hi", check_short);
> }
>
> then I got:
>
> [ 6625.895391] KTAP version 1
> [ 6625.895928] 1..1
> [ 6625.896494] KTAP version 1
> [ 6625.896852] # Subtest: scanf
> [ 6625.897191] # module: scanf_kunit
> [ 6625.897198] 1..10
> [ 6625.903479] ok 1 numbers_simple
> [ 6625.903490] KTAP version 1
> [ 6625.904352] # Subtest: numbers_list
> [ 6625.905623] ok 1 " "
> [ 6625.907654] ok 2 ":"
> [ 6625.909654] ok 3 ","
> [ 6625.911564] ok 4 "-"
> [ 6625.913632] ok 5 "/"
> [ 6625.914020] # numbers_list: pass:5 fail:0 skip:0 total:5
> [ 6625.914370] ok 2 numbers_list
> [ 6625.914964] KTAP version 1
> [ 6625.915871] # Subtest: numbers_list_field_width_typemax
> [ 6625.917527] ok 1 " "
> [ 6625.919366] ok 2 ":"
> [ 6625.921586] ok 3 ","
> [ 6625.923240] ok 4 "-"
> [ 6625.925226] ok 5 "/"
> [ 6625.925622] # numbers_list_field_width_typemax: pass:5 fail:0 skip:0 total:5
> [ 6625.925973] ok 3 numbers_list_field_width_typemax
> [ 6625.926709] KTAP version 1
> [ 6625.927613] # Subtest: numbers_list_field_width_val_width
> [ 6625.928546] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 1044578334 (0x3e43001e)
> *pval == 837828163 (0x31f03e43)
> vsscanf("0 1e 3e43 31f0 0 0 5797 9c70", "%1hx %2hx %4hx %4hx %1hx %1hx %4hx %4hx", ...)
> [ 6625.929225] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 837828163 (0x31f03e43)
> *pval == 0 (0x0)
> vsscanf("0 1e 3e43 31f0 0 0 5797 9c70", "%1hx %2hx %4hx %4hx %1hx %1hx %4hx %4hx", ...)
> [ 6625.932202] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 12784 (0x31f0)
> *pval == 2624608151 (0x9c705797)
> vsscanf("0 1e 3e43 31f0 0 0 5797 9c70", "%1hx %2hx %4hx %4hx %1hx %1hx %4hx %4hx", ...)
> [ 6625.934982] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 0 (0x0)
> *pval == 1966080 (0x1e0000)
> vsscanf("0 1e 3e43 31f0 0 0 5797 9c70", "%1hx %2hx %4hx %4hx %1hx %1hx %4hx %4hx", ...)
> [ 6625.935004] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 1469513728 (0x57970000)
> *pval == 837828163 (0x31f03e43)
> vsscanf("0 1e 3e43 31f0 0 0 5797 9c70", "%1hx %2hx %4hx %4hx %1hx %1hx %4hx %4hx", ...)
> [ 6625.935025] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 2624608151 (0x9c705797)
> *pval == 0 (0x0)
> vsscanf("0 1e 3e43 31f0 0 0 5797 9c70", "%1hx %2hx %4hx %4hx %1hx %1hx %4hx %4hx", ...)
> [ 6625.935046] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 469802096 (0x1c009c70)
> *pval == 2624608151 (0x9c705797)
> vsscanf("0 1e 3e43 31f0 0 0 5797 9c70", "%1hx %2hx %4hx %4hx %1hx %1hx %4hx %4hx", ...)
> [ 6625.938161] not ok 1 " "
> [ 6625.952074] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 131073 (0x20001)
> *pval == 65538 (0x10002)
> vsscanf("6:1:2:1:d9e6:f:93e:e567", "%1hx:%1hx:%1hx:%1hx:%4hx:%1hx:%3hx:%4hx", ...)
> [ 6625.952098] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 65538 (0x10002)
> *pval == 1038822 (0xfd9e6)
> vsscanf("6:1:2:1:d9e6:f:93e:e567", "%1hx:%1hx:%1hx:%1hx:%4hx:%1hx:%3hx:%4hx", ...)
> [ 6625.952121] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 3655729153 (0xd9e60001)
> *pval == 3848735038 (0xe567093e)
> vsscanf("6:1:2:1:d9e6:f:93e:e567", "%1hx:%1hx:%1hx:%1hx:%4hx:%1hx:%3hx:%4hx", ...)
> [ 6625.952143] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 1038822 (0xfd9e6)
> *pval == 65542 (0x10006)
> vsscanf("6:1:2:1:d9e6:f:93e:e567", "%1hx:%1hx:%1hx:%1hx:%4hx:%1hx:%3hx:%4hx", ...)
> [ 6625.960548] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 155058191 (0x93e000f)
> *pval == 65538 (0x10002)
> vsscanf("6:1:2:1:d9e6:f:93e:e567", "%1hx:%1hx:%1hx:%1hx:%4hx:%1hx:%3hx:%4hx", ...)
> [ 6625.960579] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 3848735038 (0xe567093e)
> *pval == 1038822 (0xfd9e6)
> vsscanf("6:1:2:1:d9e6:f:93e:e567", "%1hx:%1hx:%1hx:%1hx:%4hx:%1hx:%3hx:%4hx", ...)
> [ 6625.960604] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 50390375 (0x300e567)
> *pval == 3848735038 (0xe567093e)
> vsscanf("6:1:2:1:d9e6:f:93e:e567", "%1hx:%1hx:%1hx:%1hx:%4hx:%1hx:%3hx:%4hx", ...)
> [ 6625.969351] not ok 2 ":"
> [ 6625.969860] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 3589275648 (0xd5f00000)
> *pval == 3768047088 (0xe097d5f0)
> vsscanf("0,0,d5f0,e097,3,345e,13f,a8da", "%1hx,%1hx,%4hx,%4hx,%1hx,%4hx,%3hx,%4hx", ...)
> [ 6625.972121] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 3768047088 (0xe097d5f0)
> *pval == 878575619 (0x345e0003)
> vsscanf("0,0,d5f0,e097,3,345e,13f,a8da", "%1hx,%1hx,%4hx,%4hx,%1hx,%4hx,%3hx,%4hx", ...)
> [ 6625.972139] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 254103 (0x3e097)
> *pval == 2832859455 (0xa8da013f)
> vsscanf("0,0,d5f0,e097,3,345e,13f,a8da", "%1hx,%1hx,%4hx,%4hx,%1hx,%4hx,%3hx,%4hx", ...)
> [ 6625.976800] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 878575619 (0x345e0003)
> *pval == 0 (0x0)
> vsscanf("0,0,d5f0,e097,3,345e,13f,a8da", "%1hx,%1hx,%4hx,%4hx,%1hx,%4hx,%3hx,%4hx", ...)
> [ 6625.976819] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 20919390 (0x13f345e)
> *pval == 3768047088 (0xe097d5f0)
> vsscanf("0,0,d5f0,e097,3,345e,13f,a8da", "%1hx,%1hx,%4hx,%4hx,%1hx,%4hx,%3hx,%4hx", ...)
> [ 6625.976836] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 2832859455 (0xa8da013f)
> *pval == 878575619 (0x345e0003)
> vsscanf("0,0,d5f0,e097,3,345e,13f,a8da", "%1hx,%1hx,%4hx,%4hx,%1hx,%4hx,%3hx,%4hx", ...)
> [ 6625.976853] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 3691030746 (0xdc00a8da)
> *pval == 2832859455 (0xa8da013f)
> vsscanf("0,0,d5f0,e097,3,345e,13f,a8da", "%1hx,%1hx,%4hx,%4hx,%1hx,%4hx,%3hx,%4hx", ...)
> [ 6625.979505] not ok 3 ","
> [ 6625.989303] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 1475084289 (0x57ec0001)
> *pval == 3243268076 (0xc15057ec)
> vsscanf("1-1-57ec-c150-15-0-7-c", "%1hx-%1hx-%4hx-%4hx-%2hx-%1hx-%1hx-%1hx", ...)
> [ 6625.989324] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 3243268076 (0xc15057ec)
> *pval == 21 (0x15)
> vsscanf("1-1-57ec-c150-15-0-7-c", "%1hx-%1hx-%4hx-%4hx-%2hx-%1hx-%1hx-%1hx", ...)
> [ 6625.989343] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 1425744 (0x15c150)
> *pval == 786439 (0xc0007)
> vsscanf("1-1-57ec-c150-15-0-7-c", "%1hx-%1hx-%4hx-%4hx-%2hx-%1hx-%1hx-%1hx", ...)
> [ 6625.994177] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 21 (0x15)
> *pval == 65537 (0x10001)
> vsscanf("1-1-57ec-c150-15-0-7-c", "%1hx-%1hx-%4hx-%4hx-%2hx-%1hx-%1hx-%1hx", ...)
> [ 6625.994196] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 458752 (0x70000)
> *pval == 3243268076 (0xc15057ec)
> vsscanf("1-1-57ec-c150-15-0-7-c", "%1hx-%1hx-%4hx-%4hx-%2hx-%1hx-%1hx-%1hx", ...)
> [ 6625.994214] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 786439 (0xc0007)
> *pval == 21 (0x15)
> vsscanf("1-1-57ec-c150-15-0-7-c", "%1hx-%1hx-%4hx-%4hx-%2hx-%1hx-%1hx-%1hx", ...)
> [ 6625.994232] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 3858759692 (0xe600000c)
> *pval == 786439 (0xc0007)
> vsscanf("1-1-57ec-c150-15-0-7-c", "%1hx-%1hx-%4hx-%4hx-%2hx-%1hx-%1hx-%1hx", ...)
> [ 6626.003487] not ok 4 "-"
> [ 6626.004021] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 3901554741 (0xe88d0035)
> *pval == 125069 (0x1e88d)
> vsscanf("72d6/35/e88d/1/0/6c8c/7/1", "%4hx/%2hx/%4hx/%1hx/%1hx/%4hx/%1hx/%1hx", ...)
> [ 6626.006206] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 125069 (0x1e88d)
> *pval == 1821114368 (0x6c8c0000)
> vsscanf("72d6/35/e88d/1/0/6c8c/7/1", "%4hx/%2hx/%4hx/%1hx/%1hx/%4hx/%1hx/%1hx", ...)
> [ 6626.006226] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 1 (0x1)
> *pval == 65543 (0x10007)
> vsscanf("72d6/35/e88d/1/0/6c8c/7/1", "%4hx/%2hx/%4hx/%1hx/%1hx/%4hx/%1hx/%1hx", ...)
> [ 6626.006243] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 1821114368 (0x6c8c0000)
> *pval == 3502806 (0x3572d6)
> vsscanf("72d6/35/e88d/1/0/6c8c/7/1", "%4hx/%2hx/%4hx/%1hx/%1hx/%4hx/%1hx/%1hx", ...)
> [ 6626.006261] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 486540 (0x76c8c)
> *pval == 125069 (0x1e88d)
> vsscanf("72d6/35/e88d/1/0/6c8c/7/1", "%4hx/%2hx/%4hx/%1hx/%1hx/%4hx/%1hx/%1hx", ...)
> [ 6626.015404] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 65543 (0x10007)
> *pval == 1821114368 (0x6c8c0000)
> vsscanf("72d6/35/e88d/1/0/6c8c/7/1", "%4hx/%2hx/%4hx/%1hx/%1hx/%4hx/%1hx/%1hx", ...)
> [ 6626.015423] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 1828716545 (0x6d000001)
> *pval == 65543 (0x10007)
> vsscanf("72d6/35/e88d/1/0/6c8c/7/1", "%4hx/%2hx/%4hx/%1hx/%1hx/%4hx/%1hx/%1hx", ...)
> [ 6626.018041] not ok 5 "/"
> [ 6626.022529] # numbers_list_field_width_val_width: pass:0 fail:5 skip:0 total:5
> [ 6626.022535] not ok 4 numbers_list_field_width_val_width
> [ 6626.023220] # numbers_slice: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 106936 (0x1a1b8)
> *pval == 571539457 (0x22110001)
> vsscanf("c9bea1b8122113e9a168df573", "%4hx%4hx%1hx%4hx%4hx%1hx%4hx%3hx", ...)
> [ 6626.024017] # numbers_slice: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 571539457 (0x22110001)
> *pval == 81562 (0x13e9a)
> vsscanf("c9bea1b8122113e9a168df573", "%4hx%4hx%1hx%4hx%4hx%1hx%4hx%3hx", ...)
> [ 6626.024035] # numbers_slice: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 1050288657 (0x3e9a2211)
> *pval == 91449567 (0x57368df)
> vsscanf("c9bea1b8122113e9a168df573", "%4hx%4hx%1hx%4hx%4hx%1hx%4hx%3hx", ...)
> [ 6626.024053] # numbers_slice: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 81562 (0x13e9a)
> *pval == 2713242046 (0xa1b8c9be)
> vsscanf("c9bea1b8122113e9a168df573", "%4hx%4hx%1hx%4hx%4hx%1hx%4hx%3hx", ...)
> [ 6626.024073] # numbers_slice: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 1759444993 (0x68df0001)
> *pval == 571539457 (0x22110001)
> vsscanf("c9bea1b8122113e9a168df573", "%4hx%4hx%1hx%4hx%4hx%1hx%4hx%3hx", ...)
> [ 6626.024091] # numbers_slice: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 91449567 (0x57368df)
> *pval == 81562 (0x13e9a)
> vsscanf("c9bea1b8122113e9a168df573", "%4hx%4hx%1hx%4hx%4hx%1hx%4hx%3hx", ...)
> [ 6626.024108] # numbers_slice: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 1107297651 (0x42000573)
> *pval == 91449567 (0x57368df)
> vsscanf("c9bea1b8122113e9a168df573", "%4hx%4hx%1hx%4hx%4hx%1hx%4hx%3hx", ...)
> [ 6626.026607] not ok 5 numbers_slice
> [ 6626.039801] ok 6 numbers_prefix_overflow
> [ 6626.040522] ok 7 test_simple_strtoull
> [ 6626.041433] ok 8 test_simple_strtoll
> [ 6626.042409] ok 9 test_simple_strtoul
> [ 6626.043153] ok 10 test_simple_strtol
> [ 6626.043161] # scanf: pass:8 fail:2 skip:0 total:10
> [ 6626.043166] # Totals: pass:16 fail:6 skip:0 total:22
> [ 6626.043170] not ok 1 scanf
>
>
> I like that the log better points to the test:
>
> [ 6625.927613] # Subtest: numbers_list_field_width_val_width
>
> But
>
> [ 6625.928546] # numbers_list_field_width_val_width: EXPECTATION FAILED at lib/scanf_kunit.c:91
> Expected got == *pval, but
> got == 1044578334 (0x3e43001e)
> *pval == 837828163 (0x31f03e43)
> vsscanf("0 1e 3e43 31f0 0 0 5797 9c70", "%1hx %2hx %4hx %4hx %1hx %1hx %4hx %4hx", ...)
>
> is much harder to parse than the original
Yeah, I find that hard to look at as well. I'll revert this to the
original format.
> [ 383.100048] test_scanf: vsscanf("1574 9 64ca 935b 7 142d ff58 0", "%4hx %1hx %4hx %4hx %1hx %4hx %4hx %1hx", ...) expected 2472240330 got 1690959881
>
>
> Also I wonder why the scanned string is different:
>
> vsscanf("0 1e 3e43 31f0 0 0 5797 9c70", "%1hx %2hx %4hx %4hx %1hx %1hx %4hx %4hx", ...)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> vs.
>
> [ 383.100048] test_scanf: vsscanf("1574 9 64ca 935b 7 142d ff58 0", "%4hx %1hx %4hx %4hx %1hx %4hx %4hx %1hx", ...) expected 2472240330 got 1690959881
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> I would expect that the 1st error would be on the same string
> in both tests. I wonder why it differs.
This is just because the order in which the tests run has changed.
These strings come from a PRNG. Before the last patch the tests did
(pseudocode):
for (delim : delims) {
for (test : tests) {
test(delim)
}
}
After the last patch the inner and outer loops have traded places.
>
> Best Regards,
> Petr
Powered by blists - more mailing lists