https://git.reactos.org/?p=reactos.git;a=commitdiff;h=b77840d3a22f370fce5f9…
commit b77840d3a22f370fce5f9b77c6af42f91ff65235
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Sat Feb 17 16:02:22 2018 +0100
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)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);
}