[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