Module: wine Branch: master Commit: 1a00dfe408b7bffeb9b1c4103c4eee1922d489f4 URL: https://source.winehq.org/git/wine.git/?a=commit;h=1a00dfe408b7bffeb9b1c4103...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Jun 28 12:50:20 2022 +0200
ntdll/tests: Add some tests for trailing slashes in paths.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/tests/file.c | 15 +++++++++++++++ dlls/ntdll/tests/path.c | 11 +++++++++++ 2 files changed, 26 insertions(+)
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c index 106413a83fc..b0b8eee1f2f 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c @@ -4251,6 +4251,21 @@ static void test_NtCreateFile(void) pRtlFreeUnicodeString( &nameW ); SetFileAttributesW(path, FILE_ATTRIBUTE_ARCHIVE); DeleteFileW( path ); + + wcscat( path, L"\" ); + pRtlDosPathNameToNtPathName_U(path, &nameW, NULL, NULL); + + status = pNtCreateFile( &handle, GENERIC_READ, &attr, &io, NULL, + 0, FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_CREATE, 0, NULL, 0); + todo_wine + ok( status == STATUS_OBJECT_NAME_INVALID, "failed %s %lx\n", debugstr_w(nameW.Buffer), status ); + if (!status) DeleteFileW( path ); + status = pNtCreateFile( &handle, GENERIC_READ, &attr, &io, NULL, + 0, FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_CREATE, + FILE_DIRECTORY_FILE, NULL, 0); + todo_wine + ok( !status, "failed %s %lx\n", debugstr_w(nameW.Buffer), status ); + if (!status) RemoveDirectoryW( path ); }
static void test_read_write(void) diff --git a/dlls/ntdll/tests/path.c b/dlls/ntdll/tests/path.c index 190c431ff79..0931d61450d 100644 --- a/dlls/ntdll/tests/path.c +++ b/dlls/ntdll/tests/path.c @@ -648,8 +648,14 @@ static void test_nt_names(void) { NULL, L"/??\C:\windows\system32\kernel32.dll", STATUS_OBJECT_PATH_SYNTAX_BAD }, { NULL, L"\??" L"/C:\windows\system32\kernel32.dll", STATUS_OBJECT_PATH_NOT_FOUND }, { NULL, L"\??\C:/windows\system32\kernel32.dll", STATUS_OBJECT_PATH_NOT_FOUND }, + { NULL, L"\??\C:\windows\system32\", STATUS_FILE_IS_A_DIRECTORY }, + { NULL, L"\??\C:\windows\SyStEm32\", STATUS_FILE_IS_A_DIRECTORY }, + { NULL, L"\??\C:\windows\system32\\", STATUS_OBJECT_NAME_INVALID }, + { NULL, L"\??\C:\windows\system32\foobar\", STATUS_OBJECT_NAME_NOT_FOUND }, { NULL, L"\??\C:\windows\system32\kernel32.dll\", STATUS_OBJECT_NAME_INVALID, 0, TRUE }, { NULL, L"\??\C:\windows\system32\kernel32.dll\foo", STATUS_OBJECT_PATH_NOT_FOUND, 0, TRUE }, + { NULL, L"\??\C:\windows\system32\Kernel32.Dll\", STATUS_OBJECT_NAME_INVALID, 0, TRUE }, + { NULL, L"\??\C:\windows\system32\Kernel32.Dll\foo", STATUS_OBJECT_PATH_NOT_FOUND, 0, TRUE }, { NULL, L"\??\C:\windows\sys\001", STATUS_OBJECT_NAME_INVALID }, { L"\??\", NULL, STATUS_OBJECT_NAME_INVALID }, { L"\??\C:\", NULL, STATUS_SUCCESS }, @@ -669,8 +675,13 @@ static void test_nt_names(void) { L"\??\C:\windows", L"system32\kernel32.dll", STATUS_SUCCESS }, { L"\??\C:\windows\", L"system32\kernel32.dll", STATUS_SUCCESS }, { L"\??\C:\windows\", L"system32\", STATUS_FILE_IS_A_DIRECTORY }, + { L"\??\C:\windows\", L"SyStEm32\", STATUS_FILE_IS_A_DIRECTORY }, + { L"\??\C:\windows\", L"system32\\", STATUS_OBJECT_NAME_INVALID }, + { L"\??\C:\windows\", L"system32\foobar\", STATUS_OBJECT_NAME_NOT_FOUND }, { L"\??\C:\windows\", L"system32\kernel32.dll\", STATUS_OBJECT_NAME_INVALID, 0, TRUE }, { L"\??\C:\windows\", L"system32\kernel32.dll\foo", STATUS_OBJECT_PATH_NOT_FOUND, 0, TRUE }, + { L"\??\C:\windows\", L"system32\Kernel32.Dll\", STATUS_OBJECT_NAME_INVALID, 0, TRUE }, + { L"\??\C:\windows\", L"system32\Kernel32.Dll\foo", STATUS_OBJECT_PATH_NOT_FOUND, 0, TRUE }, { L"\??\C:\windows\", L"\system32\kernel32.dll", STATUS_INVALID_PARAMETER }, { L"\??\C:\windows\", L"/system32\kernel32.dll", STATUS_OBJECT_NAME_INVALID }, { L"\??\C:\windows\", L".\system32\kernel32.dll", STATUS_OBJECT_NAME_INVALID, STATUS_OBJECT_PATH_NOT_FOUND },