Thomas Faber : dbghelp/tests: Add tests for SymSetSearchPath.
Module: wine Branch: master Commit: 6bedd7cce6eda193646dd87487d59302bce4c88e URL: https://source.winehq.org/git/wine.git/?a=commit;h=6bedd7cce6eda193646dd8748... Author: Thomas Faber <thomas.faber(a)reactos.org> Date: Sat Oct 3 17:18:57 2020 +0200 dbghelp/tests: Add tests for SymSetSearchPath. Signed-off-by: Thomas Faber <thomas.faber(a)reactos.org> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dbghelp/tests/dbghelp.c | 73 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/dlls/dbghelp/tests/dbghelp.c b/dlls/dbghelp/tests/dbghelp.c index a243d047d18..06c21ec288c 100644 --- a/dlls/dbghelp/tests/dbghelp.c +++ b/dlls/dbghelp/tests/dbghelp.c @@ -132,12 +132,83 @@ static void test_stack_walk(void) #endif /* __i386__ || __x86_64__ */ +static void test_search_path(void) +{ + char search_path[128]; + BOOL ret; + + /* The default symbol path is ".[;%_NT_SYMBOL_PATH%][;%_NT_ALT_SYMBOL_PATH%]". + * We unset both variables earlier so should simply get "." */ + ret = SymGetSearchPath(GetCurrentProcess(), search_path, ARRAY_SIZE(search_path)); + ok(ret == TRUE, "ret = %d\n", ret); + todo_wine + ok(!strcmp(search_path, "."), "Got search path '%s', expected '.'\n", search_path); + + /* Set an arbitrary search path */ + ret = SymSetSearchPath(GetCurrentProcess(), "W:\\"); + ok(ret == TRUE, "ret = %d\n", ret); + ret = SymGetSearchPath(GetCurrentProcess(), search_path, ARRAY_SIZE(search_path)); + ok(ret == TRUE, "ret = %d\n", ret); + ok(!strcmp(search_path, "W:\\"), "Got search path '%s', expected 'W:\\'\n", search_path); + + /* Setting to NULL resets to the default */ + ret = SymSetSearchPath(GetCurrentProcess(), NULL); + ok(ret == TRUE, "ret = %d\n", ret); + ret = SymGetSearchPath(GetCurrentProcess(), search_path, ARRAY_SIZE(search_path)); + ok(ret == TRUE, "ret = %d\n", ret); + todo_wine + ok(!strcmp(search_path, "."), "Got search path '%s', expected '.'\n", search_path); + + /* With _NT_SYMBOL_PATH */ + SetEnvironmentVariableA("_NT_SYMBOL_PATH", "X:\\"); + ret = SymSetSearchPath(GetCurrentProcess(), NULL); + ok(ret == TRUE, "ret = %d\n", ret); + ret = SymGetSearchPath(GetCurrentProcess(), search_path, ARRAY_SIZE(search_path)); + ok(ret == TRUE, "ret = %d\n", ret); + todo_wine + ok(!strcmp(search_path, ".;X:\\"), "Got search path '%s', expected '.;X:\\'\n", search_path); + + /* With both _NT_SYMBOL_PATH and _NT_ALT_SYMBOL_PATH */ + SetEnvironmentVariableA("_NT_ALT_SYMBOL_PATH", "Y:\\"); + ret = SymSetSearchPath(GetCurrentProcess(), NULL); + ok(ret == TRUE, "ret = %d\n", ret); + ret = SymGetSearchPath(GetCurrentProcess(), search_path, ARRAY_SIZE(search_path)); + ok(ret == TRUE, "ret = %d\n", ret); + todo_wine + ok(!strcmp(search_path, ".;X:\\;Y:\\"), "Got search path '%s', expected '.;X:\\;Y:\\'\n", search_path); + + /* With just _NT_ALT_SYMBOL_PATH */ + SetEnvironmentVariableA("_NT_SYMBOL_PATH", NULL); + ret = SymSetSearchPath(GetCurrentProcess(), NULL); + ok(ret == TRUE, "ret = %d\n", ret); + ret = SymGetSearchPath(GetCurrentProcess(), search_path, ARRAY_SIZE(search_path)); + ok(ret == TRUE, "ret = %d\n", ret); + todo_wine + ok(!strcmp(search_path, ".;Y:\\"), "Got search path '%s', expected '.;Y:\\'\n", search_path); + + /* Restore original search path */ + SetEnvironmentVariableA("_NT_ALT_SYMBOL_PATH", NULL); + ret = SymSetSearchPath(GetCurrentProcess(), NULL); + ok(ret == TRUE, "ret = %d\n", ret); + ret = SymGetSearchPath(GetCurrentProcess(), search_path, ARRAY_SIZE(search_path)); + ok(ret == TRUE, "ret = %d\n", ret); + todo_wine + ok(!strcmp(search_path, "."), "Got search path '%s', expected '.'\n", search_path); +} + START_TEST(dbghelp) { - BOOL ret = SymInitialize(GetCurrentProcess(), NULL, TRUE); + BOOL ret; + + /* Don't let the user's environment influence our symbol path */ + SetEnvironmentVariableA("_NT_SYMBOL_PATH", NULL); + SetEnvironmentVariableA("_NT_ALT_SYMBOL_PATH", NULL); + + ret = SymInitialize(GetCurrentProcess(), NULL, TRUE); ok(ret, "got error %u\n", GetLastError()); test_stack_walk(); + test_search_path(); ret = SymCleanup(GetCurrentProcess()); ok(ret, "got error %u\n", GetLastError());
participants (1)
-
Alexandre Julliard