[ROSAUTOTEST]
[reactos.git] / rostests / rosautotest / CWineTest.cpp
index 976343b..119b87d 100644 (file)
@@ -178,7 +178,7 @@ CWineTest::GetNextTest()
         m_CurrentFile.clear();
 
         /* Also free the memory for the list buffer */
-        delete m_ListBuffer;
+        delete[] m_ListBuffer;
         m_ListBuffer = NULL;
 
         return false;
@@ -263,11 +263,16 @@ CWineTest::RunTest(CTestInfo* TestInfo)
     bool BreakLoop = false;
     DWORD BytesAvailable;
     DWORD Temp;
-    stringstream ss;
+    stringstream ss, ssFinish;
+    DWORD StartTime = GetTickCount();
+    float TotalTime;
+    string tailString;
 
     ss << "Running Wine Test, Module: " << TestInfo->Module << ", Test: " << TestInfo->Test << endl;
     StringOut(ss.str());
 
+    StartTime = GetTickCount();
+
     {
         /* Execute the test */
         CProcess Process(TestInfo->CommandLine, &m_StartupInfo);
@@ -295,9 +300,9 @@ CWineTest::RunTest(CTestInfo* TestInfo)
                 if(!ReadFile(m_hReadPipe, Buffer, BytesAvailable, &Temp, NULL))
                     FATAL("ReadFile failed for the test run\n");
 
-                /* Output all test output through StringOut, even while the test is still running */
+                /* Output text through StringOut, even while the test is still running */
                 Buffer[BytesAvailable] = 0;
-                StringOut(string(Buffer));
+                tailString = StringOut(tailString.append(string(Buffer)), false);
 
                 if(Configuration.DoSubmit())
                     TestInfo->Log += Buffer;
@@ -305,6 +310,15 @@ CWineTest::RunTest(CTestInfo* TestInfo)
         }
         while(!BreakLoop);
     }
+
+    /* Print what's left */
+    if(!tailString.empty())
+        StringOut(tailString);
+
+    TotalTime = ((float)GetTickCount() - StartTime)/1000;
+    ssFinish << "Test " << TestInfo->Test << " completed in ";
+    ssFinish << setprecision(2) << fixed << TotalTime << " seconds." << endl;
+    StringOut(ssFinish.str());
 }
 
 /**