However a few time zones were missing the MUI display name in some Windows 1809 versions.
Signed-off-by: Francois Gouget fgouget@codeweavers.com --- On cw-gtx560 and cw-rx460, Windows 1809 is missing the MUI display name for the following time zones. Morocco Standard Time Russian Standard Time Sao Tome Standard Time
Allowing for the "not found" errors (as is done before for EnumDynamicTimeZoneInformation()) fixes these three failures. https://test.winehq.org/data/patterns.html#advapi32:registry
The patch also gets rid of the displayname. Unless we wanted to check that some strings fit into 32 characters that should not matter. --- dlls/advapi32/tests/registry.c | 63 ++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 19 deletions(-)
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c index 66382876fa5..e678f449836 100644 --- a/dlls/advapi32/tests/registry.c +++ b/dlls/advapi32/tests/registry.c @@ -4012,9 +4012,8 @@ static void test_EnumDynamicTimeZoneInformation(void) { LSTATUS status; HKEY key, subkey; - WCHAR name[32]; + WCHAR name[128]; WCHAR keyname[128]; - WCHAR displayname[128]; WCHAR sysdir[MAX_PATH]; DWORD index, ret, gle, size; DYNAMIC_TIME_ZONE_INFORMATION bogus_dtzi, dtzi; @@ -4058,6 +4057,7 @@ static void test_EnumDynamicTimeZoneInformation(void) index = 0; while (!(status = RegEnumKeyW(key, index, keyname, ARRAY_SIZE(keyname)))) { + winetest_push_context("%s" , wine_dbgstr_w(keyname)); subkey = NULL; status = RegOpenKeyExW(key, keyname, 0, KEY_QUERY_VALUE, &subkey); ok(status == ERROR_SUCCESS, "got %d\n", status); @@ -4079,31 +4079,55 @@ static void test_EnumDynamicTimeZoneInformation(void) { size = sizeof(name); memset(name, 0, sizeof(name)); + status = pRegGetValueW(subkey, NULL, L"Std", RRF_RT_REG_SZ, NULL, name, &size); + ok(status == ERROR_SUCCESS, "status %d Std %s\n", status, + wine_dbgstr_w(name)); + ok(*name, "Std name is empty\n"); if (pRegLoadMUIStringW) + { + size = sizeof(name); + memset(name, 0, sizeof(name)); status = pRegLoadMUIStringW(subkey, L"MUI_Std", name, size, &size, 0, sysdir); - else - status = pRegGetValueW(subkey, NULL, L"Std", RRF_RT_REG_SZ, NULL, name, &size); - ok(status == ERROR_SUCCESS, "status %d name %s\n", status, wine_dbgstr_w(name)); - ok(!memcmp(&dtzi.StandardName, name, size), - "expected %s, got %s\n", wine_dbgstr_w(name), wine_dbgstr_w(dtzi.StandardName)); + ok(status == ERROR_SUCCESS, "status %d MUI_Std %s\n", + status, wine_dbgstr_w(name)); + } + ok(!memcmp(&dtzi.StandardName, name, size), "expected %s, got %s\n", + wine_dbgstr_w(name), wine_dbgstr_w(dtzi.StandardName));
size = sizeof(name); memset(name, 0, sizeof(name)); + status = pRegGetValueW(subkey, NULL, L"Dlt", RRF_RT_REG_SZ, NULL, name, &size); + ok(status == ERROR_SUCCESS, "status %d %s Dlt %s\n", + status, wine_dbgstr_w(keyname), wine_dbgstr_w(name)); + ok(*name, "Dlt name is empty\n"); if (pRegLoadMUIStringW) + { + size = sizeof(name); + memset(name, 0, sizeof(name)); status = pRegLoadMUIStringW(subkey, L"MUI_Dlt", name, size, &size, 0, sysdir); - else - status = pRegGetValueW(subkey, NULL, L"Dlt", RRF_RT_REG_SZ, NULL, name, &size); - ok(status == ERROR_SUCCESS, "status %d name %s\n", status, wine_dbgstr_w(name)); - ok(!memcmp(&dtzi.DaylightName, name, size), - "expected %s, got %s\n", wine_dbgstr_w(name), wine_dbgstr_w(dtzi.DaylightName)); - - size = sizeof(displayname); - memset(displayname, 0, sizeof(displayname)); + ok(status == ERROR_SUCCESS, "status %d %s MUI_Dlt %s\n", + status, wine_dbgstr_w(keyname), wine_dbgstr_w(name)); + } + ok(!memcmp(&dtzi.DaylightName, name, size), "expected %s, got %s\n", + wine_dbgstr_w(name), wine_dbgstr_w(dtzi.DaylightName)); + + size = sizeof(name); + memset(name, 0, sizeof(name)); + status = pRegGetValueW(subkey, NULL, L"Display", RRF_RT_REG_SZ, NULL, name, &size); + ok(status == ERROR_SUCCESS, "status %d %s Display %s\n", + status, wine_dbgstr_w(keyname), wine_dbgstr_w(name)); + ok(*name, "Display name is empty\n"); if (pRegLoadMUIStringW) - status = pRegLoadMUIStringW(subkey, L"MUI_Display", displayname, size, &size, 0, sysdir); - else - status = pRegGetValueW(subkey, NULL, L"Display", RRF_RT_REG_SZ, NULL, displayname, &size); - todo_wine ok(status == ERROR_SUCCESS, "status %d displayname %s\n", status, wine_dbgstr_w(displayname)); + { + size = sizeof(name); + memset(name, 0, sizeof(name)); + status = pRegLoadMUIStringW(subkey, L"MUI_Display", name, size, &size, 0, sysdir); + /* recently added time zones may not have MUI strings */ + todo_wine ok((status == ERROR_SUCCESS && *name) || + broken(status == ERROR_RESOURCE_TYPE_NOT_FOUND) /* Win10 1809 32-bit */ || + broken(status == ERROR_MUI_FILE_NOT_FOUND) /* Win10 1809 64-bit */, + "status %d MUI_Display %s\n", status, wine_dbgstr_w(name)); + } } else { @@ -4132,6 +4156,7 @@ static void test_EnumDynamicTimeZoneInformation(void) "expected %s, got %s\n", dbgstr_SYSTEMTIME(&tz_data.dlt_date), dbgstr_SYSTEMTIME(&dtzi.DaylightDate));
+ winetest_pop_context(); RegCloseKey(subkey); index++; }