From 0903d4b83ecacb0f1f6fadf23e0ac0e38799aba6 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Thu, 7 Nov 2024 09:17:32 -0600 Subject: [PATCH] winfsp unit tests and fixes --- .../src/winfsp_drive_create_attr_test.cpp | 36 +++++----- .../src/winfsp_drive_create_nl_test.cpp | 20 +++--- .../src/winfsp_drive_create_test.cpp | 67 ++++++++++--------- .../src/winfsp_drive_delete_test.cpp | 34 ++++++++-- .../src/winfsp_drive_info_test.cpp | 52 +++++++------- 5 files changed, 118 insertions(+), 91 deletions(-) diff --git a/repertory/repertory_test/src/winfsp_drive_create_attr_test.cpp b/repertory/repertory_test/src/winfsp_drive_create_attr_test.cpp index 2331b980..b85f2688 100644 --- a/repertory/repertory_test/src/winfsp_drive_create_attr_test.cpp +++ b/repertory/repertory_test/src/winfsp_drive_create_attr_test.cpp @@ -36,8 +36,8 @@ TYPED_TEST(winfsp_test, cr8_attr_can_create_new_file_with_normal_attribute) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + CREATE_NEW, FILE_ATTRIBUTE_NORMAL, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); @@ -53,8 +53,8 @@ TYPED_TEST(winfsp_test, cr8_attr_can_create_new_file_with_read_only_attribute) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_READONLY, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + CREATE_NEW, FILE_ATTRIBUTE_READONLY, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); @@ -73,8 +73,8 @@ TYPED_TEST(winfsp_test, cr8_attr_can_create_new_file_with_read_only_attribute) { // // auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | // GENERIC_WRITE, -// FILE_SHARE_READ | FILE_SHARE_WRITE, 0, -// CREATE_NEW, FILE_ATTRIBUTE_SYSTEM, 0); +// FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, +// CREATE_NEW, FILE_ATTRIBUTE_SYSTEM, nullptr); // ASSERT_NE(INVALID_HANDLE_VALUE, handle); // ::CloseHandle(handle); // @@ -93,8 +93,8 @@ TYPED_TEST(winfsp_test, cr8_attr_can_create_new_file_with_hidden_attribute) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_HIDDEN, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + CREATE_NEW, FILE_ATTRIBUTE_HIDDEN, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); @@ -112,8 +112,8 @@ TYPED_TEST(winfsp_test, cr8_attr_can_create_always_file_with_normal_attribute) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, - CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); @@ -129,8 +129,8 @@ TYPED_TEST(winfsp_test, cr8_attr_can_create_file_with_read_only_attribute) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, - CREATE_ALWAYS, FILE_ATTRIBUTE_READONLY, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + CREATE_ALWAYS, FILE_ATTRIBUTE_READONLY, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); @@ -150,8 +150,8 @@ TYPED_TEST(winfsp_test, cr8_attr_can_create_file_with_read_only_attribute) { // // auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | // GENERIC_WRITE, -// FILE_SHARE_READ | FILE_SHARE_WRITE, 0, -// CREATE_ALWAYS, FILE_ATTRIBUTE_SYSTEM, 0); +// FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, +// CREATE_ALWAYS, FILE_ATTRIBUTE_SYSTEM, nullptr); // ASSERT_NE(INVALID_HANDLE_VALUE, handle); // ::CloseHandle(handle); // @@ -170,8 +170,8 @@ TYPED_TEST(winfsp_test, cr8_attr_can_create_always_file_with_hidden_attribute) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, - CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); @@ -199,8 +199,8 @@ TYPED_TEST(winfsp_test, cr8_attr_can_handle_read_only_directory) { EXPECT_EQ((FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_READONLY), attr); auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + CREATE_NEW, FILE_ATTRIBUTE_NORMAL, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); diff --git a/repertory/repertory_test/src/winfsp_drive_create_nl_test.cpp b/repertory/repertory_test/src/winfsp_drive_create_nl_test.cpp index bab18999..a2ddfc54 100644 --- a/repertory/repertory_test/src/winfsp_drive_create_nl_test.cpp +++ b/repertory/repertory_test/src/winfsp_drive_create_nl_test.cpp @@ -35,7 +35,7 @@ TYPED_TEST(winfsp_test, cr8_nl_can_create_file_of_max_component_length) { DWORD max_length{}; EXPECT_TRUE(::GetVolumeInformationA(this->mount_location.c_str(), nullptr, 0, nullptr, &max_length, nullptr, - nullptr, 0)); + nullptr, nullptr)); EXPECT_EQ(255U, max_length); auto file_path = utils::path::combine(this->mount_location, @@ -43,10 +43,10 @@ TYPED_TEST(winfsp_test, cr8_nl_can_create_file_of_max_component_length) { std::string(max_length, 'a'), }); - auto handle = - ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + auto handle = ::CreateFileA( + file_path.c_str(), GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); EXPECT_TRUE(::CloseHandle(handle)); } @@ -58,7 +58,7 @@ TYPED_TEST(winfsp_test, DWORD max_length{}; EXPECT_TRUE(::GetVolumeInformationA(this->mount_location.c_str(), nullptr, 0, nullptr, &max_length, nullptr, - nullptr, 0)); + nullptr, nullptr)); EXPECT_EQ(255U, max_length); auto file_path = utils::path::combine(this->mount_location, @@ -66,10 +66,10 @@ TYPED_TEST(winfsp_test, std::string(max_length + 1U, 'a'), }); - auto handle = - ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + auto handle = ::CreateFileA( + file_path.c_str(), GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_EQ(INVALID_HANDLE_VALUE, handle); EXPECT_EQ(ERROR_INVALID_NAME, ::GetLastError()); } diff --git a/repertory/repertory_test/src/winfsp_drive_create_test.cpp b/repertory/repertory_test/src/winfsp_drive_create_test.cpp index 8650c4db..fb5e7f7a 100644 --- a/repertory/repertory_test/src/winfsp_drive_create_test.cpp +++ b/repertory/repertory_test/src/winfsp_drive_create_test.cpp @@ -35,8 +35,8 @@ TYPED_TEST(winfsp_test, cr8_file_can_create_file) { utils::path::combine(this->mount_location, {"test_file_0"}), }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + CREATE_NEW, FILE_ATTRIBUTE_NORMAL, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); } @@ -46,8 +46,8 @@ TYPED_TEST(winfsp_test, cr8_file_create_new_fails_when_file_exists) { utils::path::combine(this->mount_location, {"test_file_0"}), }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + CREATE_NEW, FILE_ATTRIBUTE_NORMAL, nullptr); ASSERT_EQ(INVALID_HANDLE_VALUE, handle); EXPECT_EQ(ERROR_FILE_EXISTS, ::GetLastError()); } @@ -57,8 +57,8 @@ TYPED_TEST(winfsp_test, cr8_file_can_open_existing_file) { utils::path::combine(this->mount_location, {"test_file_0"}), }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, - OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); } @@ -68,8 +68,8 @@ TYPED_TEST(winfsp_test, cr8_file_create_always_succeeds_when_file_exists) { utils::path::combine(this->mount_location, {"test_file_0"}), }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, - CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); // EXPECT file_size is 0 ::CloseHandle(handle); @@ -79,15 +79,16 @@ TYPED_TEST(winfsp_test, cr8_file_can_delete_file_after_close) { auto file_path{ utils::path::combine(this->mount_location, {"test_file_0"}), }; - auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, - OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, 0); + auto handle = + ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, + FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, - FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_EQ(INVALID_HANDLE_VALUE, handle); EXPECT_EQ(ERROR_FILE_NOT_FOUND, ::GetLastError()); @@ -101,8 +102,8 @@ TYPED_TEST(winfsp_test, }) { auto handle = ::CreateFileA( (this->mount_location + "\\" + invalid_char + "\\test_file_0").c_str(), - GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, - CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0); + GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, + nullptr, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, nullptr); ASSERT_EQ(INVALID_HANDLE_VALUE, handle); if (handle != INVALID_HANDLE_VALUE) { std::cout << "char: " << invalid_char << std::endl; @@ -121,8 +122,8 @@ TYPED_TEST(winfsp_test, }), }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + CREATE_NEW, FILE_ATTRIBUTE_NORMAL, nullptr); ASSERT_EQ(INVALID_HANDLE_VALUE, handle); EXPECT_EQ(ERROR_INVALID_NAME, ::GetLastError()); } @@ -153,35 +154,35 @@ TYPED_TEST(winfsp_test, cr8_file_directory_delete_fails_if_not_empty) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + CREATE_NEW, FILE_ATTRIBUTE_NORMAL, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); - handle = - ::CreateFileA(dir_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_DELETE_ON_CLOSE, 0); + handle = ::CreateFileA( + dir_path.c_str(), GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, - FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); - handle = - ::CreateFileA(dir_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_DELETE_ON_CLOSE, 0); + handle = ::CreateFileA( + dir_path.c_str(), GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); - handle = - ::CreateFileA(dir_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_DELETE_ON_CLOSE, 0); + handle = ::CreateFileA( + dir_path.c_str(), GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_EQ(INVALID_HANDLE_VALUE, handle); EXPECT_EQ(ERROR_FILE_NOT_FOUND, ::GetLastError()); } diff --git a/repertory/repertory_test/src/winfsp_drive_delete_test.cpp b/repertory/repertory_test/src/winfsp_drive_delete_test.cpp index de5b9dc7..80f124a2 100644 --- a/repertory/repertory_test/src/winfsp_drive_delete_test.cpp +++ b/repertory/repertory_test/src/winfsp_drive_delete_test.cpp @@ -43,7 +43,7 @@ TYPED_TEST(winfsp_test, delete_directory_fails_if_directory_not_empty) { auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, - CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0); + CREATE_NEW, FILE_ATTRIBUTE_NORMAL, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); @@ -67,12 +67,12 @@ TYPED_TEST(winfsp_test, auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, - CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0); + CREATE_NEW, FILE_ATTRIBUTE_NORMAL, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); ::CloseHandle(handle); handle = ::CreateFileA(file_path.c_str(), DELETE, FILE_SHARE_DELETE, nullptr, - OPEN_EXISTING, 0, 0); + OPEN_EXISTING, 0, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); typedef struct { @@ -83,7 +83,7 @@ TYPED_TEST(winfsp_test, EXPECT_TRUE(::SetFileInformationByHandle(handle, FileDispositionInfo, &disp_info, sizeof disp_info)); auto handle2 = ::CreateFileA(file_path.c_str(), FILE_READ_ATTRIBUTES, 0, - nullptr, OPEN_EXISTING, 0, 0); + nullptr, OPEN_EXISTING, 0, nullptr); EXPECT_EQ(INVALID_HANDLE_VALUE, handle2); EXPECT_EQ(ERROR_ACCESS_DENIED, ::GetLastError()); @@ -92,6 +92,32 @@ TYPED_TEST(winfsp_test, EXPECT_FALSE(::DeleteFileA(file_path.c_str())); EXPECT_EQ(ERROR_FILE_NOT_FOUND, ::GetLastError()); } + +TYPED_TEST(winfsp_test, delete_can_handle_mmap_after_file_deletion) { + auto file_path{ + utils::path::combine(this->mount_location, {"test_file_3"}), + }; + + auto handle = + ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); + ASSERT_NE(INVALID_HANDLE_VALUE, handle); + + auto *mapping = + ::CreateFileMappingA(handle, nullptr, PAGE_READWRITE, 0, + SystemInfo.dwAllocationGranularity, nullptr); + EXPECT_TRUE(mapping != nullptr); + EXPECT_TRUE(::CloseHandle(handle)); + + auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, + OPEN_EXISTING, 0, nullptr); + EXPECT_EQ(INVALID_HANDLE_VALUE, handle); + EXPECT_EQ(ERROR_FILE_NOT_FOUND, ::GetLastError()); + + EXPECT_TRUE(::CloseHandle(mapping)); +} } // namespace repertory #endif // defined(_WIN32) diff --git a/repertory/repertory_test/src/winfsp_drive_info_test.cpp b/repertory/repertory_test/src/winfsp_drive_info_test.cpp index 7186af10..03f29ef4 100644 --- a/repertory/repertory_test/src/winfsp_drive_info_test.cpp +++ b/repertory/repertory_test/src/winfsp_drive_info_test.cpp @@ -36,8 +36,8 @@ TYPED_TEST(winfsp_test, info_can_get_tag_info) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); FILE_ATTRIBUTE_TAG_INFO tag_info{}; @@ -61,8 +61,8 @@ TYPED_TEST(winfsp_test, info_can_get_basic_info) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); FILE_BASIC_INFO basic_info{}; @@ -91,8 +91,8 @@ TYPED_TEST(winfsp_test, info_can_get_standard_info) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); FILE_STANDARD_INFO std_info{}; @@ -113,8 +113,8 @@ TYPED_TEST(winfsp_test, info_can_get_file_name_info) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); std::array name_info{}; @@ -143,8 +143,8 @@ TYPED_TEST(winfsp_test, info_get_file_name_info_buffer_too_small) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); std::array name_info{}; @@ -171,8 +171,8 @@ TYPED_TEST(winfsp_test, info_can_get_file_info) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); BY_HANDLE_FILE_INFORMATION file_info{}; @@ -217,8 +217,8 @@ TYPED_TEST(winfsp_test, info_can_get_file_path) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); std::string final_path; @@ -245,8 +245,8 @@ TYPED_TEST(winfsp_test, info_can_set_file_info_attributes_to_hidden) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); EXPECT_TRUE(::SetFileAttributesA(file_path.c_str(), FILE_ATTRIBUTE_HIDDEN)); @@ -266,8 +266,8 @@ TYPED_TEST( }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); EXPECT_TRUE(::SetFileAttributesA( @@ -286,8 +286,8 @@ TYPED_TEST(winfsp_test, info_can_set_creation_file_time) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); BY_HANDLE_FILE_INFORMATION orig_file_info{}; @@ -320,8 +320,8 @@ TYPED_TEST(winfsp_test, info_can_set_accessed_file_time) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); BY_HANDLE_FILE_INFORMATION orig_file_info{}; @@ -353,8 +353,8 @@ TYPED_TEST(winfsp_test, info_can_set_written_file_time) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); BY_HANDLE_FILE_INFORMATION orig_file_info{}; @@ -386,8 +386,8 @@ TYPED_TEST(winfsp_test, info_can_set_file_size) { }; auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0); + FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CREATE_NEW, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, nullptr); ASSERT_NE(INVALID_HANDLE_VALUE, handle); auto offset = ::SetFilePointer(handle, 42, nullptr, FILE_BEGIN);