[ROSAUTOTEST]
authorThomas Faber <thomas.faber@reactos.org>
Sat, 28 Feb 2015 21:29:44 +0000 (21:29 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Sat, 28 Feb 2015 21:29:44 +0000 (21:29 +0000)
- Disable error dialogs unless running in interactive mode
ONLINE-441

svn path=/trunk/; revision=66506

rostests/rosautotest/CConfiguration.cpp
rostests/rosautotest/CConfiguration.h
rostests/rosautotest/CWineTest.cpp

index 2eb3799..96d3e85 100644 (file)
@@ -17,17 +17,22 @@ typedef void (WINAPI *GETSYSINFO)(LPSYSTEM_INFO);
  */
 CConfiguration::CConfiguration()
     : m_CrashRecovery(false),
+      m_IsInteractive(false),
       m_PrintToConsole(true),
       m_Shutdown(false),
       m_Submit(false)
 {
     WCHAR WindowsDirectory[MAX_PATH];
+    WCHAR Interactive[32];
 
     /* Check if we are running under ReactOS from the SystemRoot directory */
     if(!GetWindowsDirectoryW(WindowsDirectory, MAX_PATH))
         FATAL("GetWindowsDirectoryW failed");
 
     m_IsReactOS = !_wcsnicmp(&WindowsDirectory[3], L"reactos", 7);
+
+    if(GetEnvironmentVariableW(L"WINETEST_INTERACTIVE", Interactive, _countof(Interactive)))
+        m_IsInteractive = _wtoi(Interactive);
 }
 
 /**
index a5f5ea2..be94bc7 100644 (file)
@@ -9,6 +9,7 @@ class CConfiguration
 {
 private:
     bool m_CrashRecovery;
+    bool m_IsInteractive;
     bool m_IsReactOS;
     bool m_PrintToConsole;
     bool m_Shutdown;
@@ -30,6 +31,7 @@ public:
     bool DoPrint() const { return m_PrintToConsole; }
     bool DoShutdown() const { return m_Shutdown; }
     bool DoSubmit() const { return m_Submit; }
+    bool IsInteractive() const { return m_IsInteractive; }
     bool IsReactOS() const { return m_IsReactOS; }
     const string& GetComment() const { return m_Comment; }
     const wstring& GetModule() const { return m_Module; }
index fd949db..0432ae2 100644 (file)
@@ -248,9 +248,14 @@ CWineTest::GetNextTestInfo()
         }
         catch(CTestException& e)
         {
-            delete[] m_ListBuffer;
+            stringstream ss;
+
+            ss << "An exception occurred trying to list tests for: " << UnicodeToAscii(m_CurrentFile) << endl;
+            StringOut(ss.str());
             StringOut(e.GetMessage());
+            StringOut("\n");
             m_CurrentFile.clear();
+            delete[] m_ListBuffer;
         }
     }
 
@@ -327,6 +332,7 @@ CWineTest::Run()
     auto_ptr<CTestList> TestList;
     auto_ptr<CWebService> WebService;
     CTestInfo* TestInfo;
+    DWORD ErrorMode;
 
     /* The virtual test list is of course faster, so it should be preferred over
        the journaled one.
@@ -349,6 +355,10 @@ CWineTest::Run()
     if(Configuration.DoSubmit())
         WebService.reset(new CWebService());
 
+    /* Disable error dialogs if we're running in non-interactive mode */
+    if(!Configuration.IsInteractive())
+        ErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);
+
     /* Get information for each test to run */
     while((TestInfo = TestList->GetNextTestInfo()) != 0)
     {
@@ -361,4 +371,8 @@ CWineTest::Run()
 
         StringOut("\n\n");
     }
+
+    /* Restore the original error mode */
+    if(!Configuration.IsInteractive())
+        SetErrorMode(ErrorMode);
 }