[PATCH 02/21] test: Fail when an empty line is expected but not present
Mattijs Korpershoek
mkorpershoek at baylibre.com
Tue Aug 20 08:40:09 CEST 2024
Hi Simon,
Thank you for the patch.
On sam., août 10, 2024 at 14:51, Simon Glass <sjg at chromium.org> wrote:
> The existing implementation of ut_assert_nextline_empty() cannot
> distinguish between an empty line and no line at all. It can in fact be
> called at the end of the recorded output and will happily return
> success.
>
> Adjust the logic so that this condition is detected. Show a failure
> message in this case.
>
> Fix the one test which falls foul of this fix.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> Fixes: 400175b0a7d ("test: Add a way to check each line of console...")
Reviewed-by: Mattijs Korpershoek <mkorpershoek at baylibre.com>
> ---
>
> common/console.c | 2 ++
> include/console.h | 2 +-
> test/boot/bootflow.c | 2 --
> test/ut.c | 8 +++++---
> 4 files changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/common/console.c b/common/console.c
> index 63f78004fdb..85f627297ed 100644
> --- a/common/console.c
> +++ b/common/console.c
> @@ -845,6 +845,8 @@ int console_record_readline(char *str, int maxlen)
> {
> if (gd->flags & GD_FLG_RECORD_OVF)
> return -ENOSPC;
> + if (console_record_isempty())
> + return -ENOENT;
>
> return membuff_readline((struct membuff *)&gd->console_out, str,
> maxlen, '\0', false);
> diff --git a/include/console.h b/include/console.h
> index 2617e160073..6b6d0f9de73 100644
> --- a/include/console.h
> +++ b/include/console.h
> @@ -73,7 +73,7 @@ int console_record_reset_enable(void);
> * @str: Place to put string
> * @maxlen: Maximum length of @str including nul terminator
> * Return: length of string returned, or -ENOSPC if the console buffer was
> - * overflowed by the output
> + * overflowed by the output, or -ENOENT if there was nothing to read
> */
> int console_record_readline(char *str, int maxlen);
>
> diff --git a/test/boot/bootflow.c b/test/boot/bootflow.c
> index 8b46256fa48..8bfc2a1b9b4 100644
> --- a/test/boot/bootflow.c
> +++ b/test/boot/bootflow.c
> @@ -1151,8 +1151,6 @@ static int bootflow_cmdline(struct unit_test_state *uts)
>
> ut_asserteq(0, run_command("bootflow cmdline set mary abc", 0));
> ut_asserteq(0, run_command("bootflow cmdline set mary", 0));
> - ut_assert_nextline_empty();
> -
> ut_assert_console_end();
>
> return 0;
> diff --git a/test/ut.c b/test/ut.c
> index ae99831ac8f..7454da3e001 100644
> --- a/test/ut.c
> +++ b/test/ut.c
> @@ -59,9 +59,11 @@ static int readline_check(struct unit_test_state *uts)
> ut_fail(uts, __FILE__, __LINE__, __func__,
> "Console record buffer too small - increase CONFIG_CONSOLE_RECORD_OUT_SIZE");
> return ret;
> + } else if (ret == -ENOENT) {
> + strcpy(uts->actual_str, "<no-more-output>");
> }
>
> - return 0;
> + return ret;
> }
>
> int ut_check_console_line(struct unit_test_state *uts, const char *fmt, ...)
> @@ -79,8 +81,8 @@ int ut_check_console_line(struct unit_test_state *uts, const char *fmt, ...)
> return -EOVERFLOW;
> }
> ret = readline_check(uts);
> - if (ret < 0)
> - return ret;
> + if (ret == -ENOENT)
> + return 1;
>
> return strcmp(uts->expect_str, uts->actual_str);
> }
> --
> 2.34.1
More information about the U-Boot
mailing list