4141#define LT_BEGIN_AUTO_TEST_ENV () LT_BEGIN_TEST_ENV()
4242
4343#define LT_END_AUTO_TEST_ENV () \
44- return !littletest::auto_test_result ; \
44+ return result ; \
4545 }
4646
4747#define AUTORUN_TESTS () \
4848 std::vector<littletest::test_base*>::iterator autorun_it; \
4949 for (autorun_it = littletest::auto_test_vector.begin(); autorun_it != littletest::auto_test_vector.end(); ++autorun_it) \
5050 littletest::auto_test_runner ((*autorun_it)); \
51- littletest::auto_test_runner ();
51+ int result = littletest::auto_test_runner();
5252
5353#define LT_TEST (name ) name ## _obj
5454
@@ -345,17 +345,16 @@ double calculate_duration(timeval* before, timeval* after)
345345class test_base ;
346346
347347std::vector<test_base*> auto_test_vector;
348- bool auto_test_result = true ;
349348
350349struct test_runner
351350{
352351 public:
353352 test_runner () :
353+ last_checkpoint_file (" " ),
354+ last_checkpoint_line (-1 ),
354355 test_counter (1 ),
355356 success_counter (0 ),
356357 failures_counter (0 ),
357- last_checkpoint_file (" " ),
358- last_checkpoint_line (-1 ),
359358 good_time_total (0.0 ),
360359 total_set_up_time (0.0 ),
361360 total_tear_down_time (0.0 ),
@@ -382,7 +381,20 @@ struct test_runner
382381 return run (t);
383382 }
384383
385- test_runner& operator ()()
384+ void clear_runner ()
385+ {
386+ last_checkpoint_file = " " ;
387+ last_checkpoint_line = -1 ;
388+ test_counter = 1 ;
389+ success_counter = 0 ;
390+ failures_counter = 0 ;
391+ good_time_total = 0.0 ,
392+ total_set_up_time = 0.0 ;
393+ total_tear_down_time = 0.0 ;
394+ total_time = 0.0 ;
395+ }
396+
397+ int operator ()()
386398 {
387399 std::cout << " ** Runner terminated! **" << std::endl;
388400 std::cout << (test_counter - 1 ) << " tests executed" << std::endl;
@@ -393,12 +405,14 @@ struct test_runner
393405 std::cout << " Total time spent in tests: " << good_time_total << " ms" << std::endl;
394406 std::cout << " Average set up time: " << (total_set_up_time / test_counter) << " ms" << std::endl;
395407 std::cout << " Average tear down time: " << (total_tear_down_time / test_counter) << " ms" << std::endl;
408+ int to_ret = failures_counter;
409+ clear_runner ();
410+ return to_ret;
396411 }
397412
398413 void add_failure ()
399414 {
400415 failures_counter++;
401- auto_test_result = false ;
402416 }
403417
404418 void add_success ()
0 commit comments