Kirill K. Smirnov : kernel32/tests:
Add tests for NeedCurrentDirectoryForExePath.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Apr 27 06:44:01 CDT 2007
Module: wine
Branch: master
Commit: 9eb0c8720459fa73da61600d4ed45e39f9aeff57
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9eb0c8720459fa73da61600d4ed45e39f9aeff57
Author: Kirill K. Smirnov <lich at math.spbu.ru>
Date: Wed Apr 25 11:41:11 2007 +0400
kernel32/tests: Add tests for NeedCurrentDirectoryForExePath.
---
dlls/kernel32/tests/path.c | 57 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 57 insertions(+), 0 deletions(-)
diff --git a/dlls/kernel32/tests/path.c b/dlls/kernel32/tests/path.c
index 33fcf6f..47ec23f 100644
--- a/dlls/kernel32/tests/path.c
+++ b/dlls/kernel32/tests/path.c
@@ -53,6 +53,10 @@ static const CHAR is_char_ok[] ="11111110111111111011";
static DWORD (WINAPI *pGetLongPathNameA)(LPCSTR,LPSTR,DWORD);
static DWORD (WINAPI *pGetLongPathNameW)(LPWSTR,LPWSTR,DWORD);
+/* Present in Win2003+ */
+static BOOL (WINAPI *pNeedCurrentDirectoryForExePathA)(LPCSTR);
+static BOOL (WINAPI *pNeedCurrentDirectoryForExePathW)(LPCWSTR);
+
/* a structure to deal with wine todos somewhat cleanly */
typedef struct {
DWORD shortlen;
@@ -1074,6 +1078,44 @@ static void test_GetWindowsDirectory(void)
res, GetLastError(), buffer, total);
}
+static void test_NeedCurrentDirectoryForExePathA(void)
+{
+ /* Crashes in Windows */
+ if (0)
+ ok(pNeedCurrentDirectoryForExePathA(NULL), "returned FALSE for NULL\n");
+
+ SetEnvironmentVariableA("NoDefaultCurrentDirectoryInExePath", NULL);
+ ok(pNeedCurrentDirectoryForExePathA("."), "returned FALSE for \".\"\n");
+ ok(pNeedCurrentDirectoryForExePathA("c:\\"), "returned FALSE for \"c:\\\"\n");
+ ok(pNeedCurrentDirectoryForExePathA("cmd.exe"), "returned FALSE for \"cmd.exe\"\n");
+
+ SetEnvironmentVariableA("NoDefaultCurrentDirectoryInExePath", "nya");
+ ok(!pNeedCurrentDirectoryForExePathA("."), "returned TRUE for \".\"\n");
+ ok(pNeedCurrentDirectoryForExePathA("c:\\"), "returned FALSE for \"c:\\\"\n");
+ ok(!pNeedCurrentDirectoryForExePathA("cmd.exe"), "returned TRUE for \"cmd.exe\"\n");
+}
+
+static void test_NeedCurrentDirectoryForExePathW(void)
+{
+ const WCHAR thispath[] = {'.', 0};
+ const WCHAR fullpath[] = {'c', ':', '\\', 0};
+ const WCHAR cmdname[] = {'c', 'm', 'd', '.', 'e', 'x', 'e', 0};
+
+ /* Crashes in Windows */
+ if (0)
+ ok(pNeedCurrentDirectoryForExePathW(NULL), "returned FALSE for NULL\n");
+
+ SetEnvironmentVariableA("NoDefaultCurrentDirectoryInExePath", NULL);
+ ok(pNeedCurrentDirectoryForExePathW(thispath), "returned FALSE for \".\"\n");
+ ok(pNeedCurrentDirectoryForExePathW(fullpath), "returned FALSE for \"c:\\\"\n");
+ ok(pNeedCurrentDirectoryForExePathW(cmdname), "returned FALSE for \"cmd.exe\"\n");
+
+ SetEnvironmentVariableA("NoDefaultCurrentDirectoryInExePath", "nya");
+ ok(!pNeedCurrentDirectoryForExePathW(thispath), "returned TRUE for \".\"\n");
+ ok(pNeedCurrentDirectoryForExePathW(fullpath), "returned FALSE for \"c:\\\"\n");
+ ok(!pNeedCurrentDirectoryForExePathW(cmdname), "returned TRUE for \"cmd.exe\"\n");
+}
+
START_TEST(path)
{
CHAR origdir[MAX_PATH],curdir[MAX_PATH], curDrive, otherDrive;
@@ -1081,6 +1123,13 @@ START_TEST(path)
"GetLongPathNameA" );
pGetLongPathNameW = (void*)GetProcAddress(GetModuleHandleA("kernel32.dll") ,
"GetLongPathNameW" );
+ pNeedCurrentDirectoryForExePathA =
+ (void*)GetProcAddress( GetModuleHandleA("kernel32.dll"),
+ "NeedCurrentDirectoryForExePathA" );
+ pNeedCurrentDirectoryForExePathW =
+ (void*)GetProcAddress( GetModuleHandleA("kernel32.dll"),
+ "NeedCurrentDirectoryForExePathW" );
+
test_InitPathA(curdir, &curDrive, &otherDrive);
test_CurrentDirectoryA(origdir,curdir);
test_PathNameA(curdir, curDrive, otherDrive);
@@ -1089,4 +1138,12 @@ START_TEST(path)
test_GetLongPathNameW();
test_GetSystemDirectory();
test_GetWindowsDirectory();
+ if (pNeedCurrentDirectoryForExePathA)
+ {
+ test_NeedCurrentDirectoryForExePathA();
+ }
+ if (pNeedCurrentDirectoryForExePathW)
+ {
+ test_NeedCurrentDirectoryForExePathW();
+ }
}
More information about the wine-cvs
mailing list