On 6/3/21 10:50 AM, Rémi Bernon wrote:
On 6/3/21 5:44 PM, Zebediah Figura (she/her) wrote:
On 6/3/21 10:42 AM, Rémi Bernon wrote:
On 6/3/21 5:40 PM, Zebediah Figura (she/her) wrote:
On 6/3/21 7:55 AM, Rémi Bernon wrote:
Signed-off-by: Rémi Bernon rbernon@codeweavers.com
v2: * Fix spurious failures first.
* Don't try NULL preparsed data, it crashes old windows versions.
* Squash new HidP_Get*Caps tests together, add a few more with specific caps lookup.
dlls/ntoskrnl.exe/tests/driver_hid.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/ntoskrnl.exe/tests/driver_hid.c b/dlls/ntoskrnl.exe/tests/driver_hid.c index 44ec1b09526..79b3e708752 100644 --- a/dlls/ntoskrnl.exe/tests/driver_hid.c +++ b/dlls/ntoskrnl.exe/tests/driver_hid.c @@ -103,6 +103,7 @@ static const unsigned char report_descriptor[] = static NTSTATUS WINAPI driver_internal_ioctl(DEVICE_OBJECT *device, IRP *irp) { + static int test_failed = 0; IO_STACK_LOCATION *stack = IoGetCurrentIrpStackLocation(irp); const ULONG in_size = stack->Parameters.DeviceIoControl.InputBufferLength; const ULONG out_size = stack->Parameters.DeviceIoControl.OutputBufferLength; @@ -176,7 +177,7 @@ static NTSTATUS WINAPI driver_internal_ioctl(DEVICE_OBJECT *device, IRP *irp) case IOCTL_HID_READ_REPORT: ok(!in_size, "got input size %u\n", in_size); - todo_wine ok(out_size == 2, "got output size %u\n", out_size); + if (test_failed++ < 10) todo_wine ok(out_size == 2, "got output size %u\n", out_size); ret = STATUS_NOT_IMPLEMENTED; break;
Does this test fail on Windows? Can you provide a link to the test results?
It's not failing on windows, but the todo_wine are spamming the test results, making the test be reported as failing because too much data is printed.
Shame on me for introducing that test and never fixing it, but maybe we could just fix it the right way instead?
Yes but it's a little bit more complicated than it seems, and I'm a bit afraid of the possible unforeseen consequences.
There's apparently several ways to request reports (in polled and non-polled modes for instance). and I couldn't test the IOCTL_HID_GET_INPUT_REPORT way yet for instance, I don't know if it passes a packet with the full report length, including 0 report id or if it uses a different length depending on when report ids are used or not.
Also in winebus.sys, both ways are handled by deliver_last_report, which expects a full report.
Then there's the question whether reading hidraw devices give us full reports or not, which I haven't investigated yet.
I'm perfectly fine with leaving the test unfixed for now, and have the spurious failures, it just looked bad for my additional tests ;)
Okay, I guess I'm fine with it too, I might recommend really only incrementing test_failure on failure, though, and maybe there's no reason to set the limit at 10 instead of 1.