@@ -68,24 +68,50 @@ static void codewars_reporter_start_suite(TestReporter *reporter, const char *na
6868static void codewars_reporter_start_test (TestReporter * reporter , const char * name ) {
6969 printf ("\n<IT::>%s\n" , name );
7070 reporter_start_test (reporter , name );
71+ reporter -> passes = 0 ;
72+ reporter -> failures = 0 ;
73+ reporter -> skips = 0 ;
74+ reporter -> exceptions = 0 ;
7175 push_ts ((struct ts_node * * )& reporter -> memo );
7276}
7377
74- static void codewars_show_pass (TestReporter * reporter , const char * file , int line , const char * message , va_list arguments ) {
75- printf ("\n<PASSED::>Test Passed\n" );
76- }
77-
78- static void codewars_show_fail (TestReporter * reporter , const char * file , int line , const char * message , va_list arguments ) {
78+ static void codewars_reporter_show_fail (TestReporter * reporter , const char * file , int line , const char * message , va_list arguments ) {
7979 printf ("\n<FAILED::>" );
8080 char * escaped_message = create_codewars_escape_message (message );
8181 vprintf (escaped_message , arguments );
8282 free (escaped_message );
8383 printf ("\n" );
8484}
8585
86+ // When a test fails to complete
87+ static void codewars_reporter_show_incomplete (TestReporter * reporter , const char * file , int line , const char * message , va_list arguments ) {
88+ printf ("\n<ERROR::>" );
89+ if (message == NULL ) {
90+ printf ("Test Terminated Unexpectedly" );
91+ } else {
92+ char * escaped_message = create_codewars_escape_message (message );
93+ vprintf (escaped_message , arguments );
94+ free (escaped_message );
95+ }
96+ printf ("\n" );
97+ }
98+
8699static void codewars_reporter_finish_test (TestReporter * reporter , const char * filename , int line , const char * message ) {
87100 clock_t ts_diff = clock () - pop_ts ((struct ts_node * * )& reporter -> memo );
101+ // This function increments passes/failures counts.
88102 reporter_finish_test (reporter , filename , line , message );
103+ if (reporter -> failures == 0 && reporter -> exceptions == 0 && reporter -> skips == 0 ) {
104+ if (reporter -> passes > 0 ) {
105+ printf ("\n<PASSED::>Test Passed\n" );
106+ } else {
107+ printf ("\n<ERROR::>Missing Assertions\n" );
108+ }
109+ }
110+ // Increment the totals. `total_failures` is used to determine the exit code.
111+ reporter -> total_passes += reporter -> passes ;
112+ reporter -> total_failures += reporter -> failures ;
113+ reporter -> total_skips += reporter -> skips ;
114+ reporter -> total_exceptions += reporter -> exceptions ;
89115 printf ("\n<COMPLETEDIN::>%ld\n" , 1000 * ts_diff / CLOCKS_PER_SEC );
90116}
91117
@@ -99,8 +125,8 @@ TestReporter *create_codewars_reporter() {
99125 TestReporter * reporter = create_reporter ();
100126 reporter -> start_suite = & codewars_reporter_start_suite ;
101127 reporter -> start_test = & codewars_reporter_start_test ;
102- reporter -> show_pass = & codewars_show_pass ;
103- reporter -> show_fail = & codewars_show_fail ;
128+ reporter -> show_fail = & codewars_reporter_show_fail ;
129+ reporter -> show_incomplete = & codewars_reporter_show_incomplete ;
104130 reporter -> finish_test = & codewars_reporter_finish_test ;
105131 reporter -> finish_suite = & codewars_reporter_finish_suite ;
106132 reporter -> memo = NULL ;
0 commit comments