[PATCH 0/1] MR3935: user32/tests: Use a child window for test_PeekMessage3.
From: Esme Povirk <esme(a)codeweavers.com> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54026 --- dlls/user32/tests/msg.c | 71 ++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 33 deletions(-) diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c index 7bf3c14d9f0..9d2cc404139 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c @@ -13988,119 +13988,124 @@ done: static void test_PeekMessage3(void) { - HWND hwnd; + HWND parent_hwnd, hwnd; BOOL ret; MSG msg; - hwnd = CreateWindowA("TestWindowClass", "PeekMessage3", WS_OVERLAPPEDWINDOW, + parent_hwnd = CreateWindowA("SimpleWindowClass", "PeekMessage3", WS_OVERLAPPEDWINDOW, 10, 10, 800, 800, NULL, NULL, NULL, NULL); + ok(parent_hwnd != NULL, "expected parent_hwnd != NULL\n"); + + hwnd = CreateWindowA("TestWindowClass", "PeekMessage3", WS_CHILD, 0, 0, 1, 1, + parent_hwnd, NULL, NULL, NULL); ok(hwnd != NULL, "expected hwnd != NULL\n"); + flush_events(); /* GetMessage() and PeekMessage(..., PM_REMOVE) should prefer messages which * were already seen. */ SetTimer(hwnd, 1, 100, NULL); - while (!PeekMessageA(&msg, NULL, 0, 0, PM_NOREMOVE)); + while (!PeekMessageA(&msg, hwnd, 0, 0, PM_NOREMOVE)); ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); PostMessageA(hwnd, WM_USER, 0, 0); - ret = PeekMessageA(&msg, NULL, 0, 0, PM_NOREMOVE); + ret = PeekMessageA(&msg, hwnd, 0, 0, PM_NOREMOVE); todo_wine ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); - ret = GetMessageA(&msg, NULL, 0, 0); + ret = GetMessageA(&msg, hwnd, 0, 0); todo_wine ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); - ret = GetMessageA(&msg, NULL, 0, 0); + ret = GetMessageA(&msg, hwnd, 0, 0); todo_wine ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); - ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ret = PeekMessageA(&msg, hwnd, 0, 0, 0); ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); SetTimer(hwnd, 1, 100, NULL); - while (!PeekMessageA(&msg, NULL, 0, 0, PM_NOREMOVE)); + while (!PeekMessageA(&msg, hwnd, 0, 0, PM_NOREMOVE)); ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); PostMessageA(hwnd, WM_USER, 0, 0); - ret = PeekMessageA(&msg, NULL, 0, 0, PM_REMOVE); + ret = PeekMessageA(&msg, hwnd, 0, 0, PM_REMOVE); todo_wine ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); - ret = PeekMessageA(&msg, NULL, 0, 0, PM_REMOVE); + ret = PeekMessageA(&msg, hwnd, 0, 0, PM_REMOVE); todo_wine ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); - ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ret = PeekMessageA(&msg, hwnd, 0, 0, 0); ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); /* It doesn't matter if a message range is specified or not. */ SetTimer(hwnd, 1, 100, NULL); - while (!PeekMessageA(&msg, NULL, WM_TIMER, WM_TIMER, PM_NOREMOVE)); + while (!PeekMessageA(&msg, hwnd, WM_TIMER, WM_TIMER, PM_NOREMOVE)); ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); PostMessageA(hwnd, WM_USER, 0, 0); - ret = GetMessageA(&msg, NULL, 0, 0); + ret = GetMessageA(&msg, hwnd, 0, 0); todo_wine ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); - ret = GetMessageA(&msg, NULL, 0, 0); + ret = GetMessageA(&msg, hwnd, 0, 0); todo_wine ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); - ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ret = PeekMessageA(&msg, hwnd, 0, 0, 0); ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); /* But not if the post messages were added before the PeekMessage() call. */ PostMessageA(hwnd, WM_USER, 0, 0); SetTimer(hwnd, 1, 100, NULL); - while (!PeekMessageA(&msg, NULL, WM_TIMER, WM_TIMER, PM_NOREMOVE)); + while (!PeekMessageA(&msg, hwnd, WM_TIMER, WM_TIMER, PM_NOREMOVE)); ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); - ret = GetMessageA(&msg, NULL, 0, 0); + ret = GetMessageA(&msg, hwnd, 0, 0); ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); - ret = GetMessageA(&msg, NULL, 0, 0); + ret = GetMessageA(&msg, hwnd, 0, 0); ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); - ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ret = PeekMessageA(&msg, hwnd, 0, 0, 0); ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); /* More complicated test with multiple messages. */ PostMessageA(hwnd, WM_USER, 0, 0); SetTimer(hwnd, 1, 100, NULL); - while (!PeekMessageA(&msg, NULL, WM_TIMER, WM_TIMER, PM_NOREMOVE)); + while (!PeekMessageA(&msg, hwnd, WM_TIMER, WM_TIMER, PM_NOREMOVE)); ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); PostMessageA(hwnd, WM_USER + 1, 0, 0); - ret = GetMessageA(&msg, NULL, 0, 0); + ret = GetMessageA(&msg, hwnd, 0, 0); ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); - ret = GetMessageA(&msg, NULL, 0, 0); + ret = GetMessageA(&msg, hwnd, 0, 0); todo_wine ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); - ret = GetMessageA(&msg, NULL, 0, 0); + ret = GetMessageA(&msg, hwnd, 0, 0); todo_wine ok(ret && msg.message == WM_USER + 1, "msg.message = %u instead of WM_USER + 1\n", msg.message); - ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ret = PeekMessageA(&msg, hwnd, 0, 0, 0); ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); /* Also works for posted messages, but the situation is a bit different, * because both messages are in the same queue. */ PostMessageA(hwnd, WM_TIMER, 0, 0); - while (!PeekMessageA(&msg, NULL, WM_TIMER, WM_TIMER, PM_NOREMOVE)); + while (!PeekMessageA(&msg, hwnd, WM_TIMER, WM_TIMER, PM_NOREMOVE)); ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); PostMessageA(hwnd, WM_USER, 0, 0); - ret = GetMessageA(&msg, NULL, 0, 0); + ret = GetMessageA(&msg, hwnd, 0, 0); ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); - ret = GetMessageA(&msg, NULL, 0, 0); + ret = GetMessageA(&msg, hwnd, 0, 0); ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); - ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ret = PeekMessageA(&msg, hwnd, 0, 0, 0); ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); PostMessageA(hwnd, WM_USER, 0, 0); PostMessageA(hwnd, WM_TIMER, 0, 0); - while (!PeekMessageA(&msg, NULL, WM_TIMER, WM_TIMER, PM_NOREMOVE)); + while (!PeekMessageA(&msg, hwnd, WM_TIMER, WM_TIMER, PM_NOREMOVE)); ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); - ret = GetMessageA(&msg, NULL, 0, 0); + ret = GetMessageA(&msg, hwnd, 0, 0); ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); - ret = GetMessageA(&msg, NULL, 0, 0); + ret = GetMessageA(&msg, hwnd, 0, 0); ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); - ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ret = PeekMessageA(&msg, hwnd, 0, 0, 0); ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); - DestroyWindow(hwnd); + DestroyWindow(parent_hwnd); flush_events(); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/3935
Hi, It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated. The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=137777 Your paranoid android. === w7pro64 (64 bit report) === user32: msg.c:8938: Test failed: SetWindowPos:FrameChanged_clip: 2: the msg 0x0085 was expected in parent msg.c:8938: Test failed: SetWindowPos:FrameChanged_clip: 4: the msg 0x0014 was expected in parent msg.c:8938: Test failed: SetWindowPos:FrameChanged_clip: 5: the msg 0x0085 was expected, but got msg 0x0047 instead msg.c:8938: Test failed: SetWindowPos:FrameChanged_clip: 6: the msg 0x0014 was expected, but got msg 0x0047 instead msg.c:8948: Test failed: SetWindowPos:FrameChangedDeferErase: 4: the msg 0x000f was expected in parent msg.c:8948: Test failed: SetWindowPos:FrameChangedDeferErase: 5: the msg 0x0085 was expected in parent msg.c:8948: Test failed: SetWindowPos:FrameChangedDeferErase: 6: the msg sequence is not complete: expected msg 000f - actual msg 0000 msg.c:8976: Test failed: SetWindowPos:FrameChangedDeferErase: 4: the msg 0x000f was expected in parent msg.c:8976: Test failed: SetWindowPos:FrameChangedDeferErase: 5: the msg 0x0085 was expected in parent msg.c:8976: Test failed: SetWindowPos:FrameChangedDeferErase: 6: the msg sequence is not complete: expected msg 000f - actual msg 0000
participants (3)
-
Esme Povirk -
Esme Povirk (@madewokherd) -
Marvin