[ROSAUTOTEST]

- Disable error dialogs unless running in interactive mode
ONLINE-441

svn path=/trunk/; revision=66506
This commit is contained in:
Thomas Faber 2015-02-28 21:29:44 +00:00
parent 1d174e03c2
commit 99126ff14b
3 changed files with 22 additions and 1 deletions

View file

@ -17,17 +17,22 @@ typedef void (WINAPI *GETSYSINFO)(LPSYSTEM_INFO);
*/ */
CConfiguration::CConfiguration() CConfiguration::CConfiguration()
: m_CrashRecovery(false), : m_CrashRecovery(false),
m_IsInteractive(false),
m_PrintToConsole(true), m_PrintToConsole(true),
m_Shutdown(false), m_Shutdown(false),
m_Submit(false) m_Submit(false)
{ {
WCHAR WindowsDirectory[MAX_PATH]; WCHAR WindowsDirectory[MAX_PATH];
WCHAR Interactive[32];
/* Check if we are running under ReactOS from the SystemRoot directory */ /* Check if we are running under ReactOS from the SystemRoot directory */
if(!GetWindowsDirectoryW(WindowsDirectory, MAX_PATH)) if(!GetWindowsDirectoryW(WindowsDirectory, MAX_PATH))
FATAL("GetWindowsDirectoryW failed"); FATAL("GetWindowsDirectoryW failed");
m_IsReactOS = !_wcsnicmp(&WindowsDirectory[3], L"reactos", 7); m_IsReactOS = !_wcsnicmp(&WindowsDirectory[3], L"reactos", 7);
if(GetEnvironmentVariableW(L"WINETEST_INTERACTIVE", Interactive, _countof(Interactive)))
m_IsInteractive = _wtoi(Interactive);
} }
/** /**

View file

@ -9,6 +9,7 @@ class CConfiguration
{ {
private: private:
bool m_CrashRecovery; bool m_CrashRecovery;
bool m_IsInteractive;
bool m_IsReactOS; bool m_IsReactOS;
bool m_PrintToConsole; bool m_PrintToConsole;
bool m_Shutdown; bool m_Shutdown;
@ -30,6 +31,7 @@ public:
bool DoPrint() const { return m_PrintToConsole; } bool DoPrint() const { return m_PrintToConsole; }
bool DoShutdown() const { return m_Shutdown; } bool DoShutdown() const { return m_Shutdown; }
bool DoSubmit() const { return m_Submit; } bool DoSubmit() const { return m_Submit; }
bool IsInteractive() const { return m_IsInteractive; }
bool IsReactOS() const { return m_IsReactOS; } bool IsReactOS() const { return m_IsReactOS; }
const string& GetComment() const { return m_Comment; } const string& GetComment() const { return m_Comment; }
const wstring& GetModule() const { return m_Module; } const wstring& GetModule() const { return m_Module; }

View file

@ -248,9 +248,14 @@ CWineTest::GetNextTestInfo()
} }
catch(CTestException& e) 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(e.GetMessage());
StringOut("\n");
m_CurrentFile.clear(); m_CurrentFile.clear();
delete[] m_ListBuffer;
} }
} }
@ -327,6 +332,7 @@ CWineTest::Run()
auto_ptr<CTestList> TestList; auto_ptr<CTestList> TestList;
auto_ptr<CWebService> WebService; auto_ptr<CWebService> WebService;
CTestInfo* TestInfo; CTestInfo* TestInfo;
DWORD ErrorMode;
/* The virtual test list is of course faster, so it should be preferred over /* The virtual test list is of course faster, so it should be preferred over
the journaled one. the journaled one.
@ -349,6 +355,10 @@ CWineTest::Run()
if(Configuration.DoSubmit()) if(Configuration.DoSubmit())
WebService.reset(new CWebService()); 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 */ /* Get information for each test to run */
while((TestInfo = TestList->GetNextTestInfo()) != 0) while((TestInfo = TestList->GetNextTestInfo()) != 0)
{ {
@ -361,4 +371,8 @@ CWineTest::Run()
StringOut("\n\n"); StringOut("\n\n");
} }
/* Restore the original error mode */
if(!Configuration.IsInteractive())
SetErrorMode(ErrorMode);
} }