https://git.reactos.org/?p=reactos.git;a=commitdiff;h=b77840d3a22f370fce5f9b...
commit b77840d3a22f370fce5f9b77c6af42f91ff65235 Author: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org AuthorDate: Sat Feb 17 16:02:22 2018 +0100 Commit: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org CommitDate: Sat Feb 17 16:02:22 2018 +0100
[SHELL32_APITEST] Run the CUserNotification worker test function in a thread to copy with possible test timeouts. CORE-13177 --- .../apitests/shell32/CUserNotification.cpp | 32 +++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-)
diff --git a/modules/rostests/apitests/shell32/CUserNotification.cpp b/modules/rostests/apitests/shell32/CUserNotification.cpp index b10185cee9..acfd6023a8 100644 --- a/modules/rostests/apitests/shell32/CUserNotification.cpp +++ b/modules/rostests/apitests/shell32/CUserNotification.cpp @@ -171,9 +171,39 @@ TestNotification(void) ok_hr(hr, S_FALSE); }
-START_TEST(CUserNotification) +DWORD +CALLBACK +TestThread(LPVOID lpParam) { + /* Initialize COM */ CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + + /* Start the test */ TestNotification(); + + /* Cleanup and return */ CoUninitialize(); + return 0; +} + +START_TEST(CUserNotification) +{ + HANDLE hThread; + DWORD dwWait; + + /* We create a test thread, because the notification tests can hang */ + hThread = CreateThread(NULL, 0, TestThread, NULL, 0, NULL); + ok(hThread != NULL, "CreateThread failed with error 0x%lu\n", GetLastError()); + if (!hThread) + { + skip("Could not create the CUserNotification test thread!"); + return; + } + + /* Wait a maximum of 1:30 for the thread to finish (the timeout tests take some time) */ + dwWait = WaitForSingleObject(hThread, 90 * 1000); + ok(dwWait == WAIT_OBJECT_0, "WaitForSingleObject returned %lu, expected WAIT_OBJECT_0\n", dwWait); + + /* Cleanup and return */ + CloseHandle(hThread); }