Signed-off-by: Jeff Smith whydoubt@gmail.com --- dlls/setupapi/tests/devinst.c | 40 ++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 8 deletions(-)
diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c index d4c82dea1f..bbdd375214 100644 --- a/dlls/setupapi/tests/devinst.c +++ b/dlls/setupapi/tests/devinst.c @@ -2708,7 +2708,10 @@ static void test_class_installer(void) ok(*coinst_last_message == DIF_REMOVE, "Got unexpected message %#x.\n", *coinst_last_message); *coinst_callback_count = 0;
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xcafef00d); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); + todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2740,7 +2743,10 @@ static void test_class_installer(void) ok(GetLastError() == 0xdeadbeef, "Got unexpected error %#x.\n", GetLastError()); ok(!device_is_registered(set, &device), "Expected device not to be registered.\n");
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xcafef00d); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); + todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
/* Test returning ERROR_DI_DO_DEFAULT. */
@@ -2766,7 +2772,10 @@ static void test_class_installer(void) ok(ret, "Failed to call class installer, error %#x.\n", GetLastError()); ok(!device_is_registered(set, &device), "Expected device not to be registered.\n");
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xcafef00d); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); + todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
/* The default entry point is ClassInstall(). */
@@ -2786,7 +2795,10 @@ static void test_class_installer(void) ok(*coinst_last_message == DIF_ALLOW_INSTALL, "Got unexpected message %#x.\n", *coinst_last_message); *coinst_callback_count = 0;
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xcafef00d); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); + todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2854,7 +2866,10 @@ static void test_class_coinstaller(void) ok(*coinst_last_message == DIF_REMOVE, "Got unexpected message %#x.\n", *coinst_last_message); *coinst_callback_count = 0;
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xcafef00d); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); + todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
todo_wine ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); todo_wine ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2883,7 +2898,10 @@ static void test_class_coinstaller(void) ok(GetLastError() == 0xdeadbeef, "Got unexpected error %#x.\n", GetLastError()); ok(!device_is_registered(set, &device), "Expected device not to be registered.\n");
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xcafef00d); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); + todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
/* The default entry point is CoDeviceInstall(). */
@@ -2906,7 +2924,10 @@ static void test_class_coinstaller(void) ok(*coinst_last_message == DIF_ALLOW_INSTALL, "Got unexpected message %#x.\n", *coinst_last_message); *coinst_callback_count = 0;
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xcafef00d); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); + todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2954,7 +2975,10 @@ static void test_call_class_installer(void) ok(ret, "Failed to call class installer, error %#x.\n", GetLastError()); ok(!device_is_registered(set, &device), "Expected device not to be registered.\n");
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xcafef00d); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); + todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
load_resource("coinst.dll", "C:\windows\system32\winetest_coinst.dll");
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49332 Signed-off-by: Jeff Smith whydoubt@gmail.com --- dlls/setupapi/devinst.c | 1 + dlls/setupapi/tests/devinst.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c index 5674062909..41f0ba97c5 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -2854,6 +2854,7 @@ BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo) } heap_free(set);
+ SetLastError(ERROR_SUCCESS); return TRUE; }
diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c index bbdd375214..064cc36536 100644 --- a/dlls/setupapi/tests/devinst.c +++ b/dlls/setupapi/tests/devinst.c @@ -2711,7 +2711,7 @@ static void test_class_installer(void) SetLastError(0xcafef00d); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); - todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2746,7 +2746,7 @@ static void test_class_installer(void) SetLastError(0xcafef00d); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); - todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
/* Test returning ERROR_DI_DO_DEFAULT. */
@@ -2775,7 +2775,7 @@ static void test_class_installer(void) SetLastError(0xcafef00d); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); - todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
/* The default entry point is ClassInstall(). */
@@ -2798,7 +2798,7 @@ static void test_class_installer(void) SetLastError(0xcafef00d); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); - todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2869,7 +2869,7 @@ static void test_class_coinstaller(void) SetLastError(0xcafef00d); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); - todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
todo_wine ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); todo_wine ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2901,7 +2901,7 @@ static void test_class_coinstaller(void) SetLastError(0xcafef00d); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); - todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
/* The default entry point is CoDeviceInstall(). */
@@ -2927,7 +2927,7 @@ static void test_class_coinstaller(void) SetLastError(0xcafef00d); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); - todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2978,7 +2978,7 @@ static void test_call_class_installer(void) SetLastError(0xcafef00d); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError()); - todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
load_resource("coinst.dll", "C:\windows\system32\winetest_coinst.dll");
Jeff Smith whydoubt@gmail.com wrote:
- SetLastError(0xcafef00d);
Please use a commonly accepted value of 0xdeadbeef.
- ret = SetupDiDestroyDeviceInfoList(set);
- ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError());
- todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
These two ok() calls contradict each other (here and in other places). ok() should accept either ret or !ret, last error should be tested separately.
On 6/6/20 11:45 PM, Dmitry Timoshkov wrote:
Jeff Smith whydoubt@gmail.com wrote:
- SetLastError(0xcafef00d);
Please use a commonly accepted value of 0xdeadbeef.
Is this really worthwhile? It's pretty obvious that both are sentinel values.
- ret = SetupDiDestroyDeviceInfoList(set);
- ok(ret, "Failed to destroy device list, error %#x.\n", GetLastError());
- todo_wine ok(!ret || !GetLastError(), "Got unexpected error %#x.\n", GetLastError());
These two ok() calls contradict each other (here and in other places). ok() should accept either ret or !ret, last error should be tested separately.
Zebediah Figura z.figura12@gmail.com wrote:
On 6/6/20 11:45 PM, Dmitry Timoshkov wrote:
Jeff Smith whydoubt@gmail.com wrote:
- SetLastError(0xcafef00d);
Please use a commonly accepted value of 0xdeadbeef.
Is this really worthwhile? It's pretty obvious that both are sentinel values.
It's just one of common practices in Wine tests, IMO it would be nice to use an existing one instead of inventing new all other the place.
On Sat, Jun 6, 2020, 11:58 PM Dmitry Timoshkov dmitry@baikal.ru wrote:
Zebediah Figura z.figura12@gmail.com wrote:
On 6/6/20 11:45 PM, Dmitry Timoshkov wrote:
Jeff Smith whydoubt@gmail.com wrote:
- SetLastError(0xcafef00d);
Please use a commonly accepted value of 0xdeadbeef.
Is this really worthwhile? It's pretty obvious that both are sentinel values.
It's just one of common practices in Wine tests, IMO it would be nice to use an existing one instead of inventing new all other the place.
As deadbeef is also retuned by class_error and co_error, I intentionally chose a different value so that it would possible to determine the true source of the value. What solution do you recommend?
Thanks, Jeff
On Sat, Jun 6, 2020, 11:45 PM Dmitry Timoshkov dmitry@baikal.ru wrote:
Jeff Smith whydoubt@gmail.com wrote:
- SetLastError(0xcafef00d);
Please use a commonly accepted value of 0xdeadbeef.
- ret = SetupDiDestroyDeviceInfoList(set);
- ok(ret, "Failed to destroy device list, error %#x.\n",
GetLastError());
- todo_wine ok(!ret || !GetLastError(), "Got unexpected error
%#x.\n", GetLastError());
These two ok() calls contradict each other (here and in other places). ok() should accept either ret or !ret, last error should be tested separately.
The first message is triggered if ret is FALSE. The second message is triggered if ret is TRUE but GetLastError() returns a non-zero value. The second message seems redundant in the case that ret is FALSE, but maybe I am overthinking it.
Thanks, Jeff
As co_error and class_error both return 0xdeadbeef, use of 0xdeadbeef as a canary value as well can lead to ambiguous tests results.
As 0xdeadbeef is a typical canary value in wine, change the return values for co_error and class_error, avoiding the potential ambiguity.
Signed-off-by: Jeff Smith whydoubt@gmail.com --- If this doesn't pass muster, then consider patches 2 and 3 on their own. They should work fine without this, but the tests are better having this one as well.
dlls/setupapi/tests/coinst.c | 4 ++-- dlls/setupapi/tests/devinst.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/dlls/setupapi/tests/coinst.c b/dlls/setupapi/tests/coinst.c index 5e8d890cfa..604bf74d1e 100644 --- a/dlls/setupapi/tests/coinst.c +++ b/dlls/setupapi/tests/coinst.c @@ -47,7 +47,7 @@ DWORD WINAPI class_default(DI_FUNCTION function, HDEVINFO set, SP_DEVINFO_DATA *
DWORD WINAPI class_error(DI_FUNCTION function, HDEVINFO set, SP_DEVINFO_DATA *device) { - return 0xdeadbeef; + return E_FAIL; }
DWORD WINAPI co_success(DI_FUNCTION function, HDEVINFO set, SP_DEVINFO_DATA *device, @@ -67,5 +67,5 @@ DWORD WINAPI CoDeviceInstall(DI_FUNCTION function, HDEVINFO set, SP_DEVINFO_DATA DWORD WINAPI co_error(DI_FUNCTION function, HDEVINFO set, SP_DEVINFO_DATA *device, COINSTALLER_CONTEXT_DATA *context) { - return 0xdeadbeef; + return E_FAIL; } diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c index d4c82dea1f..80abc44029 100644 --- a/dlls/setupapi/tests/devinst.c +++ b/dlls/setupapi/tests/devinst.c @@ -2727,17 +2727,17 @@ static void test_class_installer(void)
ret = SetupDiCallClassInstaller(DIF_ALLOW_INSTALL, set, &device); ok(!ret, "Expected failure.\n"); - ok(GetLastError() == 0xdeadbeef, "Got unexpected error %#x.\n", GetLastError()); + ok(GetLastError() == E_FAIL, "Got unexpected error %#x.\n", GetLastError());
ok(!device_is_registered(set, &device), "Expected device not to be registered.\n"); ret = SetupDiCallClassInstaller(DIF_REGISTERDEVICE, set, &device); ok(!ret, "Expected failure.\n"); - ok(GetLastError() == 0xdeadbeef, "Got unexpected error %#x.\n", GetLastError()); + ok(GetLastError() == E_FAIL, "Got unexpected error %#x.\n", GetLastError()); ok(!device_is_registered(set, &device), "Expected device not to be registered.\n");
ret = SetupDiCallClassInstaller(DIF_REMOVE, set, &device); ok(!ret, "Expected failure.\n"); - ok(GetLastError() == 0xdeadbeef, "Got unexpected error %#x.\n", GetLastError()); + ok(GetLastError() == E_FAIL, "Got unexpected error %#x.\n", GetLastError()); ok(!device_is_registered(set, &device), "Expected device not to be registered.\n");
SetupDiDestroyDeviceInfoList(set); @@ -2875,12 +2875,12 @@ static void test_class_coinstaller(void)
ret = SetupDiCallClassInstaller(DIF_ALLOW_INSTALL, set, &device); ok(!ret, "Expected failure.\n"); - ok(GetLastError() == 0xdeadbeef, "Got unexpected error %#x.\n", GetLastError()); + ok(GetLastError() == E_FAIL, "Got unexpected error %#x.\n", GetLastError());
ok(!device_is_registered(set, &device), "Expected device not to be registered.\n"); ret = SetupDiCallClassInstaller(DIF_REGISTERDEVICE, set, &device); ok(!ret, "Expected failure.\n"); - ok(GetLastError() == 0xdeadbeef, "Got unexpected error %#x.\n", GetLastError()); + ok(GetLastError() == E_FAIL, "Got unexpected error %#x.\n", GetLastError()); ok(!device_is_registered(set, &device), "Expected device not to be registered.\n");
SetupDiDestroyDeviceInfoList(set);
Signed-off-by: Jeff Smith whydoubt@gmail.com --- dlls/setupapi/tests/devinst.c | 40 ++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 8 deletions(-)
diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c index 80abc44029..06308ed4e9 100644 --- a/dlls/setupapi/tests/devinst.c +++ b/dlls/setupapi/tests/devinst.c @@ -2708,7 +2708,10 @@ static void test_class_installer(void) ok(*coinst_last_message == DIF_REMOVE, "Got unexpected message %#x.\n", *coinst_last_message); *coinst_callback_count = 0;
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xdeadbeef); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list.\n"); + todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2740,7 +2743,10 @@ static void test_class_installer(void) ok(GetLastError() == E_FAIL, "Got unexpected error %#x.\n", GetLastError()); ok(!device_is_registered(set, &device), "Expected device not to be registered.\n");
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xdeadbeef); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list.\n"); + todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
/* Test returning ERROR_DI_DO_DEFAULT. */
@@ -2766,7 +2772,10 @@ static void test_class_installer(void) ok(ret, "Failed to call class installer, error %#x.\n", GetLastError()); ok(!device_is_registered(set, &device), "Expected device not to be registered.\n");
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xdeadbeef); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list.\n"); + todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
/* The default entry point is ClassInstall(). */
@@ -2786,7 +2795,10 @@ static void test_class_installer(void) ok(*coinst_last_message == DIF_ALLOW_INSTALL, "Got unexpected message %#x.\n", *coinst_last_message); *coinst_callback_count = 0;
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xdeadbeef); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list.\n"); + todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2854,7 +2866,10 @@ static void test_class_coinstaller(void) ok(*coinst_last_message == DIF_REMOVE, "Got unexpected message %#x.\n", *coinst_last_message); *coinst_callback_count = 0;
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xdeadbeef); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list.\n"); + todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
todo_wine ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); todo_wine ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2883,7 +2898,10 @@ static void test_class_coinstaller(void) ok(GetLastError() == E_FAIL, "Got unexpected error %#x.\n", GetLastError()); ok(!device_is_registered(set, &device), "Expected device not to be registered.\n");
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xdeadbeef); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list.\n"); + todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
/* The default entry point is CoDeviceInstall(). */
@@ -2906,7 +2924,10 @@ static void test_class_coinstaller(void) ok(*coinst_last_message == DIF_ALLOW_INSTALL, "Got unexpected message %#x.\n", *coinst_last_message); *coinst_callback_count = 0;
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xdeadbeef); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list.\n"); + todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2954,7 +2975,10 @@ static void test_call_class_installer(void) ok(ret, "Failed to call class installer, error %#x.\n", GetLastError()); ok(!device_is_registered(set, &device), "Expected device not to be registered.\n");
- SetupDiDestroyDeviceInfoList(set); + SetLastError(0xdeadbeef); + ret = SetupDiDestroyDeviceInfoList(set); + ok(ret, "Failed to destroy device list.\n"); + todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
load_resource("coinst.dll", "C:\windows\system32\winetest_coinst.dll");
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49332 Signed-off-by: Jeff Smith whydoubt@gmail.com --- dlls/setupapi/devinst.c | 1 + dlls/setupapi/tests/devinst.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c index 5674062909..41f0ba97c5 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -2854,6 +2854,7 @@ BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo) } heap_free(set);
+ SetLastError(ERROR_SUCCESS); return TRUE; }
diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c index 06308ed4e9..707fa8351d 100644 --- a/dlls/setupapi/tests/devinst.c +++ b/dlls/setupapi/tests/devinst.c @@ -2711,7 +2711,7 @@ static void test_class_installer(void) SetLastError(0xdeadbeef); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list.\n"); - todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2746,7 +2746,7 @@ static void test_class_installer(void) SetLastError(0xdeadbeef); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list.\n"); - todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
/* Test returning ERROR_DI_DO_DEFAULT. */
@@ -2775,7 +2775,7 @@ static void test_class_installer(void) SetLastError(0xdeadbeef); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list.\n"); - todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
/* The default entry point is ClassInstall(). */
@@ -2798,7 +2798,7 @@ static void test_class_installer(void) SetLastError(0xdeadbeef); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list.\n"); - todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2869,7 +2869,7 @@ static void test_class_coinstaller(void) SetLastError(0xdeadbeef); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list.\n"); - todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
todo_wine ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); todo_wine ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2901,7 +2901,7 @@ static void test_class_coinstaller(void) SetLastError(0xdeadbeef); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list.\n"); - todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
/* The default entry point is CoDeviceInstall(). */
@@ -2927,7 +2927,7 @@ static void test_class_coinstaller(void) SetLastError(0xdeadbeef); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list.\n"); - todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
ok(*coinst_callback_count == 1, "Got %d callbacks.\n", *coinst_callback_count); ok(*coinst_last_message == DIF_DESTROYPRIVATEDATA, "Got unexpected message %#x.\n", *coinst_last_message); @@ -2978,7 +2978,7 @@ static void test_call_class_installer(void) SetLastError(0xdeadbeef); ret = SetupDiDestroyDeviceInfoList(set); ok(ret, "Failed to destroy device list.\n"); - todo_wine ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError()); + ok(!GetLastError(), "Got unexpected error %#x.\n", GetLastError());
load_resource("coinst.dll", "C:\windows\system32\winetest_coinst.dll");