Stefan Leichter wrote:
ChangeLog
add some tests for RegDeleteTreeA
Hi Stefan
good to see someone picked up this thing. I ran your new tests on Vista Ultimate and comments are below. (I ran the tests while bypassing UAC, as administrator).
--- ../wine-git/dlls/advapi32/tests/registry.c 2007-03-17 08:36:33.000000000 +0100 +++ dlls/advapi32/tests/registry.c 2007-04-01 14:00:12.000000000 +0200 @@ -35,6 +35,7 @@
static HMODULE hadvapi32; static DWORD (WINAPI *pRegGetValueA)(HKEY,LPCSTR,LPCSTR,DWORD,LPDWORD,PVOID,LPDWORD); +static DWORD (WINAPI *pRegDeleteTreeA)(HKEY,LPCSTR);
#define ADVAPI32_GET_PROC(func) \ p ## func = (void*)GetProcAddress(hadvapi32, #func); \ @@ -47,6 +48,7 @@
/* This function was introduced with Windows 2003 SP1 */ ADVAPI32_GET_PROC(RegGetValueA)
- ADVAPI32_GET_PROC(RegDeleteTreeA)
}
/* delete key and all its subkeys */ @@ -872,6 +874,53 @@ RegDeleteKeyA(subkey, ""); }
+static void test_reg_delete_tree(void) +{
- CHAR buffer[MAX_PATH];
- HKEY subkey, subkey2;
- LONG size, ret;
- if(!pRegDeleteTreeA) return;
Can you add a skip here?
- ret = RegCreateKeyA(hkey_main, "subkey", &subkey);
- ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
- ret = RegCreateKeyA(subkey, "subkey2", &subkey2);
- ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
- ret = RegSetValueA(subkey, NULL, REG_SZ, "data", 4);
- ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
- ret = RegSetValueA(subkey2, NULL, REG_SZ, "data2", 5);
- ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
- ret = RegCloseKey(subkey2);
- ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
- ret = pRegDeleteTreeA(subkey, "subkey2");
- ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
- ok(RegOpenKeyA(subkey, "subkey2", &subkey2),
"subkey2 was not deleted\n");
- size = MAX_PATH;
- ok(!RegQueryValueA(subkey, "subkey", buffer, &size),
"Default value of subkey not longer present\n");
This test fails so it must mean the default value should have been deleted.
- ret = RegCreateKeyA(subkey, "subkey2", &subkey2);
- ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
- ret = RegCloseKey(subkey2);
- ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
- ret = pRegDeleteTreeA(hkey_main, "subkey\subkey2");
- ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
- ok(RegOpenKeyA(subkey, "subkey2", &subkey2),
"subkey2 was not deleted\n");
- ok(!RegQueryValueA(subkey, "subkey", buffer, &size),
"Default value of subkey not longer present\n");
This test fails so it must mean the default value should have been deleted.
- ret = pRegDeleteTreeA(subkey, NULL);
- ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
- ok(RegOpenKeyA(hkey_main, "subkey", &subkey),
"subkey was not deleted\n");
The subkey will not be deleted by RegDeleteTree (see MSDN). This is the main difference between RegDeleteTree and SHDeleteKey (where the main key is deleted).
- ret = pRegDeleteTreeA(hkey_main, "not-here");
- trace("deleting an not existing key returned %d\n", ret);
The answer to this one is 2 : ERROR_FILE_NOT_FOUND
+}
START_TEST(registry) { /* Load pointers for functions that are not available in all Windows versions */ @@ -901,6 +950,8 @@ set_privileges(SE_RESTORE_NAME, FALSE); }
- test_reg_delete_tree();
- /* cleanup */ delete_key( hkey_main );
Cheers,
Paul.
Am Sunday 01 April 2007 20:19 schrieb Paul Vriens:
Stefan Leichter wrote:
ChangeLog
add some tests for RegDeleteTreeA
Hi Stefan
good to see someone picked up this thing. I ran your new tests on Vista Ultimate and comments are below. (I ran the tests while bypassing UAC, as administrator).
Hello Paul,
thank you for verifying the tests before they get into git. This will save us some git cycles to get all tests pass. Can you please retest the new patch.
Thanks Stefan
On 4/2/07, Stefan Leichter Stefan.Leichter@camline.com wrote:
Am Sunday 01 April 2007 20:19 schrieb Paul Vriens:
Stefan Leichter wrote:
ChangeLog
add some tests for RegDeleteTreeA
Hi Stefan
good to see someone picked up this thing. I ran your new tests on Vista Ultimate and comments are below. (I ran the tests while bypassing UAC, as administrator).
Hello Paul,
thank you for verifying the tests before they get into git. This will save us some git cycles to get all tests pass. Can you please retest the new patch.
Thanks Stefan
Hi Stefan,
only one failure left. When 'ret = pRegDeleteTreeA(subkey, NULL);' is called the system deletes the original default but creates a new one. This means the last test 'ok(RegQueryValueA(subkey, NULL, buffer, &size)' fails. Maybe this check should be against the original default (where some data is present).
Cheers,
Paul.