[PATCH wayland 2/2] tests: use color when printing on terminal
Pekka Paalanen
ppaalanen at gmail.com
Fri Nov 28 04:08:17 PST 2014
On Fri, 21 Nov 2014 11:34:08 +0100
Marek Chalupa <mchqwerty at gmail.com> wrote:
> Colorize output of the tests when prinitng on terminal.
>
> Signed-off-by: Marek Chalupa <mchqwerty at gmail.com>
> ---
> tests/test-runner.c | 52 +++++++++++++++++++++++++++++++++++++++++++++-------
> 1 file changed, 45 insertions(+), 7 deletions(-)
>
> diff --git a/tests/test-runner.c b/tests/test-runner.c
> index 2ecb15a..3af78fe 100644
> --- a/tests/test-runner.c
> +++ b/tests/test-runner.c
> @@ -53,6 +53,9 @@ int leak_check_enabled;
> * WAYLAND_TESTS_NO_TIMEOUTS evnironment var */
> static int timeouts_enabled = 1;
>
> +/* set to one if the output goes to the terminal */
> +static int is_atty = 0;
> +
> extern const struct test __start_test_section, __stop_test_section;
>
> __attribute__ ((visibility("default"))) void *
> @@ -258,6 +261,25 @@ is_debugger_attached(void)
> return rc;
> }
>
> +#define RED "\033[31m"
> +#define GREEN "\033[32m"
> +
> +static void
> +stderr_set_color(const char *color)
> +{
> + /* use colors only when the output is connected to
> + * the terminal */
> + if (is_atty)
> + fprintf(stderr, "%s", color);
> +}
> +
> +static void
> +stderr_reset_color(void)
> +{
> + if (is_atty)
> + fprintf(stderr, "\033[0m");
> +}
> +
> int main(int argc, char *argv[])
> {
> const struct test *t;
> @@ -279,6 +301,9 @@ int main(int argc, char *argv[])
> timeouts_enabled = !getenv("WAYLAND_TESTS_NO_TIMEOUTS");
> }
>
> + if (isatty(fileno(stderr)))
> + is_atty = 1;
> +
> if (argc == 2 && strcmp(argv[1], "--help") == 0)
> usage(argv[0], EXIT_SUCCESS);
>
> @@ -310,32 +335,45 @@ int main(int argc, char *argv[])
> run_test(t); /* never returns */
>
> if (waitid(P_ALL, 0, &info, WEXITED)) {
> + stderr_set_color(RED);
> fprintf(stderr, "waitid failed: %m\n");
> + stderr_reset_color();
> +
> abort();
> }
>
> - fprintf(stderr, "test \"%s\":\t", t->name);
> switch (info.si_code) {
> case CLD_EXITED:
> - fprintf(stderr, "exit status %d", info.si_status);
> if (info.si_status == EXIT_SUCCESS)
> - success = 1;
> + success = !t->must_fail;
> + else
> + success = t->must_fail;
> +
> + stderr_set_color(success ? GREEN : RED);
> + fprintf(stderr, "test \"%s\":\texit status %d",
> + t->name, info.si_status);
> +
> break;
> case CLD_KILLED:
> case CLD_DUMPED:
> - fprintf(stderr, "signal %d", info.si_status);
> + if (t->must_fail)
> + success = 1;
> +
> + stderr_set_color(success ? GREEN : RED);
> + fprintf(stderr, "test \"%s\":\tsignal %d",
> + t->name, info.si_status);
> +
> break;
> }
>
> - if (t->must_fail)
> - success = !success;
> -
> if (success) {
> pass++;
> fprintf(stderr, ", pass.\n");
> } else
> fprintf(stderr, ", fail.\n");
>
> + stderr_reset_color();
> +
> /* print separator line */
> fprintf(stderr, "----------------------------------------\n");
> }
Hi,
patch 1 pushed, but for some reason I couldn't get this patch 2 to
apply. I tried with three-way merge, and also on top of some earlier
revisions.
Thanks,
pq
More information about the wayland-devel
mailing list