winfsp unit tests and fixes
This commit is contained in:
parent
2a1a48bc68
commit
55762f9c92
@ -90,6 +90,99 @@ TYPED_TEST(winfsp_test, can_delete_file_after_close) {
|
|||||||
FILE_FLAG_DELETE_ON_CLOSE, 0);
|
FILE_FLAG_DELETE_ON_CLOSE, 0);
|
||||||
EXPECT_EQ(INVALID_HANDLE_VALUE, handle);
|
EXPECT_EQ(INVALID_HANDLE_VALUE, handle);
|
||||||
EXPECT_EQ(ERROR_FILE_NOT_FOUND, ::GetLastError());
|
EXPECT_EQ(ERROR_FILE_NOT_FOUND, ::GetLastError());
|
||||||
|
|
||||||
|
// EXPECT file not found
|
||||||
|
}
|
||||||
|
|
||||||
|
TYPED_TEST(winfsp_test, cannot_create_files_with_invalid_characters_in_path) {
|
||||||
|
for (auto &&invalid_char : std::array<std::string, 7U>{
|
||||||
|
{"*", ":", "<", ">", "?", "|", "\""},
|
||||||
|
}) {
|
||||||
|
auto handle = ::CreateFileA(
|
||||||
|
(this->mount_location + "\\" + invalid_char + "\\test_file_1").c_str(),
|
||||||
|
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
|
||||||
|
CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
|
||||||
|
EXPECT_EQ(INVALID_HANDLE_VALUE, handle);
|
||||||
|
if (handle != INVALID_HANDLE_VALUE) {
|
||||||
|
std::cout << "char: " << invalid_char << std::endl;
|
||||||
|
}
|
||||||
|
EXPECT_EQ(ERROR_INVALID_NAME, ::GetLastError());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TYPED_TEST(winfsp_test,
|
||||||
|
cannot_create_stream_files_with_extra_component_in_path) {
|
||||||
|
auto file_path{
|
||||||
|
utils::path::combine(this->mount_location,
|
||||||
|
{
|
||||||
|
"test_file_1:test",
|
||||||
|
"moose",
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
auto handle = ::CreateFileA(file_path.c_str(), GENERIC_READ | GENERIC_WRITE,
|
||||||
|
FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW,
|
||||||
|
FILE_ATTRIBUTE_NORMAL, 0);
|
||||||
|
EXPECT_EQ(INVALID_HANDLE_VALUE, handle);
|
||||||
|
EXPECT_EQ(ERROR_INVALID_NAME, ::GetLastError());
|
||||||
|
}
|
||||||
|
|
||||||
|
TYPED_TEST(winfsp_test, can_create_directory) {
|
||||||
|
auto dir_path{
|
||||||
|
utils::path::combine(this->mount_location,
|
||||||
|
{
|
||||||
|
"test_dir_0",
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
EXPECT_TRUE(::CreateDirectoryA(dir_path.c_str(), nullptr));
|
||||||
|
EXPECT_FALSE(::CreateDirectoryA(dir_path.c_str(), nullptr));
|
||||||
|
}
|
||||||
|
|
||||||
|
TYPED_TEST(winfsp_test, directory_delete_fails_if_not_empty) {
|
||||||
|
auto dir_path{
|
||||||
|
utils::path::combine(this->mount_location,
|
||||||
|
{
|
||||||
|
"test_dir_0",
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
auto file_path{
|
||||||
|
utils::path::combine(dir_path,
|
||||||
|
{
|
||||||
|
"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);
|
||||||
|
EXPECT_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);
|
||||||
|
EXPECT_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);
|
||||||
|
EXPECT_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);
|
||||||
|
EXPECT_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);
|
||||||
|
EXPECT_EQ(INVALID_HANDLE_VALUE, handle);
|
||||||
|
EXPECT_EQ(ERROR_FILE_NOT_FOUND, ::GetLastError());
|
||||||
}
|
}
|
||||||
} // namespace repertory
|
} // namespace repertory
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user