* [PATCH] dtc: test: make the test output more friendly
@ 2014-10-24 3:19 Wang Long
[not found] ` <1414120757-17288-1-git-send-email-long.wanglong-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 2+ messages in thread
From: Wang Long @ 2014-10-24 3:19 UTC (permalink / raw)
To: david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+, jdl-CYoMK+44s/E,
sjg-F7+t8E8rja9g9hUCZPvPmw, peifeiyue-hv44wF8Li93QT0dZR+AlfA,
long.wanglong-hv44wF8Li93QT0dZR+AlfA
Cc: devicetree-compiler-u79uwXL29TY76Z2rM5mHXA
when run the command 'make check', the format of the output as the follow:
../fdtput label01.dts.fdtput.test.dtb -p /you/are/drunk/sir/winston slurp -ts twice: PASS
../fdtput label01.dts.fdtput.test.dtb -cp "Lorem ipsum dolor sit amet, cons"...<4119 bytes>PASS
../fdtput label01.dts.fdtput.test.dtb -cp /chosen: PASS
../fdtput label01.dts.fdtput.test.dtb -cp /chosen/son: PASS
this patch make the format of the output more firendly to developer, as the follow:
../fdtput label01.dts.fdtput.test.dtb -p /you/are/drunk/sir/winston slurp -ts twice: [ PASS ]
../fdtput label01.dts.fdtput.test.dtb -cp "Lorem ipsum dolor sit amet, cons"...<4119 bytes> [ PASS ]
../fdtput label01.dts.fdtput.test.dtb -cp /chosen: [ PASS ]
../fdtput label01.dts.fdtput.test.dtb -cp /chosen/son: [ PASS ]
The test result print ooutput at the right side of the terminal.
The "PASS" word printed in green color and the "FAILED" word
printed in red color, which are more friendly to
developer.
Signed-off-by: Wang Long <long.wanglong-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
---
tests/tests.h | 27 +++++++++++++++++----------
tests/tests.sh | 13 +++++++++++--
tests/testutils.c | 29 ++++++++++++++++++++++++++++-
3 files changed, 56 insertions(+), 13 deletions(-)
diff --git a/tests/tests.h b/tests/tests.h
index 56a843c..76954ac 100644
--- a/tests/tests.h
+++ b/tests/tests.h
@@ -40,6 +40,7 @@ void test_init(int argc, char *argv[]);
/* Each test case must define this function */
void cleanup(void);
+int get_terminal_width_height(const int fd, int *width, int *height);
#define verbose_printf(...) \
if (verbose_test) { \
@@ -50,11 +51,14 @@ void cleanup(void);
#define ERROR(fmt, args...) fprintf(stderr, ERR fmt, ## args)
-#define PASS() \
- do { \
- cleanup(); \
- printf("PASS\n"); \
- exit(RC_PASS); \
+#define PASS() \
+ do { \
+ int width, height; \
+ cleanup(); \
+ get_terminal_width_height(0, &width, &height); \
+ printf("\033[%d;%dH", height, width - 9); \
+ printf("[\033[0;32;1m PASS \033[0m]\n"); \
+ exit(RC_PASS); \
} while (0)
#define PASS_INCONCLUSIVE() \
@@ -72,11 +76,14 @@ void cleanup(void);
} while (0)
/* Look out, gcc extension below... */
-#define FAIL(fmt, ...) \
- do { \
- cleanup(); \
- printf("FAIL\t" fmt "\n", ##__VA_ARGS__); \
- exit(RC_FAIL); \
+#define FAIL(fmt, ...) \
+ do { \
+ int width, height; \
+ cleanup(); \
+ get_terminal_width_height(0, &width, &height); \
+ printf("\033[%d;%dH", height, width - 9); \
+ printf("[\033[0;31;1m FAIL ]\n" fmt "\033[0m\n", ##__VA_ARGS__); \
+ exit(RC_FAIL); \
} while (0)
#define CONFIG(fmt, ...) \
diff --git a/tests/tests.sh b/tests/tests.sh
index 818fd09..10182bd 100644
--- a/tests/tests.sh
+++ b/tests/tests.sh
@@ -1,12 +1,21 @@
# Common functions for shell testcases
PASS () {
- echo "PASS"
+ cols=`tput cols`
+ lines=`tput lines`
+ ((pos=$cols-10))
+ tput cup $lines $pos
+ echo -e "[\033[0;32;1m PASS \033[0m]"
exit 0
}
FAIL () {
- echo "FAIL" "$@"
+ cols=`tput cols`
+ lines=`tput lines`
+ ((pos=$cols-10))
+ tput cup $lines $pos
+ echo -e "[\033[0;31;1m FAIL \033[0m]"
+ echo -e "\033[0;31;1m$@\033[0m"
exit 2
}
diff --git a/tests/testutils.c b/tests/testutils.c
index 521f4f1..b6de04d 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -29,7 +29,7 @@
#include <signal.h>
#include <unistd.h>
#include <fcntl.h>
-
+#include <sys/ioctl.h>
#include <libfdt.h>
#include "tests.h"
@@ -41,6 +41,33 @@ void __attribute__((weak)) cleanup(void)
{
}
+int get_terminal_width_height(const int fd, int *width, int *height)
+{
+ struct winsize win = { 0, 0, 0, 0 };
+ int ret = ioctl(fd, TIOCGWINSZ, &win);
+
+ if (height) {
+ if (!win.ws_row) {
+ char *s = getenv("LINES");
+ if (s) win.ws_row = atoi(s);
+ }
+ if (win.ws_row <= 1 || win.ws_row >= 30000)
+ win.ws_row = 24;
+ *height = (int) win.ws_row;
+ }
+
+ if (width) {
+ if (!win.ws_col) {
+ char *s = getenv("COLUMNS");
+ if (s) win.ws_col = atoi(s);
+ }
+ if (win.ws_col <= 1 || win.ws_col >= 30000)
+ win.ws_col = 80;
+ *width = (int) win.ws_col;
+ }
+
+ return ret;
+}
static void sigint_handler(int signum, siginfo_t *si, void *uc)
{
cleanup();
--
1.8.3.4
--
To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] dtc: test: make the test output more friendly
[not found] ` <1414120757-17288-1-git-send-email-long.wanglong-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
@ 2014-10-24 10:14 ` David Gibson
0 siblings, 0 replies; 2+ messages in thread
From: David Gibson @ 2014-10-24 10:14 UTC (permalink / raw)
To: Wang Long
Cc: jdl-CYoMK+44s/E, sjg-F7+t8E8rja9g9hUCZPvPmw,
peifeiyue-hv44wF8Li93QT0dZR+AlfA,
devicetree-compiler-u79uwXL29TY76Z2rM5mHXA
[-- Attachment #1: Type: text/plain, Size: 1541 bytes --]
On Fri, Oct 24, 2014 at 03:19:17AM +0000, Wang Long wrote:
> when run the command 'make check', the format of the output as the follow:
>
> ../fdtput label01.dts.fdtput.test.dtb -p /you/are/drunk/sir/winston slurp -ts twice: PASS
> ../fdtput label01.dts.fdtput.test.dtb -cp "Lorem ipsum dolor sit amet, cons"...<4119 bytes>PASS
> ../fdtput label01.dts.fdtput.test.dtb -cp /chosen: PASS
> ../fdtput label01.dts.fdtput.test.dtb -cp /chosen/son: PASS
>
> this patch make the format of the output more firendly to developer, as the follow:
>
> ../fdtput label01.dts.fdtput.test.dtb -p /you/are/drunk/sir/winston slurp -ts twice: [ PASS ]
> ../fdtput label01.dts.fdtput.test.dtb -cp "Lorem ipsum dolor sit amet, cons"...<4119 bytes> [ PASS ]
> ../fdtput label01.dts.fdtput.test.dtb -cp /chosen: [ PASS ]
> ../fdtput label01.dts.fdtput.test.dtb -cp /chosen/son: [ PASS ]
>
> The test result print ooutput at the right side of the terminal.
> The "PASS" word printed in green color and the "FAILED" word
> printed in red color, which are more friendly to
> developer.
Sorry, I'm not inclined to accept this in the current form.
This approach assumes a particular type of ansi compatible terminal
which I'd prefer not to do.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-10-24 10:14 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-24 3:19 [PATCH] dtc: test: make the test output more friendly Wang Long
[not found] ` <1414120757-17288-1-git-send-email-long.wanglong-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2014-10-24 10:14 ` David Gibson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).