| /* |
| * Copyright 2018 NXP |
| * All rights reserved. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| /* ************************************************************************** */ |
| /* Includes */ |
| /* ************************************************************************** */ |
| |
| #include <time.h> |
| #include "sm_printf.h" |
| #include "stdio.h" |
| #include "string.h" |
| #include "tst_sm_time.h" |
| #include "unity_fixture.h" |
| #include "unity_internals.h" |
| |
| /* ************************************************************************** */ |
| /* Local Defines */ |
| /* ************************************************************************** */ |
| |
| /* ************************************************************************** */ |
| /* Structures and Typedefs */ |
| /* ************************************************************************** */ |
| |
| /* ************************************************************************** */ |
| /* Global Variables */ |
| /* ************************************************************************** */ |
| |
| #if !AX_EMBEDDED |
| static const char *szPASS = "PASS"; |
| static const char *szIGNORED = "IGNORED"; |
| static const char *szFAILED = "FAILED"; |
| #endif |
| |
| static const char *gUnity_LastFailureMessage; |
| static UNITY_LINE_TYPE gUnity_LastFailureFine; |
| static axTimeMeasurement_t exec_time; |
| |
| |
| /* ************************************************************************** */ |
| /* Static function declarations */ |
| /* ************************************************************************** */ |
| |
| |
| /* ************************************************************************** */ |
| /* Public Functions */ |
| /* ************************************************************************** */ |
| void UnityAddin_ConcludeFixture(const char *printableName, |
| const char *group, |
| const char *name, |
| const char *file, |
| unsigned int line) |
| { |
| long timetaken = 0; |
| concludeMeasurement(&exec_time); |
| timetaken = getMeasurement(&exec_time); |
| |
| #if AX_EMBEDDED |
| PRINTF("Exec time for :%s:%s = %ldms\r\n", group, name, timetaken); |
| #else |
| FILE *fp = fopen("unity_log.csv", "a+"); |
| const char *test_status = szPASS; |
| const char *msg = ""; |
| |
| if (gUnity_LastFailureMessage != NULL) { |
| msg = gUnity_LastFailureMessage; |
| } |
| if (gUnity_LastFailureFine != 0) { |
| line = gUnity_LastFailureFine; |
| } |
| if (NULL == fp) { |
| return; |
| } |
| |
| if (Unity.CurrentTestFailed) |
| test_status = szFAILED; |
| else if (Unity.CurrentTestIgnored) |
| test_status = szIGNORED; |
| |
| fprintf(fp, |
| "%s,%d,%s,%s,\"%s\",%s,%ld,%ld,\"%s\"\n", |
| file, |
| line, |
| group, |
| name, |
| printableName, |
| test_status, |
| (long)exec_time.tStart.tv_sec, |
| (long)exec_time.tEnd.tv_sec, |
| msg |
| ); |
| fclose(fp); |
| #endif |
| } |
| |
| void UnityAddin_SetMessage(const char *msg, const UNITY_LINE_TYPE line) |
| { |
| if ( msg == NULL && line == 0) { |
| initMeasurement(&exec_time); |
| } |
| gUnity_LastFailureMessage = msg; |
| gUnity_LastFailureFine = line; |
| } |
| |
| void UnityAddin_AnnounceFilters() { |
| if (UnityFixture.NameFilter && UnityFixture.Verbose) |
| { |
| printf("############################################################\n"); |
| printf("Unity NameFiler = '%s'\n", UnityFixture.NameFilter); |
| printf("############################################################\n"); |
| } |
| |
| if (UnityFixture.GroupFilter && UnityFixture.Verbose) |
| { |
| printf("############################################################\n"); |
| printf("Unity NameFiler = '%s'\n", UnityFixture.GroupFilter); |
| printf("############################################################\n"); |
| } |
| } |
| |