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);
|
||||
EXPECT_EQ(INVALID_HANDLE_VALUE, handle);
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user