From 4c6a61d2c9e48e60dd5517a0a4866675181a82ea Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Tue, 1 Nov 2016 11:13:25 -0700 Subject: [PATCH] tst: winfsp-tests: refactoring/fixes when running --ntfs/--external tests --- tst/winfsp-tests/create-test.c | 37 ++++++++-------- tst/winfsp-tests/dirctl-test.c | 12 ++--- tst/winfsp-tests/flush-test.c | 10 ++--- tst/winfsp-tests/info-test.c | 44 ++++++++++-------- tst/winfsp-tests/lock-test.c | 24 +++++----- tst/winfsp-tests/rdwr-test.c | 76 ++++++++++++++++---------------- tst/winfsp-tests/reparse-test.c | 16 +++---- tst/winfsp-tests/security-test.c | 8 ++-- tst/winfsp-tests/stream-tests.c | 52 +++++++++++----------- tst/winfsp-tests/winfsp-tests.c | 51 +++++++++++---------- tst/winfsp-tests/winfsp-tests.h | 4 ++ 11 files changed, 175 insertions(+), 159 deletions(-) diff --git a/tst/winfsp-tests/create-test.c b/tst/winfsp-tests/create-test.c index eb835cb9..18099f07 100644 --- a/tst/winfsp-tests/create-test.c +++ b/tst/winfsp-tests/create-test.c @@ -207,8 +207,8 @@ void create_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); create_dotest(-1, DirBuf); } if (WinFspDiskTests) @@ -268,8 +268,8 @@ void create_related_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); create_related_dotest(-1, DirBuf); } if (WinFspDiskTests) @@ -378,8 +378,8 @@ void create_sd_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); create_sd_dotest(-1, DirBuf); } if (WinFspDiskTests) @@ -495,8 +495,8 @@ void create_notraverse_test(void) if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); create_notraverse_dotest(-1, DirBuf); } if (WinFspDiskTests) @@ -609,8 +609,8 @@ void create_backup_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); create_backup_dotest(-1, DirBuf); } if (WinFspDiskTests) @@ -742,8 +742,8 @@ void create_restore_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); create_restore_dotest(-1, DirBuf); } if (WinFspDiskTests) @@ -816,8 +816,8 @@ void create_share_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); create_share_dotest(-1, DirBuf); } if (WinFspDiskTests) @@ -833,9 +833,8 @@ void create_curdir_dotest(ULONG Flags, PWSTR Prefix) WCHAR CurrentDirectory[MAX_PATH], FilePath[MAX_PATH]; BOOL Success; - StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s%s", - Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs), - Prefix ? L"" : L"\\"); + StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\", + Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs)); Success = GetCurrentDirectoryW(MAX_PATH, CurrentDirectory); ASSERT(Success); @@ -853,8 +852,8 @@ void create_curdir_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); create_curdir_dotest(-1, DirBuf); } if (WinFspDiskTests) diff --git a/tst/winfsp-tests/dirctl-test.c b/tst/winfsp-tests/dirctl-test.c index baf3c797..53388016 100644 --- a/tst/winfsp-tests/dirctl-test.c +++ b/tst/winfsp-tests/dirctl-test.c @@ -243,8 +243,8 @@ void querydir_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); querydir_dotest(-1, DirBuf, 0, 0); } if (WinFspDiskTests) @@ -394,8 +394,8 @@ void querydir_buffer_overflow_test(void) if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); querydir_buffer_overflow_dotest(-1, DirBuf, 0, 0); } if (WinFspDiskTests) @@ -522,8 +522,8 @@ void dirnotify_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); dirnotify_dotest(-1, DirBuf, 0, 0); } if (WinFspDiskTests && !OptNoTraverseToken diff --git a/tst/winfsp-tests/flush-test.c b/tst/winfsp-tests/flush-test.c index 44a28609..a6a96096 100644 --- a/tst/winfsp-tests/flush-test.c +++ b/tst/winfsp-tests/flush-test.c @@ -234,11 +234,11 @@ void flush_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - flush_dotest(-1, L"C:", DirBuf, 0, 0, FALSE); - flush_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_WRITE_THROUGH, FALSE); - flush_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_NO_BUFFERING, FALSE); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + flush_dotest(-1, DriveBuf, DirBuf, 0, 0, FALSE); + flush_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_WRITE_THROUGH, FALSE); + flush_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_NO_BUFFERING, FALSE); } if (WinFspDiskTests) { diff --git a/tst/winfsp-tests/info-test.c b/tst/winfsp-tests/info-test.c index 5371315f..ee4de106 100644 --- a/tst/winfsp-tests/info-test.c +++ b/tst/winfsp-tests/info-test.c @@ -143,8 +143,8 @@ void getfileinfo_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); getfileinfo_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -244,8 +244,8 @@ void getfileinfo_name_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); getfileinfo_name_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -327,8 +327,8 @@ void setfileinfo_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); setfileinfo_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -392,8 +392,8 @@ void delete_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); delete_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -463,8 +463,8 @@ void delete_access_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); delete_access_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -575,8 +575,8 @@ void rename_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); rename_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -648,8 +648,8 @@ void rename_caseins_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); rename_caseins_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -762,8 +762,8 @@ void rename_flipflop_test(void) if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); rename_flipflop_dotest(-1, DirBuf, 0, 10); } if (WinFspDiskTests) @@ -846,7 +846,11 @@ void getvolinfo_dotest(ULONG Flags, PWSTR Prefix, ULONG FileInfoTimeout) void getvolinfo_test(void) { if (NtfsTests) - getvolinfo_dotest(-1, L"C:", 0); + { + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + getvolinfo_dotest(-1, DriveBuf, 0); + } if (WinFspDiskTests) { getvolinfo_dotest(MemfsDisk, 0, 0); @@ -938,7 +942,11 @@ void setvolinfo_test(void) { #if 0 if (NtfsTests) - setvolinfo_dotest(-1, L"C:", 0); + { + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + setvolinfo_dotest(-1, DriveBuf, 0); + } #endif if (WinFspDiskTests) { diff --git a/tst/winfsp-tests/lock-test.c b/tst/winfsp-tests/lock-test.c index 16bc797e..c8e8c2a2 100644 --- a/tst/winfsp-tests/lock-test.c +++ b/tst/winfsp-tests/lock-test.c @@ -475,9 +475,9 @@ void lock_noncached_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - lock_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_NO_BUFFERING); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + lock_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_NO_BUFFERING); } if (WinFspDiskTests) { @@ -495,9 +495,9 @@ void lock_noncached_overlapped_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - lock_overlapped_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_NO_BUFFERING); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + lock_overlapped_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_NO_BUFFERING); } if (WinFspDiskTests) { @@ -515,9 +515,9 @@ void lock_cached_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - lock_dotest(-1, L"C:", DirBuf, 0, 0); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + lock_dotest(-1, DriveBuf, DirBuf, 0, 0); } if (WinFspDiskTests) { @@ -535,9 +535,9 @@ void lock_cached_overlapped_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - lock_overlapped_dotest(-1, L"C:", DirBuf, 0, 0); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + lock_overlapped_dotest(-1, DriveBuf, DirBuf, 0, 0); } if (WinFspDiskTests) { diff --git a/tst/winfsp-tests/rdwr-test.c b/tst/winfsp-tests/rdwr-test.c index efe71942..16afdeaa 100644 --- a/tst/winfsp-tests/rdwr-test.c +++ b/tst/winfsp-tests/rdwr-test.c @@ -820,9 +820,9 @@ void rdwr_noncached_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - rdwr_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_NO_BUFFERING); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + rdwr_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_NO_BUFFERING); } if (WinFspDiskTests) { @@ -845,9 +845,9 @@ void rdwr_noncached_append_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - rdwr_append_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_NO_BUFFERING); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + rdwr_append_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_NO_BUFFERING); } if (WinFspDiskTests) { @@ -866,9 +866,9 @@ void rdwr_noncached_overlapped_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - rdwr_overlapped_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_NO_BUFFERING); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + rdwr_overlapped_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_NO_BUFFERING); } if (WinFspDiskTests) { @@ -886,9 +886,9 @@ void rdwr_cached_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - rdwr_dotest(-1, L"C:", DirBuf, 0, 0); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + rdwr_dotest(-1, DriveBuf, DirBuf, 0, 0); } if (WinFspDiskTests) { @@ -906,9 +906,9 @@ void rdwr_cached_append_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - rdwr_append_dotest(-1, L"C:", DirBuf, 0, 0); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + rdwr_append_dotest(-1, DriveBuf, DirBuf, 0, 0); } if (WinFspDiskTests) { @@ -926,9 +926,9 @@ void rdwr_cached_overlapped_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - rdwr_overlapped_dotest(-1, L"C:", DirBuf, 0, 0); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + rdwr_overlapped_dotest(-1, DriveBuf, DirBuf, 0, 0); } if (WinFspDiskTests) { @@ -946,9 +946,9 @@ void rdwr_writethru_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - rdwr_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_WRITE_THROUGH); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + rdwr_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_WRITE_THROUGH); } if (WinFspDiskTests) { @@ -966,9 +966,9 @@ void rdwr_writethru_append_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - rdwr_append_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_WRITE_THROUGH); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + rdwr_append_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_WRITE_THROUGH); } if (WinFspDiskTests) { @@ -986,9 +986,9 @@ void rdwr_writethru_overlapped_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - rdwr_overlapped_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_WRITE_THROUGH); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + rdwr_overlapped_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_WRITE_THROUGH); } if (WinFspDiskTests) { @@ -1006,14 +1006,14 @@ void rdwr_mmap_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - rdwr_mmap_dotest(-1, L"C:", DirBuf, 0, 0, FALSE); - rdwr_mmap_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_NO_BUFFERING, FALSE); - rdwr_mmap_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_WRITE_THROUGH, FALSE); - rdwr_mmap_dotest(-1, L"C:", DirBuf, 0, 0, TRUE); - rdwr_mmap_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_NO_BUFFERING, TRUE); - rdwr_mmap_dotest(-1, L"C:", DirBuf, 0, FILE_FLAG_WRITE_THROUGH, TRUE); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + rdwr_mmap_dotest(-1, DriveBuf, DirBuf, 0, 0, FALSE); + rdwr_mmap_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_NO_BUFFERING, FALSE); + rdwr_mmap_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_WRITE_THROUGH, FALSE); + rdwr_mmap_dotest(-1, DriveBuf, DirBuf, 0, 0, TRUE); + rdwr_mmap_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_NO_BUFFERING, TRUE); + rdwr_mmap_dotest(-1, DriveBuf, DirBuf, 0, FILE_FLAG_WRITE_THROUGH, TRUE); } if (WinFspDiskTests) { @@ -1081,9 +1081,9 @@ void rdwr_mixed_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); - rdwr_mixed_dotest(-1, L"C:", DirBuf, 0); + WCHAR DirBuf[MAX_PATH], DriveBuf[3]; + GetTestDirectoryAndDrive(DirBuf, DriveBuf); + rdwr_mixed_dotest(-1, DriveBuf, DirBuf, 0); } if (WinFspDiskTests) { diff --git a/tst/winfsp-tests/reparse-test.c b/tst/winfsp-tests/reparse-test.c index 55864211..d1f7ff5f 100644 --- a/tst/winfsp-tests/reparse-test.c +++ b/tst/winfsp-tests/reparse-test.c @@ -112,8 +112,8 @@ void reparse_guid_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); reparse_guid_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -215,8 +215,8 @@ void reparse_nfs_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); reparse_nfs_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -322,8 +322,8 @@ void reparse_symlink_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); reparse_symlink_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -535,8 +535,8 @@ void reparse_symlink_relative_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); reparse_symlink_relative_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) diff --git a/tst/winfsp-tests/security-test.c b/tst/winfsp-tests/security-test.c index 4ba6bd0d..4478fd26 100644 --- a/tst/winfsp-tests/security-test.c +++ b/tst/winfsp-tests/security-test.c @@ -113,8 +113,8 @@ void getsecurity_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); getsecurity_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -241,8 +241,8 @@ void setsecurity_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); setsecurity_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) diff --git a/tst/winfsp-tests/stream-tests.c b/tst/winfsp-tests/stream-tests.c index 08ec8d29..4f85294d 100644 --- a/tst/winfsp-tests/stream-tests.c +++ b/tst/winfsp-tests/stream-tests.c @@ -344,8 +344,8 @@ static void stream_create_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); stream_create_dotest(-1, DirBuf); } if (WinFspDiskTests) @@ -404,8 +404,8 @@ static void stream_create_related_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); stream_create_related_dotest(-1, DirBuf); } if (WinFspDiskTests) @@ -493,8 +493,8 @@ static void stream_create_sd_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); stream_create_sd_dotest(-1, DirBuf); } if (WinFspDiskTests) @@ -806,8 +806,8 @@ static void stream_create_share_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); stream_create_share_dotest(-1, DirBuf); } if (WinFspDiskTests) @@ -1040,8 +1040,8 @@ static void stream_getfileinfo_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); stream_getfileinfo_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -1174,8 +1174,8 @@ static void stream_setfileinfo_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); stream_setfileinfo_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -1257,8 +1257,8 @@ static void stream_delete_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); stream_delete_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -1373,8 +1373,8 @@ static void stream_delete_pending_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); stream_delete_pending_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -1487,8 +1487,8 @@ static void stream_rename_flipflop_test(void) if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); stream_rename_flipflop_dotest(-1, DirBuf, 0, 10); } if (WinFspDiskTests) @@ -1660,8 +1660,8 @@ static void stream_getsecurity_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); stream_getsecurity_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -1792,8 +1792,8 @@ static void stream_setsecurity_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); stream_setsecurity_dotest(-1, DirBuf, 0); } if (WinFspDiskTests) @@ -2007,8 +2007,8 @@ void stream_getstreaminfo_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); stream_getstreaminfo_dotest(-1, DirBuf, 0, 0); } if (WinFspDiskTests) @@ -2145,8 +2145,8 @@ void stream_dirnotify_test(void) { if (NtfsTests) { - WCHAR DirBuf[MAX_PATH] = L"\\\\?\\"; - GetCurrentDirectoryW(MAX_PATH - 4, DirBuf + 4); + WCHAR DirBuf[MAX_PATH]; + GetTestDirectory(DirBuf); stream_dirnotify_dotest(-1, DirBuf, 0, 0); } if (WinFspDiskTests && !OptNoTraverseToken diff --git a/tst/winfsp-tests/winfsp-tests.c b/tst/winfsp-tests/winfsp-tests.c index 0052d428..8d88572a 100644 --- a/tst/winfsp-tests/winfsp-tests.c +++ b/tst/winfsp-tests/winfsp-tests.c @@ -38,9 +38,6 @@ WCHAR OptShareNameBuf[MAX_PATH], *OptShareName, *OptShareTarget; HANDLE OptNoTraverseToken = 0; LUID OptNoTraverseLuid; -static WCHAR CurrentDirectory[MAX_PATH]; -static PWSTR TestDirectory = L"winfsp-tests"; - static void exiting(void); int mywcscmp(PWSTR a, int alen, PWSTR b, int blen) @@ -78,6 +75,34 @@ int myrand(void) return (myrandseed >> 16) & RAND_MAX; } +VOID GetTestDirectoryEx(PWSTR DirBuf, ULONG DirBufSize, PWSTR DriveBuf) +{ + DirBufSize /= sizeof(WCHAR); + if (MAX_PATH > DirBufSize) + ABORT("test directory buffer must be at least MAX_PATH long"); + + DWORD Result = GetCurrentDirectoryW(DirBufSize - 4, DirBuf + 4); + if (0 == Result || Result >= DirBufSize - 4) + ABORT("GetCurrentDirectoryW failed"); + + if (!testalpha(DirBuf[4]) || L':' != DirBuf[5]) + ABORT("--ntfs/--external tests must be run from a drive"); + + DirBuf[0] = L'\\'; + DirBuf[1] = L'\\'; + DirBuf[2] = L'?'; + DirBuf[3] = L'\\'; + if (L'\\' == DirBuf[6] && L'\0' == DirBuf[7]) + DirBuf[6] = L'\0'; + + if (0 != DriveBuf) + { + DriveBuf[0] = DirBuf[4]; + DriveBuf[1] = L':'; + DriveBuf[2] = L'\0'; + } +} + static VOID DisableBackupRestorePrivileges(VOID) { union @@ -255,20 +280,6 @@ int main(int argc, char *argv[]) myrandseed = (unsigned)time(0); - if (NtfsTests) - { - if (!GetCurrentDirectoryW(MAX_PATH, CurrentDirectory)) - ABORT("cannot get test directory"); - - /* create a directory for testing */ - if (!CreateDirectoryW(TestDirectory, 0)) - ABORT("cannot create test directory"); - - /* change into the directory */ - if (!SetCurrentDirectoryW(TestDirectory)) - ABORT("cannot change to test directory"); - } - tlib_run_tests(argc, argv); return 0; } @@ -277,11 +288,5 @@ static void exiting(void) { OutputDebugStringA("winfsp-tests: exiting\n"); - if (NtfsTests) - { - if (SetCurrentDirectoryW(CurrentDirectory)) - RemoveDirectoryW(TestDirectory); - } - RemoveNetShareIfNeeded(); } diff --git a/tst/winfsp-tests/winfsp-tests.h b/tst/winfsp-tests/winfsp-tests.h index 2b5cd9b4..a813f2e1 100644 --- a/tst/winfsp-tests/winfsp-tests.h +++ b/tst/winfsp-tests/winfsp-tests.h @@ -129,6 +129,10 @@ PWSTR memfs_volumename(void *data); int mywcscmp(PWSTR a, int alen, PWSTR b, int blen); int myrand(void); +#define GetTestDirectory(D) GetTestDirectoryEx(DirBuf, sizeof DirBuf, 0) +#define GetTestDirectoryAndDrive(D,V) GetTestDirectoryEx(DirBuf, sizeof DirBuf, V) +VOID GetTestDirectoryEx(PWSTR DirBuf, ULONG DirBufSize, PWSTR DriveBuf); + extern int NtfsTests; extern int WinFspDiskTests; extern int WinFspNetTests;