diff options
author | gVisor bot <gvisor-bot@google.com> | 2020-09-17 15:28:36 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-09-17 15:28:36 -0700 |
commit | 8070cc3386d461752dc0e601f8a11f8b54f482a6 (patch) | |
tree | c3d70d411cb819a5c54e6a514b64764dba06416b /test/fuse/linux/rmdir_test.cc | |
parent | a4db85fff210f0f4f2164f0d620c6cfdc288e26c (diff) | |
parent | 15f50c8da63486ac0f24cbb6c2891b66a8081c05 (diff) |
Merge pull request #3979 from jinmouil:feature/fuse-fix
PiperOrigin-RevId: 332328860
Diffstat (limited to 'test/fuse/linux/rmdir_test.cc')
-rw-r--r-- | test/fuse/linux/rmdir_test.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/fuse/linux/rmdir_test.cc b/test/fuse/linux/rmdir_test.cc index 913d3f910..e3200e446 100644 --- a/test/fuse/linux/rmdir_test.cc +++ b/test/fuse/linux/rmdir_test.cc @@ -38,6 +38,7 @@ namespace { class RmDirTest : public FuseTest { protected: const std::string test_dir_name_ = "test_dir"; + const std::string test_subdir_ = "test_subdir"; const mode_t test_dir_mode_ = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO; }; @@ -67,6 +68,32 @@ TEST_F(RmDirTest, NormalRmDir) { EXPECT_EQ(std::string(actual_dirname.data()), test_dir_name_); } +TEST_F(RmDirTest, NormalRmDirSubdir) { + SetServerInodeLookup(test_subdir_, S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO); + const std::string test_dir_path_ = + JoinPath(mount_point_.path().c_str(), test_subdir_, test_dir_name_); + SetServerInodeLookup(test_dir_name_, test_dir_mode_); + + // RmDir code. + struct fuse_out_header rmdir_header = { + .len = sizeof(struct fuse_out_header), + }; + + auto iov_out = FuseGenerateIovecs(rmdir_header); + SetServerResponse(FUSE_RMDIR, iov_out); + + ASSERT_THAT(rmdir(test_dir_path_.c_str()), SyscallSucceeds()); + + struct fuse_in_header in_header; + std::vector<char> actual_dirname(test_dir_name_.length() + 1); + auto iov_in = FuseGenerateIovecs(in_header, actual_dirname); + GetServerActualRequest(iov_in); + + EXPECT_EQ(in_header.len, sizeof(in_header) + test_dir_name_.length() + 1); + EXPECT_EQ(in_header.opcode, FUSE_RMDIR); + EXPECT_EQ(std::string(actual_dirname.data()), test_dir_name_); +} + } // namespace } // namespace testing |