From 9eb3e7a22d15a94c9091b9e713199afdac9c521c Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Sun, 29 Dec 2024 07:06:19 -0600 Subject: [PATCH] [Unit Test] Complete FUSE unit tests #22 --- .../src/fuse_drive_rdrw_test.cpp | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/repertory/repertory_test/src/fuse_drive_rdrw_test.cpp b/repertory/repertory_test/src/fuse_drive_rdrw_test.cpp index 5a99bf94..a49e9444 100644 --- a/repertory/repertory_test/src/fuse_drive_rdrw_test.cpp +++ b/repertory/repertory_test/src/fuse_drive_rdrw_test.cpp @@ -171,6 +171,34 @@ TYPED_TEST(fuse_test, rdrw_can_not_read_or_write_to_directory) { this->rmdir_and_test(dir_path); } + +TYPED_TEST(fuse_test, rdrw_can_append_to_file) { + std::string file_name{"append_test"}; + auto file_path = this->create_file_and_test(file_name); + + auto handle = open(file_path.c_str(), O_WRONLY); + ASSERT_GT(handle, -1); + auto bytes_written = pwrite64(handle, "test_", 5U, 0); + EXPECT_EQ(5U, bytes_written); + close(handle); + + handle = open(file_path.c_str(), O_WRONLY | O_APPEND); + ASSERT_GT(handle, -1); + bytes_written = write(handle, "cow", 3U); + EXPECT_EQ(3U, bytes_written); + close(handle); + + handle = open(file_path.c_str(), O_RDONLY); + ASSERT_GT(handle, -1); + std::string read_buffer; + read_buffer.resize(8U); + auto bytes_read = pread64(handle, read_buffer.data(), read_buffer.size(), 0); + EXPECT_EQ(8U, bytes_read); + EXPECT_STREQ("test_cow", read_buffer.c_str()); + close(handle); + + this->unlink_file_and_test(file_path); +} } // namespace repertory #endif // !defined(_WIN32)