Merge pull request #3639 from OlegHahm/unittest-color-output

Added a colored outputter to embUnit.
dev/timer
Martine Lenders 8 years ago
commit feb8b8cc0f

@ -39,6 +39,10 @@ ifneq (,$(filter embunit,$(USEMODULE)))
CFLAGS += -DOUTPUT=OUTPUT_TEXT
else ifeq ($(OUTPUT),COMPILER)
CFLAGS += -DOUTPUT=OUTPUT_COMPILER
else ifeq ($(OUTPUT),COLORTEXT)
CFLAGS += -DOUTPUT=OUTPUT_COLORTEXT
else ifeq ($(OUTPUT),COLOR)
CFLAGS += -DOUTPUT=OUTPUT_COLOR
endif
endif

@ -0,0 +1,75 @@
/*
* Copyright (C) 2015 Janos Kutscherauer <noshky@gmail.com>
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
#include <stdio.h>
#include "ColorOutputter.h"
#include "ColorTextColors.h"
static void ColorOutputter_printHeader(OutputterRef self)
{
(void) self;
}
static void ColorOutputter_printStartTest(OutputterRef self, TestRef test)
{
(void) self;
(void) test;
}
static void ColorOutputter_printEndTest(OutputterRef self, TestRef test)
{
(void) self;
(void) test;
}
static void ColorOutputter_printSuccessful(OutputterRef self, TestRef test, int runCount)
{
(void) self;
(void) test;
(void) runCount;
printf(CGREEN "." CDEFAULT);
}
static void ColorOutputter_printFailure(OutputterRef self, TestRef test, char *msg, int line,
char *file, int runCount)
{
(void) self;
(void) runCount;
printf("\n" CRED "FAILED %s (%s:%d) %s" CDEFAULT "\n", Test_name(test), file, line, msg);
}
void ColorOutputter_printStatistics(OutputterRef self, TestResultRef result)
{
(void) self;
if (result->failureCount) {
printf("\n" BGRED SBOLD "FAILED" SDEFAULT " (%d of %d failed)", result->failureCount,
result->runCount);
}
else {
printf("\n" BGGREEN SBOLD "OK" SDEFAULT " (%d tests)", result->runCount);
}
printf(LINEFILL BGDEFAULT "\n");
}
static const OutputterImplement ColorOutputterImplement = {
(OutputterPrintHeaderFunction) ColorOutputter_printHeader,
(OutputterPrintStartTestFunction) ColorOutputter_printStartTest,
(OutputterPrintEndTestFunction) ColorOutputter_printEndTest,
(OutputterPrintSuccessfulFunction) ColorOutputter_printSuccessful,
(OutputterPrintFailureFunction) ColorOutputter_printFailure,
(OutputterPrintStatisticsFunction) ColorOutputter_printStatistics
};
static const Outputter ColorOutputter = {
(OutputterImplementRef) &ColorOutputterImplement
};
OutputterRef ColorOutputter_outputter(void)
{
return (OutputterRef) &ColorOutputter;
}

@ -0,0 +1,57 @@
/*
* Copyright (C) 2015 Janos Kutscherauer <noshky@gmail.com>
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @{
*
* @file
*
* @author Janos Kutscherauer <noshky@gmail.com>
*/
#ifndef __COLORTEXTCOLORS_H__
#define __COLORTEXTCOLORS_H__
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name Terminal color definitions
* C<color>: text color
*
* CDEFAULT: default text color
*
* BG<color>: background color
*
* BGDEFAULT: default background color
*
* S<style>: text style
*
* SDEFAULT: default text style
* @{
*/
#define CRED "\033[31m"
#define CGREEN "\033[32m"
#define CDEFAULT "\033[39m"
#define BGRED "\033[41m"
#define BGGREEN "\033[42m"
#define BGDEFAULT "\033[49m"
#define SBOLD "\033[1m"
#define SDEFAULT "\033[21m"
#define LINEFILL "\033[K"
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif/*__COLORTEXTCOLORS_H__*/
/** @} */

@ -0,0 +1,64 @@
/*
* Copyright (C) 2015 Janos Kutscherauer <noshky@gmail.com>
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
#include <stdio.h>
#include "ColorTextOutputter.h"
#include "ColorOutputter.h"
#include "ColorTextColors.h"
static void ColorTextOutputter_printHeader(OutputterRef self)
{
(void)self;
}
static void ColorTextOutputter_printStartTest(OutputterRef self,TestRef test)
{
(void)self;
printf("- %s\n",Test_name(test));
}
static void ColorTextOutputter_printEndTest(OutputterRef self,TestRef test)
{
(void)self;
(void)test;
}
static void ColorTextOutputter_printSuccessful(OutputterRef self,TestRef test,int runCount)
{
(void)self;
printf(CGREEN "%d) OK %s" CDEFAULT "\n", runCount, Test_name(test));
}
static void ColorTextOutputter_printFailure(OutputterRef self,TestRef test,char *msg,int line,char *file,int runCount)
{
(void)self;
printf(CRED "%d) NG %s" CDEFAULT " (%s:%d) %s\n", runCount, Test_name(test), file, line, msg);
}
void ColorTextOutputter_printStatistics(OutputterRef self,TestResultRef result)
{
ColorOutputter_printStatistics(self, result);
}
static const OutputterImplement ColorTextOutputterImplement = {
(OutputterPrintHeaderFunction) ColorTextOutputter_printHeader,
(OutputterPrintStartTestFunction) ColorTextOutputter_printStartTest,
(OutputterPrintEndTestFunction) ColorTextOutputter_printEndTest,
(OutputterPrintSuccessfulFunction) ColorTextOutputter_printSuccessful,
(OutputterPrintFailureFunction) ColorTextOutputter_printFailure,
(OutputterPrintStatisticsFunction) ColorTextOutputter_printStatistics,
};
static const Outputter ColorTextOutputter = {
(OutputterImplementRef)&ColorTextOutputterImplement,
};
OutputterRef ColorTextOutputter_outputter(void)
{
return (OutputterRef)&ColorTextOutputter;
}

@ -22,9 +22,11 @@
#include "embUnit/embUnit.h"
#ifdef OUTPUT
# define OUTPUT_XML (1)
# define OUTPUT_TEXT (2)
# define OUTPUT_COMPILER (4)
# define OUTPUT_XML (1)
# define OUTPUT_TEXT (2)
# define OUTPUT_COMPILER (4)
# define OUTPUT_COLORTEXT (8)
# define OUTPUT_COLOR (16)
# if (OUTPUT==OUTPUT_XML)
# include "embUnit/XMLOutputter.h"
@ -35,6 +37,12 @@
# elif (OUTPUT==OUTPUT_COMPILER)
# include "embUnit/CompilerOutputter.h"
# define OUTPUTTER (CompilerOutputter_outputter())
# elif (OUTPUT==OUTPUT_COLORTEXT)
# include "embUnit/ColorTextOutputter.h"
# define OUTPUTTER (ColorTextOutputter_outputter())
# elif (OUTPUT==OUTPUT_COLOR)
# include "embUnit/ColorOutputter.h"
# define OUTPUTTER (ColorOutputter_outputter())
# endif
# include "embUnit/TextUIRunner.h"

@ -0,0 +1,45 @@
/*
* Copyright (C) 2015 Janos Kutscherauer <noshky@gmail.com>
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @{
*
* @file
*
* @author Janos Kutscherauer <noshky@gmail.com>
*/
#ifndef __COLOROUTPUTTER_H__
#define __COLOROUTPUTTER_H__
#include "Outputter.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief embUnit coloured output formatter
*
* @return pointer to the OutputterImplement struct for this outputter
*/
OutputterRef ColorOutputter_outputter(void);
/**
* @brief coloured output formatter for test statistics
*
* @param[in] self pointer to the used OutputterImplement
* @param[in] result the test results to print
*/
void ColorOutputter_printStatistics(OutputterRef self, TestResultRef result);
#ifdef __cplusplus
}
#endif
#endif/*__COLOROUTPUTTER_H__*/
/** @} */

@ -0,0 +1,30 @@
/*
* Copyright (C) 2015 Janos Kutscherauer <noshky@gmail.com>
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @{
*
* @file ColorTextOutputter.h
*/
#ifndef __COLORTEXTOUTPUTTER_H__
#define __COLORTEXTOUTPUTTER_H__
#include "Outputter.h"
#ifdef __cplusplus
extern "C" {
#endif
OutputterRef ColorTextOutputter_outputter(void);
#ifdef __cplusplus
}
#endif
#endif/*__COLORTEXTOUTPUTTER_H__*/
/** @} */

@ -30,6 +30,8 @@ Other output formats using [*embUnit*](http://embunit.sourceforge.net/)'s ``text
* Compiler: ``OUTPUT="COMPILER"``
* Text: ``OUTPUT="TEXT"``
* XML: ``OUTPUT="XML"``
* Color: ``OUTPUT="COLOR"`` (like default, but with red/green output)
* Colored-Text: ``OUTPUT="COLORTEXT"`` (like ``TEXT``, but with red/green output)
#### Compile example
```bash

Loading…
Cancel
Save