user32/tests: Mark built-in wndproc auto-detection behaviour as broken on Windows 8 and 10.

Dmitry Timoshkov dmitry at baikal.ru
Wed Nov 23 08:30:21 CST 2016


Huw Davies <huw at codeweavers.com> wrote:

> >>>>>> +    SendMessageW(hwnd, WM_GETTEXT, sizeof(buf) / sizeof(buf[0]), (LPARAM)buf);
> >>>>>> +    if (IsWindowUnicode(hwnd))
> >>>>>> +        ok(memcmp(buf, unistring, sizeof(unistring)) == 0, "WM_GETTEXT invalid return\n");
> >>>>>> +    else
> >>>>>> +        ok(memcmp(buf, unistring, sizeof(unistring)) != 0, "WM_GETTEXT invalid return\n");
> >>>>> 
> >>>>> This doesn't look right. SendMessageW(WM_GETTEXT) is supposed to always
> >>>>> return a unicode string regardless of wheather IsWindowUnicode() is broken
> >>>>> or not, otherwise a lot of applications would misbehave in weird ways.
> >>>>> This needs further investigation.
> >>>> 
> >>>> Exactly, the reason I added that bit was to show that this behaviour
> >>>> is truly broken.
> >>> 
> >>> Sorry, but I can't believe that such a basic functionality like returning
> >>> a unicode string using SendMessageW(WM_GETTEXT) is actually broken. Any UI
> >>> uses it to retrieve and pass strings around for various purposes from getting
> >>> username/password/regisration to getting random user input, so if it would be
> >>> broken that would mean a lot of applications/installers/UI libraries/etc. were
> >>> broken, and that wouldn't stay unnoticed.
> >> 
> >> This is a very unique situation (look at how the window in this test is created).
> >> It certainly does not apply to all windows.
> >> 
> >> It’s difficult to know why this test was added in the first place.  Any application
> >> that actually relies on this behaviour would have been broken in Windows 8.
> > 
> > There should be a better way of detecting broken behaviour then, in current
> > form the failures just get hidden under a broken() blanket, effectively
> > disabling the whole test, and making it useless. Perhaps something like
> > the check for ntdll exports that's performed at the start of the test.
> 
> I don’t see why this case is any different from other similar broken behaviours.
> Note that under Wine, broken is inverted, so the test is not ‘disabled' on that
> platform.

I'm more concerned about testing Windows behaviour, and staying compatible
enough. Apparently Microsoft has changed some internal bits how window procs
get the A/W affinity (and DefWindowProcA/W in particular), and I would like
to know the reason of the test breakage. Disabling the test by marking its
result as broken is usually the last resort thing after a clear understanding
what is going on.

-- 
Dmitry.



More information about the wine-devel mailing list