Author: akhaldi Date: Sat Oct 5 09:51:37 2013 New Revision: 60529
URL: http://svn.reactos.org/svn/reactos?rev=60529&view=rev Log: [SETUPAPI_WINETEST] * Sync with Wine 1.7.1. CORE-7469
Modified: trunk/rostests/winetests/setupapi/CMakeLists.txt trunk/rostests/winetests/setupapi/devinst.c trunk/rostests/winetests/setupapi/install.c trunk/rostests/winetests/setupapi/parser.c trunk/rostests/winetests/setupapi/testlist.c
Modified: trunk/rostests/winetests/setupapi/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/setupapi/CMakeLi... ============================================================================== --- trunk/rostests/winetests/setupapi/CMakeLists.txt [iso-8859-1] (original) +++ trunk/rostests/winetests/setupapi/CMakeLists.txt [iso-8859-1] Sat Oct 5 09:51:37 2013 @@ -1,6 +1,3 @@ - -add_definitions( - -D__ROS_LONG64__)
list(APPEND SOURCE devclass.c @@ -15,9 +12,8 @@ testlist.c)
add_executable(setupapi_winetest ${SOURCE}) -target_link_libraries(setupapi_winetest wine) set_module_type(setupapi_winetest win32cui) -add_importlibs(setupapi_winetest advapi32 setupapi user32 msvcrt kernel32 ntdll) +add_importlibs(setupapi_winetest advapi32 setupapi user32 msvcrt kernel32) add_cd_file(TARGET setupapi_winetest DESTINATION reactos/bin FOR all)
if(NOT MSVC)
Modified: trunk/rostests/winetests/setupapi/devinst.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/setupapi/devinst... ============================================================================== --- trunk/rostests/winetests/setupapi/devinst.c [iso-8859-1] (original) +++ trunk/rostests/winetests/setupapi/devinst.c [iso-8859-1] Sat Oct 5 09:51:37 2013 @@ -18,9 +18,9 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#include <assert.h> #include <stdarg.h> #include <stdio.h> + #include "windef.h" #include "winbase.h" #include "wingdi.h" @@ -31,8 +31,9 @@
#include "wine/test.h"
+static BOOL is_wow64; + /* function pointers */ -static HMODULE hSetupAPI; static HDEVINFO (WINAPI *pSetupDiCreateDeviceInfoList)(GUID*,HWND); static HDEVINFO (WINAPI *pSetupDiCreateDeviceInfoListExW)(GUID*,HWND,PCWSTR,PVOID); static BOOL (WINAPI *pSetupDiCreateDeviceInterfaceA)(HDEVINFO, PSP_DEVINFO_DATA, const GUID *, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); @@ -40,6 +41,7 @@ static BOOL (WINAPI *pSetupDiDestroyDeviceInfoList)(HDEVINFO); static BOOL (WINAPI *pSetupDiEnumDeviceInfo)(HDEVINFO, DWORD, PSP_DEVINFO_DATA); static BOOL (WINAPI *pSetupDiEnumDeviceInterfaces)(HDEVINFO, PSP_DEVINFO_DATA, const GUID *, DWORD, PSP_DEVICE_INTERFACE_DATA); +static BOOL (WINAPI *pSetupDiGetINFClassA)(PCSTR, LPGUID, PSTR, DWORD, PDWORD); static BOOL (WINAPI *pSetupDiInstallClassA)(HWND, PCSTR, DWORD, HSPFILEQ); static HKEY (WINAPI *pSetupDiOpenClassRegKeyExA)(GUID*,REGSAM,DWORD,PCSTR,PVOID); static HKEY (WINAPI *pSetupDiOpenDevRegKey)(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, REGSAM); @@ -56,13 +58,15 @@ static BOOL (WINAPI *pSetupDiSetDeviceRegistryPropertyW)(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const BYTE *, DWORD); static BOOL (WINAPI *pSetupDiGetDeviceRegistryPropertyA)(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); static BOOL (WINAPI *pSetupDiGetDeviceRegistryPropertyW)(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); +static BOOL (WINAPI *pIsWow64Process)(HANDLE, PBOOL);
/* This is a unique guid for testing purposes */ static GUID guid = {0x6a55b5a4, 0x3f65, 0x11db, {0xb7,0x04,0x00,0x11,0x95,0x5c,0x2b,0xdb}};
static void init_function_pointers(void) { - hSetupAPI = GetModuleHandleA("setupapi.dll"); + HMODULE hSetupAPI = GetModuleHandleA("setupapi.dll"); + HMODULE hKernel32 = GetModuleHandleA("kernel32.dll");
pSetupDiCreateDeviceInfoA = (void *)GetProcAddress(hSetupAPI, "SetupDiCreateDeviceInfoA"); pSetupDiCreateDeviceInfoW = (void *)GetProcAddress(hSetupAPI, "SetupDiCreateDeviceInfoW"); @@ -83,10 +87,12 @@ pSetupDiRegisterDeviceInfo = (void *)GetProcAddress(hSetupAPI, "SetupDiRegisterDeviceInfo"); pSetupDiGetClassDevsA = (void *)GetProcAddress(hSetupAPI, "SetupDiGetClassDevsA"); pSetupDiGetClassDevsW = (void *)GetProcAddress(hSetupAPI, "SetupDiGetClassDevsW"); + pSetupDiGetINFClassA = (void *)GetProcAddress(hSetupAPI, "SetupDiGetINFClassA"); pSetupDiSetDeviceRegistryPropertyA = (void *)GetProcAddress(hSetupAPI, "SetupDiSetDeviceRegistryPropertyA"); pSetupDiSetDeviceRegistryPropertyW = (void *)GetProcAddress(hSetupAPI, "SetupDiSetDeviceRegistryPropertyW"); pSetupDiGetDeviceRegistryPropertyA = (void *)GetProcAddress(hSetupAPI, "SetupDiGetDeviceRegistryPropertyA"); pSetupDiGetDeviceRegistryPropertyW = (void *)GetProcAddress(hSetupAPI, "SetupDiGetDeviceRegistryPropertyW"); + pIsWow64Process = (void *)GetProcAddress(hKernel32, "IsWow64Process"); }
static void change_reg_permissions(const WCHAR *regkey) @@ -126,7 +132,7 @@ { HDEVINFO set; SP_DEVINFO_DATA devInfo = { sizeof(devInfo), { 0 } }; - BOOL ret; + BOOL ret, retval;
SetLastError(0xdeadbeef); set = pSetupDiGetClassDevsA(&guid, NULL, 0, 0); @@ -134,19 +140,23 @@ GetLastError());
SetLastError(0xdeadbeef); - ok(pSetupDiEnumDeviceInfo(set, 0, &devInfo), - "SetupDiEnumDeviceInfo failed: %08x\n", GetLastError()); - - SetLastError(0xdeadbeef); - ret = pSetupDiCallClassInstaller(DIF_REMOVE, set, &devInfo); - todo_wine - ok(ret, "SetupDiCallClassInstaller(DIF_REMOVE...) failed: %08x\n", GetLastError()); - - SetLastError(0xdeadbeef); - ok(pSetupDiDestroyDeviceInfoList(set), - "SetupDiDestroyDeviceInfoList failed: %08x\n", GetLastError()); - - return ret; + ret = pSetupDiEnumDeviceInfo(set, 0, &devInfo); + ok(ret, "SetupDiEnumDeviceInfo failed: %08x\n", GetLastError()); + + SetLastError(0xdeadbeef); + retval = pSetupDiCallClassInstaller(DIF_REMOVE, set, &devInfo); + if(is_wow64) + todo_wine ok(!retval && GetLastError() == ERROR_IN_WOW64, + "SetupDiCallClassInstaller(DIF_REMOVE...) succeeded: %08x\n", GetLastError()); + else + todo_wine ok(retval, + "SetupDiCallClassInstaller(DIF_REMOVE...) failed: %08x\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret = pSetupDiDestroyDeviceInfoList(set); + ok(ret, "SetupDiDestroyDeviceInfoList failed: %08x\n", GetLastError()); + + return retval; }
/* RegDeleteTreeW from dlls/advapi32/registry.c */ @@ -251,6 +261,7 @@ DWORD error; static CHAR notnull[] = "NotNull"; static const WCHAR machine[] = { 'd','u','m','m','y',0 }; + static const WCHAR empty[] = { 0 };
SetLastError(0xdeadbeef); /* create empty DeviceInfoList, but set Reserved to a value, which is not NULL */ @@ -275,6 +286,14 @@
/* create empty DeviceInfoList */ devlist = pSetupDiCreateDeviceInfoListExW(NULL, NULL, NULL, NULL); + ok(devlist && devlist != INVALID_HANDLE_VALUE, "SetupDiCreateDeviceInfoListExW failed : %p %d (expected != %p)\n", devlist, error, INVALID_HANDLE_VALUE); + + /* destroy DeviceInfoList */ + ret = pSetupDiDestroyDeviceInfoList(devlist); + ok(ret, "SetupDiDestroyDeviceInfoList failed : %d\n", error); + + /* create empty DeviceInfoList with empty machine name */ + devlist = pSetupDiCreateDeviceInfoListExW(NULL, NULL, empty, NULL); ok(devlist && devlist != INVALID_HANDLE_VALUE, "SetupDiCreateDeviceInfoListExW failed : %p %d (expected != %p)\n", devlist, error, INVALID_HANDLE_VALUE);
/* destroy DeviceInfoList */ @@ -955,7 +974,6 @@ key = pSetupDiOpenDevRegKey(set, &devInfo, DICS_FLAG_GLOBAL, 0, DIREG_DRV, 0); /* The software key isn't created by default */ - todo_wine ok(key == INVALID_HANDLE_VALUE && GetLastError() == ERROR_KEY_DOES_NOT_EXIST, "Expected ERROR_KEY_DOES_NOT_EXIST, got %08x\n", GetLastError()); @@ -1005,8 +1023,8 @@
/* Cleanup */ ret = remove_device(); - todo_wine - ok(ret, "Expected the device to be removed: %08x\n", GetLastError()); + if(!is_wow64) + todo_wine ok(ret, "Expected the device to be removed: %08x\n", GetLastError());
/* FIXME: Only do the RegDeleteKey, once Wine is fixed */ if (!ret) @@ -1089,8 +1107,10 @@ { static const char path[] = "\\?\root#legacy_bogus#0000#{6a55b5a4-3f65-11db-b704-0011955c2bdb}"; + static const char path_wow64[] = + "\\?\root#legacy_bogus#0001#{6a55b5a4-3f65-11db-b704-0011955c2bdb}"; static const char path_w2k[] = - "\\?\root#legacy_bogus#0000#{6a55b5a4-3f65-11db-b704-0011955c2bdb}\"; + "\\?\root#legacy_bogus#0000#{6a55b5a4-3f65-11db-b704-0011955c2bdb}\"; PSP_DEVICE_INTERFACE_DETAIL_DATA_A detail = NULL;
detail = HeapAlloc(GetProcessHeap(), 0, dwSize); @@ -1104,10 +1124,13 @@ /* FIXME: This one only worked because old data wasn't removed properly. As soon * as all the tests are cleaned up correctly this has to be (or should be) fixed */ - todo_wine - ok(!lstrcmpiA(path, detail->DevicePath) || - !lstrcmpiA(path_w2k, detail->DevicePath), "Unexpected path %s\n", - detail->DevicePath); + if(is_wow64) + ok(!lstrcmpiA(path_wow64, detail->DevicePath), + "Unexpected path %s\n", detail->DevicePath); + else + todo_wine ok(!lstrcmpiA(path, detail->DevicePath) || + !lstrcmpiA(path_w2k, detail->DevicePath), + "Unexpected path %s\n", detail->DevicePath); HeapFree(GetProcessHeap(), 0, detail); } } @@ -1116,8 +1139,8 @@
/* Cleanup */ ret = remove_device(); - todo_wine - ok(ret, "Expected the device to be removed: %08x\n", GetLastError()); + if(!is_wow64) + todo_wine ok(ret, "Expected the device to be removed: %08x\n", GetLastError());
/* FIXME: Only do the RegDeleteKey, once Wine is fixed */ if (!ret) @@ -1226,8 +1249,8 @@ pSetupDiDestroyDeviceInfoList(set);
res = RegOpenKeyA(HKEY_LOCAL_MACHINE, bogus, &key); - todo_wine - ok(res == ERROR_FILE_NOT_FOUND, "Expected key to not exist\n"); + if(!is_wow64) + todo_wine ok(res == ERROR_FILE_NOT_FOUND, "Expected key to not exist\n"); /* FIXME: Remove when Wine is fixed */ if (res == ERROR_SUCCESS) { @@ -1332,8 +1355,8 @@ pSetupDiDestroyDeviceInfoList(set);
res = RegOpenKeyW(HKEY_LOCAL_MACHINE, bogus, &key); - todo_wine - ok(res == ERROR_FILE_NOT_FOUND, "Expected key to not exist\n"); + if(!is_wow64) + todo_wine ok(res == ERROR_FILE_NOT_FOUND, "Expected key to not exist\n"); /* FIXME: Remove when Wine is fixed */ if (res == ERROR_SUCCESS) { @@ -1343,23 +1366,182 @@ } }
+static void testSetupDiGetINFClassA(void) +{ + static const char inffile[] = "winetest.inf"; + static const char content[] = "[Version]\r\n\r\n"; + + char cn[MAX_PATH]; + char filename[MAX_PATH]; + DWORD count; + BOOL retval; + GUID guid; + HANDLE h; + + if(!pSetupDiGetINFClassA) + { + win_skip("SetupDiGetINFClassA not present\n"); + return; + } + + count = GetTempPathA(MAX_PATH, filename); + if(!count) + { + win_skip("GetTempPathA failed\n"); + return; + } + + strcat(filename, inffile); + DeleteFileA(filename); + + /* not existing file */ + SetLastError(0xdeadbeef); + retval = SetupDiGetINFClassA(filename, &guid, cn, MAX_PATH, &count); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + if (ERROR_CALL_NOT_IMPLEMENTED == GetLastError()) + { + skip("SetupDiGetINFClassA is not implemented\n"); + return; + } + ok(ERROR_FILE_NOT_FOUND == GetLastError(), + "expected error ERROR_FILE_NOT_FOUND, got %u\n", GetLastError()); + + /* missing file wins against other invalid parameter */ + SetLastError(0xdeadbeef); + retval = SetupDiGetINFClassA(filename, NULL, cn, MAX_PATH, &count); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + ok(ERROR_FILE_NOT_FOUND == GetLastError(), + "expected error ERROR_FILE_NOT_FOUND, got %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + retval = SetupDiGetINFClassA(filename, &guid, NULL, MAX_PATH, &count); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + ok(ERROR_FILE_NOT_FOUND == GetLastError(), + "expected error ERROR_FILE_NOT_FOUND, got %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + retval = SetupDiGetINFClassA(filename, &guid, cn, 0, &count); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + ok(ERROR_FILE_NOT_FOUND == GetLastError(), + "expected error ERROR_FILE_NOT_FOUND, got %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + retval = SetupDiGetINFClassA(filename, &guid, cn, MAX_PATH, NULL); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + ok(ERROR_FILE_NOT_FOUND == GetLastError(), + "expected error ERROR_FILE_NOT_FOUND, got %u\n", GetLastError()); + + /* test file content */ + h = CreateFileA(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, + FILE_ATTRIBUTE_NORMAL, NULL); + if(h == INVALID_HANDLE_VALUE) + { + win_skip("failed to create file %s (error %u)\n", filename, GetLastError()); + return; + } + CloseHandle( h); + + retval = SetupDiGetINFClassA(filename, &guid, cn, MAX_PATH, &count); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + + h = CreateFileA(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, + FILE_ATTRIBUTE_NORMAL, NULL); + if(h == INVALID_HANDLE_VALUE) + { + win_skip("failed to create file %s (error %u)\n", filename, GetLastError()); + return; + } + WriteFile( h, content, sizeof(content), &count, NULL); + CloseHandle( h); + + retval = SetupDiGetINFClassA(filename, &guid, cn, MAX_PATH, &count); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + + WritePrivateProfileStringA("Version", "Signature", ""$CHICAGO$"", filename); + + retval = SetupDiGetINFClassA(filename, &guid, cn, MAX_PATH, &count); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + + WritePrivateProfileStringA("Version", "Class", "WINE", filename); + + count = 0xdeadbeef; + retval = SetupDiGetINFClassA(filename, &guid, cn, MAX_PATH, &count); + ok(retval, "expected SetupDiGetINFClassA to succeed! error %u\n", GetLastError()); + ok(count == 5, "expected count==5, got %u\n", count); + + count = 0xdeadbeef; + retval = SetupDiGetINFClassA(filename, &guid, cn, 5, &count); + ok(retval, "expected SetupDiGetINFClassA to succeed! error %u\n", GetLastError()); + ok(count == 5, "expected count==5, got %u\n", count); + + count = 0xdeadbeef; + SetLastError(0xdeadbeef); + retval = SetupDiGetINFClassA(filename, &guid, cn, 4, &count); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + ok(ERROR_INSUFFICIENT_BUFFER == GetLastError(), + "expected error ERROR_INSUFFICIENT_BUFFER, got %u\n", GetLastError()); + ok(count == 5, "expected count==5, got %u\n", count); + + /* invalid parameter */ + SetLastError(0xdeadbeef); + retval = SetupDiGetINFClassA(NULL, &guid, cn, MAX_PATH, &count); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + ok(ERROR_INVALID_PARAMETER == GetLastError(), + "expected error ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + retval = SetupDiGetINFClassA(filename, NULL, cn, MAX_PATH, &count); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + ok(ERROR_INVALID_PARAMETER == GetLastError(), + "expected error ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + retval = SetupDiGetINFClassA(filename, &guid, NULL, MAX_PATH, &count); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + ok(ERROR_INVALID_PARAMETER == GetLastError(), + "expected error ERROR_INVALID_PARAMETER, got %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + retval = SetupDiGetINFClassA(filename, &guid, cn, 0, &count); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + ok(ERROR_INSUFFICIENT_BUFFER == GetLastError() || + ERROR_INVALID_PARAMETER == GetLastError(), + "expected error ERROR_INSUFFICIENT_BUFFER or ERROR_INVALID_PARAMETER, " + "got %u\n", GetLastError()); + + DeleteFileA(filename); + + WritePrivateProfileStringA("Version", "Signature", ""$CHICAGO$"", filename); + WritePrivateProfileStringA("Version", "ClassGUID", "WINE", filename); + + SetLastError(0xdeadbeef); + retval = SetupDiGetINFClassA(filename, &guid, cn, MAX_PATH, &count); + ok(!retval, "expected SetupDiGetINFClassA to fail!\n"); + ok(RPC_S_INVALID_STRING_UUID == GetLastError() || + ERROR_INVALID_PARAMETER == GetLastError(), + "expected error RPC_S_INVALID_STRING_UUID or ERROR_INVALID_PARAMETER, " + "got %u\n", GetLastError()); + + /* network adapter guid */ + WritePrivateProfileStringA("Version", "ClassGUID", + "{4d36e972-e325-11ce-bfc1-08002be10318}", filename); + + /* this test succeeds only if the guid is known to the system */ + count = 0xdeadbeef; + retval = SetupDiGetINFClassA(filename, &guid, cn, MAX_PATH, &count); + ok(retval, "expected SetupDiGetINFClassA to succeed! error %u\n", GetLastError()); + todo_wine + ok(count == 4, "expected count==4, got %u(%s)\n", count, cn); + + DeleteFileA(filename); +} + START_TEST(devinst) { - HDEVINFO set; - - init_function_pointers(); - - /* Win9x/WinMe does things totally different so we skip all the tests - * - * We don't want to exclude NT4 so hence this check. - */ - SetLastError(0xdeadbeef); - set = pSetupDiGetClassDevsW(NULL, NULL, 0, 0); - if (set == INVALID_HANDLE_VALUE && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) - { - win_skip("Win9x/WinMe has totally different behavior\n"); - return; - } + init_function_pointers(); + + if (pIsWow64Process) + pIsWow64Process(GetCurrentProcess(), &is_wow64);
if (pSetupDiCreateDeviceInfoListExW) test_SetupDiCreateDeviceInfoListEx(); @@ -1381,4 +1563,13 @@ testRegisterAndGetDetail(); testDeviceRegistryPropertyA(); testDeviceRegistryPropertyW(); -} + + if (!winetest_interactive) + { + win_skip("testSetupDiGetINFClassA(), ROSTESTS-124.\n"); + } + else + { + testSetupDiGetINFClassA(); + } +}
Modified: trunk/rostests/winetests/setupapi/install.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/setupapi/install... ============================================================================== --- trunk/rostests/winetests/setupapi/install.c [iso-8859-1] (original) +++ trunk/rostests/winetests/setupapi/install.c [iso-8859-1] Sat Oct 5 09:51:37 2013 @@ -321,6 +321,20 @@
CloseServiceHandle(svc_handle); CloseServiceHandle(scm_handle); + + strcpy(inf, "[Version]\nSignature="$Chicago$"\n"); + strcat(inf, "[XSP.InstallPerVer]\n"); + strcat(inf, "AddReg=AspEventlogMsg.Reg,Perf.Reg,AspVersions.Reg,FreeADO.Reg,IndexServer.Reg\n"); + create_inf_file(inffile, inf); + sprintf(path, "%s\%s", CURR_DIR, inffile); + infhandle = SetupOpenInfFileA(path, NULL, INF_STYLE_WIN4, NULL); + + SetLastError(0xdeadbeef); + ret = SetupInstallServicesFromInfSectionA(infhandle, "XSP.InstallPerVer", 0); + ok(ret, "Expected success\n"); + ok(GetLastError() == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %08x\n", GetLastError()); + SetupCloseInfFile(infhandle); + DeleteFile(inffile);
/* TODO: Test the Flags */ }
Modified: trunk/rostests/winetests/setupapi/parser.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/setupapi/parser.... ============================================================================== --- trunk/rostests/winetests/setupapi/parser.c [iso-8859-1] (original) +++ trunk/rostests/winetests/setupapi/parser.c [iso-8859-1] Sat Oct 5 09:51:37 2013 @@ -18,7 +18,6 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#include <assert.h> #include <stdarg.h>
#include "windef.h" @@ -424,7 +423,12 @@ if (hinf == INVALID_HANDLE_VALUE) continue;
ret = SetupFindFirstLineA( hinf, "Test", 0, &context ); - assert( ret ); + ok(ret, "SetupFindFirstLineA failed: le=%u\n", GetLastError()); + if (!ret) + { + SetupCloseInfFile( hinf ); + continue; + }
check_key( &context, key_names[i].key );
Modified: trunk/rostests/winetests/setupapi/testlist.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/setupapi/testlis... ============================================================================== --- trunk/rostests/winetests/setupapi/testlist.c [iso-8859-1] (original) +++ trunk/rostests/winetests/setupapi/testlist.c [iso-8859-1] Sat Oct 5 09:51:37 2013 @@ -1,10 +1,7 @@ /* Automatically generated file; DO NOT EDIT!! */
-#define WIN32_LEAN_AND_MEAN -#include <windows.h> - #define STANDALONE -#include "wine/test.h" +#include <wine/test.h>
extern void func_devclass(void); extern void func_devinst(void);