On Tue, Jul 20, 2021 at 02:10:50PM +0200, Francois Gouget wrote:
On Tue, 20 Jul 2021, Arkadiusz Hiler wrote: [...]
Yes. I am already looking into this + other flaky dinput tests that fail in a similar way.
Thanks!
Turns out that on Windows dinput sometimes just drops key events injected via SendInput() / keybd_event().
Is it all Windows versions? This one failure seemed to only happen on one Windows 8.1 VM (but maybe the others just got lucky so far).
If run in a loop those tests fail (very rarely) for me on Win10 machine, and I am fairly sure that I've seen failures on Win7 too.
Here's a related failure in a test that emits a lot of events for a device with a smaller buffer to get DI_BUFFEROVERFLOW:
https://testbot.winehq.org/JobDetails.pl?Key=94396#k206
So some events have been missed.
[...]
The only reliable solution seems to be checking if the device has received any data via GetDeviceData(), and if we don't see any events there then we can win_skip(). AFAIU it will fail under Wine but just skip on Windows.
Yes. win_skip() skips on Windows and fails in Wine.
Turns out there are some test that already skip on Windows if injecting events fails. That's from my Win 10:
device.c:106: Tests skipped: We're not able to inject input into Windows dinput8 with events
The tests would still have sporadic skips and I am not sure if this is any better than sporadic failures. Do we track those? This also creates room for breaking tests on Window without noticing...
We don't really track skips. They are reported on the test result pages (they are the blue bars) but are not considered to be an issue as there are many legitimate reasons for skipping a test (e.g. if the API is not implemented, or if it tests a device which is not present).
https://test.winehq.org/data/d60c450c7be196c2072f74e34f7760d39e3bad32/index_...
Good to know. Thanks!