mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-14 14:59:52 -04:00
test: add xattr tests
This commit is contained in:
parent
11da064a1a
commit
037c9d6523
@ -62,6 +62,8 @@ namespace {
|
|||||||
namespace bp = boost::process;
|
namespace bp = boost::process;
|
||||||
namespace fs = std::filesystem;
|
namespace fs = std::filesystem;
|
||||||
|
|
||||||
|
using namespace std::literals::string_view_literals;
|
||||||
|
|
||||||
auto test_dir = fs::path(TEST_DATA_DIR).make_preferred();
|
auto test_dir = fs::path(TEST_DATA_DIR).make_preferred();
|
||||||
auto test_data_dwarfs = test_dir / "data.dwarfs";
|
auto test_data_dwarfs = test_dir / "data.dwarfs";
|
||||||
auto test_catdata_dwarfs = test_dir / "catdata.dwarfs";
|
auto test_catdata_dwarfs = test_dir / "catdata.dwarfs";
|
||||||
@ -776,6 +778,46 @@ TEST_P(tools_test, end_to_end) {
|
|||||||
ASSERT_EQ(0, ::statfs(mountpoint.c_str(), &stfs)) << runner.cmdline();
|
ASSERT_EQ(0, ::statfs(mountpoint.c_str(), &stfs)) << runner.cmdline();
|
||||||
EXPECT_EQ(stfs.f_files, 44) << runner.cmdline();
|
EXPECT_EQ(stfs.f_files, 44) << runner.cmdline();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
static constexpr auto kInodeInfoXattr{"user.dwarfs.inodeinfo"};
|
||||||
|
std::vector<std::pair<fs::path, std::string_view>> xattr_tests{
|
||||||
|
{mountpoint,
|
||||||
|
"user.dwarfs.driver.pid\0user.dwarfs.driver.perfmon\0user.dwarfs.inodeinfo\0"sv},
|
||||||
|
{mountpoint / "format.sh", "user.dwarfs.inodeinfo\0"sv},
|
||||||
|
{mountpoint / "empty", "user.dwarfs.inodeinfo\0"sv},
|
||||||
|
};
|
||||||
|
|
||||||
|
for (auto const& [path, ref] : xattr_tests) {
|
||||||
|
std::string buf;
|
||||||
|
buf.resize(1);
|
||||||
|
|
||||||
|
auto r = ::listxattr(path.c_str(), buf.data(), buf.size());
|
||||||
|
EXPECT_LT(r, 0) << runner.cmdline();
|
||||||
|
EXPECT_EQ(ERANGE, errno) << runner.cmdline();
|
||||||
|
r = ::listxattr(path.c_str(), buf.data(), 0);
|
||||||
|
EXPECT_GT(r, 0) << runner.cmdline();
|
||||||
|
buf.resize(r);
|
||||||
|
r = ::listxattr(path.c_str(), buf.data(), buf.size());
|
||||||
|
EXPECT_GT(r, 0) << runner.cmdline();
|
||||||
|
EXPECT_EQ(ref, buf) << runner.cmdline();
|
||||||
|
|
||||||
|
buf.resize(1);
|
||||||
|
r = ::getxattr(path.c_str(), kInodeInfoXattr, buf.data(), buf.size());
|
||||||
|
EXPECT_LT(r, 0) << runner.cmdline();
|
||||||
|
EXPECT_EQ(ERANGE, errno) << runner.cmdline();
|
||||||
|
r = ::getxattr(path.c_str(), kInodeInfoXattr, buf.data(), 0);
|
||||||
|
EXPECT_GT(r, 0) << runner.cmdline();
|
||||||
|
buf.resize(r);
|
||||||
|
r = ::getxattr(path.c_str(), kInodeInfoXattr, buf.data(), buf.size());
|
||||||
|
EXPECT_GT(r, 0) << runner.cmdline();
|
||||||
|
|
||||||
|
auto info = folly::parseJson(buf);
|
||||||
|
EXPECT_TRUE(info.count("uid"));
|
||||||
|
EXPECT_TRUE(info.count("gid"));
|
||||||
|
EXPECT_TRUE(info.count("mode"));
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
EXPECT_TRUE(runner.unmount()) << runner.cmdline();
|
EXPECT_TRUE(runner.unmount()) << runner.cmdline();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user