2323#include " library.h"
2424#include " options.h"
2525#include " redirect.h"
26+ #include " timer.h"
2627
2728#include < algorithm>
2829#include < cstdio>
@@ -88,6 +89,7 @@ TestFixture::TestFixture(const char * const _name)
8889 : classname(_name)
8990{}
9091
92+ TestFixture::~TestFixture () = default ;
9193
9294bool TestFixture::prepareTest (const char testname[])
9395{
@@ -101,12 +103,14 @@ bool TestFixture::prepareTest(const char testname[])
101103 // Tests will be executed - prepare them
102104 mTestname = testname;
103105 ++countTests;
106+ std::string fullTestName = classname + " ::" + mTestname ;
104107 if (quiet_tests) {
105108 std::putchar (' .' ); // Use putchar to write through redirection of std::cout/cerr
106109 std::fflush (stdout);
107110 } else {
108- std::cout << classname << " :: " << mTestname << std::endl;
111+ std::cout << fullTestName << std::endl;
109112 }
113+ mTimer .reset (new Timer (fullTestName, ShowTime::TOP5_SUMMARY, timerResults));
110114 return !dry_run;
111115 }
112116 return false ;
@@ -116,6 +120,10 @@ void TestFixture::teardownTest()
116120{
117121 teardownTestInternal ();
118122
123+ // TODO: print more detailed data
124+ if (mTimer )
125+ mTimer ->stop ();
126+
119127 {
120128 const std::string s = errout_str ();
121129 if (!s.empty ())
@@ -381,6 +389,7 @@ void TestFixture::processOptions(const options& args)
381389 quiet_tests = args.quiet ();
382390 dry_run = args.dry_run ();
383391 exename = args.exe ();
392+ timerResults = args.timer_results ();
384393}
385394
386395std::size_t TestFixture::runTests (const options& args)
@@ -405,10 +414,12 @@ std::size_t TestFixture::runTests(const options& args)
405414 continue ;
406415 }
407416
408- TestFixture* fixture = test->create ();
409- fixture->processOptions (args);
410- fixture->run (testname);
411- }
417+ TestFixture* fixture;
418+ Timer::run (test->classname + " - create" , ShowTime::TOP5_SUMMARY, args.timer_results (), [&](){
419+ fixture = test->create ();
420+ });
421+ fixture->processOptions (args);
422+ fixture->run (testname);
412423 }
413424
414425 if (args.summary () && !args.dry_run ()) {
0 commit comments