[PATCH v3 1/6] ntoskrnl.exe/tests: Silent a todo_wine failing test after a while.

Rémi Bernon rbernon at codeweavers.com
Tue Jun 8 01:34:08 CDT 2021


On 6/4/21 11:12 AM, Rémi Bernon wrote:
> Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
> ---
> 
> v3: Minor changes, drop the controversial test fixups, let's ignore the
>      spurious failures for now.
> 
>      Tweak the silent logic as requested, squeeze in a few more tests.
> 
>      The spurious w864 crash doesn't seem to be related to the patches,
>      it happens there from time to time when the driver tests aren't
>      executed and is probably caused by some invalid cleanup.
> 
>      FWIW, when I force start_driver code to fail on Wine in the same
>      way it's failing on this machine, I also get a winedevice crash
>      after the test has exited, on a call to PsGetCurrentProcessId() in
>      winetest_cleanup. I have no idea if it's the same kind of thing, but
>      it looks fishy.
> 
>   dlls/ntoskrnl.exe/tests/driver_hid.c | 7 ++++++-
>   1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/dlls/ntoskrnl.exe/tests/driver_hid.c b/dlls/ntoskrnl.exe/tests/driver_hid.c
> index 44ec1b09526..0f626e6866c 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 BOOL test_failed;
>       IO_STACK_LOCATION *stack = IoGetCurrentIrpStackLocation(irp);
>       const ULONG in_size = stack->Parameters.DeviceIoControl.InputBufferLength;
>       const ULONG out_size = stack->Parameters.DeviceIoControl.OutputBufferLength;
> @@ -175,11 +176,15 @@ static NTSTATUS WINAPI driver_internal_ioctl(DEVICE_OBJECT *device, IRP *irp)
>           }
>   
>           case IOCTL_HID_READ_REPORT:
> +        {
> +            ULONG expected_size = 2;
>               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) todo_wine ok(out_size == expected_size, "got output size %u\n", out_size);
> +            if (out_size != expected_size) test_failed = TRUE;
>   
>               ret = STATUS_NOT_IMPLEMENTED;
>               break;
> +        }
>   
>           case IOCTL_HID_GET_STRING:
>               ok(!in_size, "got input size %u\n", in_size);
> 

Hi!

Should I do something different for this series? I don't think the 
failures here are related to the additional tests.

Would it be better maybe to share the hid macros with PARENTSRC or move 
them to some public wine include?

Then it's not very convenient that the tests have to live in 
ntoskrnl.exe, and hid/hidclass.sys changes won't trigger any test run 
unless they touch some todo_wine.

The only other way I could think of to test HidP functions separately 
would be to dump PHIDP_PREPARSED_DATA blobs somehow and add them to 
hid/hidclass.sys tests, and it doesn't seem very robust.

Cheers,
-- 
Rémi Bernon <rbernon at codeweavers.com>



More information about the wine-devel mailing list