test: Add helper to skip to partial console line

Sometimes we need to skip to a line but it includes addresses or other
information which can vary depending on the runtime conditions.

Add a new ut_assert_skip_to_linen() which is similar to the existing
ut_assert_skip_to_line() function but only checks that the console line
matches up to the length of the provided string.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass
2023-10-01 19:15:13 -06:00
committed by Tom Rini
parent 4001e5ab9b
commit 30a75e7794
2 changed files with 57 additions and 0 deletions

View File

@@ -97,6 +97,23 @@ int ut_check_skipline(struct unit_test_state *uts);
*/
int ut_check_skip_to_line(struct unit_test_state *uts, const char *fmt, ...);
/**
* ut_check_skip_to_linen() - skip output until a partial line is found
*
* This creates a string and then checks it against the following lines of
* console output obtained with console_record_readline() until it is found.
* Only the characters up to the length of the string are checked, so the line
* may extend further
*
* After the function returns, uts->expect_str holds the expected string and
* uts->actual_str holds the actual string read from the console.
*
* @uts: Test state
* @fmt: printf() format string to look for, followed by args
* Return: 0 if OK, -ENOENT if not found, other value on error
*/
int ut_check_skip_to_linen(struct unit_test_state *uts, const char *fmt, ...);
/**
* ut_check_console_end() - Check there is no more console output
*
@@ -359,6 +376,19 @@ int ut_check_console_dump(struct unit_test_state *uts, int total_bytes);
__ret; \
})
/* Assert that a following console output line matches */
#define ut_assert_skip_to_linen(fmt, args...) ({ \
int __ret = 0; \
\
if (ut_check_skip_to_linen(uts, fmt, ##args)) { \
ut_failf(uts, __FILE__, __LINE__, __func__, \
"console", "\nExpected '%s',\n got to '%s'", \
uts->expect_str, uts->actual_str); \
return CMD_RET_FAILURE; \
} \
__ret; \
})
/* Assert that there is no more console output */
#define ut_assert_console_end() ({ \
int __ret = 0; \