
Hi Heinrich,
On 17 December 2017 at 08:43, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
Add color coding to output: test section blue success green errors red todo yellow summary white others light gray
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
include/efi_selftest.h | 27 +++++++++++++++++---------- lib/efi_selftest/efi_selftest.c | 25 ++++++++++++++----------- lib/efi_selftest/efi_selftest_console.c | 13 +++++++++---- 3 files changed, 40 insertions(+), 25 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
comments below
diff --git a/include/efi_selftest.h b/include/efi_selftest.h index be5ba4bfa9..344f28ed36 100644 --- a/include/efi_selftest.h +++ b/include/efi_selftest.h @@ -18,14 +18,20 @@ #define EFI_ST_SUCCESS 0 #define EFI_ST_FAILURE 1
+/*
- Prints a message.
- */
+#define efi_st_printf(...) \
(efi_st_printc(-1, __VA_ARGS__))
/*
- Prints an error message.
- @... format string followed by fields to print
*/ #define efi_st_error(...) \
(efi_st_printf("%s(%u):\nERROR: ", __FILE__, __LINE__), \
efi_st_printf(__VA_ARGS__)) \
(efi_st_printc(EFI_LIGHTRED, "%s(%u):\nERROR: ", __FILE__, __LINE__), \
efi_st_printc(EFI_LIGHTRED, __VA_ARGS__))
/*
- Prints a TODO message.
@@ -33,8 +39,8 @@
- @... format string followed by fields to print
*/ #define efi_st_todo(...) \
(efi_st_printf("%s(%u):\nTODO: ", __FILE__, __LINE__), \
efi_st_printf(__VA_ARGS__)) \
(efi_st_printc(EFI_YELLOW, "%s(%u):\nTODO: ", __FILE__, __LINE__), \
efi_st_printc(EFI_YELLOW, __VA_ARGS__)) \
/*
- A test may be setup and executed at boottime,
@@ -61,14 +67,15 @@ extern struct efi_simple_input_interface *con_in; void efi_st_exit_boot_services(void);
/*
- Print a pointer to an u16 string
- Print a colored message
- @pointer: pointer
- @buf: pointer to buffer address
- on return position of terminating zero word
- @color color
Can you please point to the enum to use? Also it seems like -1 means no colour? That should bementioned also
- @fmt printf format
- @... arguments to be printed
*/
on return position of terminating zero word
-void efi_st_printf(const char *fmt, ...)
__attribute__ ((format (__printf__, 1, 2)));
+void efi_st_printc(int color, const char *fmt, ...)
__attribute__ ((format (__printf__, 2, 3)));
/*
- Compare memory.
diff --git a/lib/efi_selftest/efi_selftest.c b/lib/efi_selftest/efi_selftest.c index 4e5a12c47c..fc5ef254a1 100644 --- a/lib/efi_selftest/efi_selftest.c +++ b/lib/efi_selftest/efi_selftest.c @@ -65,7 +65,7 @@ void efi_st_exit_boot_services(void) efi_st_error("ExitBootServices did not return EFI_SUCCESS\n"); return; }
efi_st_printf("\nBoot services terminated\n");
efi_st_printc(EFI_WHITE, "\nBoot services terminated\n");
}
/* @@ -81,13 +81,14 @@ static int setup(struct efi_unit_test *test, unsigned int *failures)
if (!test->setup) return EFI_ST_SUCCESS;
efi_st_printf("\nSetting up '%s'\n", test->name);
efi_st_printc(EFI_LIGHTBLUE, "\nSetting up '%s'\n", test->name); ret = test->setup(handle, systable); if (ret != EFI_ST_SUCCESS) { efi_st_error("Setting up '%s' failed\n", test->name); ++*failures; } else {
efi_st_printf("Setting up '%s' succeeded\n", test->name);
efi_st_printc(EFI_LIGHTGREEN,
"Setting up '%s' succeeded\n", test->name); } return ret;
} @@ -105,13 +106,14 @@ static int execute(struct efi_unit_test *test, unsigned int *failures)
if (!test->execute) return EFI_ST_SUCCESS;
efi_st_printf("\nExecuting '%s'\n", test->name);
efi_st_printc(EFI_LIGHTBLUE, "\nExecuting '%s'\n", test->name); ret = test->execute(); if (ret != EFI_ST_SUCCESS) { efi_st_error("Executing '%s' failed\n", test->name); ++*failures; } else {
efi_st_printf("Executing '%s' succeeded\n", test->name);
efi_st_printc(EFI_LIGHTGREEN,
"Executing '%s' succeeded\n", test->name); } return ret;
} @@ -129,13 +131,14 @@ static int teardown(struct efi_unit_test *test, unsigned int *failures)
if (!test->teardown) return EFI_ST_SUCCESS;
efi_st_printf("\nTearing down '%s'\n", test->name);
efi_st_printc(EFI_LIGHTBLUE, "\nTearing down '%s'\n", test->name); ret = test->teardown(); if (ret != EFI_ST_SUCCESS) { efi_st_error("Tearing down '%s' failed\n", test->name); ++*failures; } else {
efi_st_printf("Tearing down '%s' succeeded\n", test->name);
efi_st_printc(EFI_LIGHTGREEN,
"Tearing down '%s' succeeded\n", test->name); } return ret;
} @@ -262,12 +265,12 @@ efi_status_t EFIAPI efi_selftest(efi_handle_t image_handle, } }
efi_st_printf("\nTesting EFI API implementation\n");
efi_st_printc(EFI_WHITE, "\nTesting EFI API implementation\n"); if (testname)
efi_st_printf("\nSelected test: '%ps'\n", testname);
efi_st_printc(EFI_WHITE, "\nSelected test: '%ps'\n", testname); else
efi_st_printf("\nNumber of tests to execute: %u\n",
efi_st_printc(EFI_WHITE, "\nNumber of tests to execute: %u\n", ll_entry_count(struct efi_unit_test, efi_unit_test));
@@ -291,7 +294,7 @@ efi_status_t EFIAPI efi_selftest(efi_handle_t image_handle, &failures);
/* Give feedback */
efi_st_printf("\nSummary: %u failures\n\n", failures);
efi_st_printc(EFI_WHITE, "\nSummary: %u failures\n\n", failures); /* Reset system */ efi_st_printf("Preparing for reset. Press any key.\n");
diff --git a/lib/efi_selftest/efi_selftest_console.c b/lib/efi_selftest/efi_selftest_console.c index 6a7fd20da5..7920c961ba 100644 --- a/lib/efi_selftest/efi_selftest_console.c +++ b/lib/efi_selftest/efi_selftest_console.c @@ -130,12 +130,13 @@ static void int2dec(s32 value, u16 **buf) }
/*
- Print a formatted string to the EFI console
- Print a colored formatted string to the EFI console
- @fmt: format string
- @...: optional arguments
- @color color
same here
- @fmt format string
*/
- @... optional arguments
-void efi_st_printf(const char *fmt, ...) +void efi_st_printc(int color, const char *fmt, ...) { va_list args; u16 buf[160]; @@ -215,7 +216,11 @@ void efi_st_printf(const char *fmt, ...) } va_end(args); *pos = 0;
if (color >= 0)
con_out->set_attribute(con_out, (unsigned long)color); con_out->output_string(con_out, buf);
if (color >= 0)
con_out->set_attribute(con_out, EFI_LIGHTGRAY);
}
/*
2.14.2
Regards, Simon