[PATCH v2 02/19] test: Fail when an empty line is expected but not present

Simon Glass sjg at chromium.org
Thu Aug 22 15:57:47 CEST 2024


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>
---

(no changes since v1)

 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