Hi Simon,

Thank you for the patch.

On sam., août 10, 2024 at 14:51, Simon Glass <s...@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 <s...@chromium.org>
> Fixes: 400175b0a7d ("test: Add a way to check each line of console...")

Reviewed-by: Mattijs Korpershoek <mkorpersh...@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

Reply via email to