integration-test/custom_test_runner/custom_unity_runner.c (57 lines of code) (raw):
#include "custom_unity_runner.h"
static int selected( const char * filter,
const char * name )
{
if( filter == 0 )
{
return 1;
}
return strstr( name, filter ) ? 1 : 0;
}
static int testSelected( const char * test )
{
return selected( UnityFixture.NameFilter, test );
}
static int groupSelected( const char * group )
{
return selected( UnityFixture.GroupFilter, group );
}
void CustomUnityTestRunner( unityfunction * setup,
unityfunction * testBody,
unityfunction * teardown,
const char * printableName,
const char * group,
const char * name,
const char * file,
unsigned int line )
{
if( testSelected( name ) && groupSelected( group ) )
{
Unity.TestFile = file;
Unity.CurrentTestName = printableName;
Unity.CurrentTestLineNumber = line;
Unity.NumberOfTests++;
UnityMalloc_StartTest();
UnityPointer_Init();
UNITY_EXEC_TIME_START();
if( TEST_PROTECT() )
{
setup();
testBody();
}
if( TEST_PROTECT() )
{
teardown();
}
if( TEST_PROTECT() )
{
UnityPointer_UndoAllSets();
if( !Unity.CurrentTestFailed )
{
UnityMalloc_EndTest();
}
}
UNITY_EXEC_TIME_STOP();
UnityConcludeTest();
}
}