From a65f8837361f1bf90dd53a3d82b6d5fa2591e7f2 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Fri, 5 Jan 2024 13:20:20 +0100 Subject: [PATCH] test(compat): legacy images built with --set-owner/--set-group --- test/compat_test.cpp | 40 +++++++++++++++++++++++++++++++++++ test/setuidgid-v0.4.1.dwarfs | Bin 0 -> 692 bytes test/setuidgid-v0.5.6.dwarfs | Bin 0 -> 800 bytes 3 files changed, 40 insertions(+) create mode 100644 test/setuidgid-v0.4.1.dwarfs create mode 100644 test/setuidgid-v0.5.6.dwarfs diff --git a/test/compat_test.cpp b/test/compat_test.cpp index 4ef95027..95811484 100644 --- a/test/compat_test.cpp +++ b/test/compat_test.cpp @@ -24,7 +24,9 @@ // TODO: this test should be autogenerated somehow... #include +#include #include +#include #include #include #include @@ -52,9 +54,12 @@ #include "test_logger.h" using namespace dwarfs; +namespace fs = std::filesystem; namespace { +auto test_dir = fs::path(TEST_DATA_DIR).make_preferred(); + char const* reference_v0_2 = R"( { "root": { @@ -1241,3 +1246,38 @@ INSTANTIATE_TEST_SUITE_P(dwarfs_compat, rewrite, ::testing::Combine(::testing::ValuesIn(versions), ::testing::Bool(), ::testing::Bool())); + +class set_uidgid_test : public testing::TestWithParam {}; + +TEST_P(set_uidgid_test, read_legacy_image) { + auto image = test_dir / GetParam(); + + test::test_logger lgr; + filesystem_v2 fs(lgr, std::make_shared(image)); + + ASSERT_EQ(0, fs.check(filesystem_check_level::FULL)); + + for (auto path : {"/dwarfs", "/dwarfs/version.h"}) { + auto v = fs.find(path); + ASSERT_TRUE(v) << path; + EXPECT_EQ(33333, v->getuid()) << path; + EXPECT_EQ(44444, v->getgid()) << path; + + file_stat st; + EXPECT_EQ(0, fs.getattr(*v, &st)) << path; + EXPECT_EQ(33333, st.uid) << path; + EXPECT_EQ(44444, st.gid) << path; + } +} + +namespace { + +std::array legacy_images{ + "setuidgid-v0.4.1.dwarfs", + "setuidgid-v0.5.6.dwarfs", +}; + +} // namespace + +INSTANTIATE_TEST_SUITE_P(dwarfs_compat, set_uidgid_test, + ::testing::ValuesIn(legacy_images)); diff --git a/test/setuidgid-v0.4.1.dwarfs b/test/setuidgid-v0.4.1.dwarfs new file mode 100644 index 0000000000000000000000000000000000000000..654d85c9a13aeb73c385df72bf7b30959d610680 GIT binary patch literal 692 zcmZ<>cMNh1W@2ivdlwpYc*!x*o(D4vJX9OzvaCr{cISV6<$|92n^cze(LZvuaH> z=bT~s`Q!Jsc^k4-@*HP9W>lCkNn+BcWhYogveeXVo-$T=?w0zZcgVP_$g#%x*rt6E z@09i_T>PjaRsN%RhI2xe47;uCtQp_;EOjl_DU&``xle0Z#Kvle$ilew!F9)^t^9u6 zn3{QdU7G5H?P44Z3e5_O-#K0JZA<#MejSq?BSTHx%ybv1XA{$vO?Wu&*Z#DtEJ(c} zaOd%oK<7fK!wTzLcxOEE&f=QyCKh6#)#b=Lr~ zcX|^j(H)}E8?0j;mgl?XOxGO)`G&s?lVprYnvy29|n!b43`Qxka7_TW1`6hiUuY;JEGD|7{ZvGXX=51BhKg!3P8nOV<3< z)Z*5^8^OlFQ1O|;92l~eK=AcMNh1W@2uzdlwpYc*!x*o(D4vJX9OzvaCr{cISV6<$|92n^cze(LZvuaH> z=bT~s`Q!Jsc^k4-@*HP9W>lCkNn+BcWhYogveeXVo-$T=?w0zZcgVP_$g#%x*rt6E z@09i_T>PjaRsN%RhI2xe47;uCtQp_;EOjl_DU&``xle0Z#Kvle$ilew!F9)^t^9u6 zn3{QdU7G5H?P44Z3e5_O-#K0JZA<#MejSq?BSTHx%ybv1XJw;qMZD0{UFG>t|7noa z*K&`ORcnhEa=LF%Tgs@tFnQ$*&m|e|x91fw0zJvjz{C&(VgLcyvwTcbxfsdXy9Sw;R|qb5nyo?a1>x^WcG6Gkq}pYbyr}cY0tfmj1@Z*-LhrxN-MEU)MeIU zFl5kS5Ov$M=(wZ91micK8vSgx?N9vt&&uViiLBi29-*4>k5Q|p7K^@J_v)!L$7Ee4 z&jlyUuIKc0e_No?Y33Nkwupq?>@*--RF z#-*iqyAwoywfOT`7;;aIzp_?F@k`5O4MxqGN@YCqk2a+k{>uCJ;7+sD>Wr2zU2Bfo zDM$X)7x$X`Yn@=(LGxF&jefUd>_H&A=Fx^y;M+EN-GU%iL?eXa9UIU*X2H z^8Fnb#5_LcOp0o8p8R;G={)mQN7ivo+&al%2@^0rIDj}D6fr>XzVfXmm;T)dHU@@@ z&*|?EO@2H5>A(9j=8TqEESAw%If}Ne6MT}x%JkN8Nn-$GPG(X{d16sou|k=Fo~fQ0 Vgj1GURGgWgr6R10RZx8M$!NP literal 0 HcmV?d00001