mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-13 22:40:03 -04:00
test(compat): test has_valid_section_index()
This commit is contained in:
parent
968328d0bb
commit
a2db02126f
@ -925,13 +925,32 @@ void walk_tree(reader::filesystem_v2 const& fs, T& cb,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int compare_versions(std::string_view v1str, std::string_view v2str) {
|
||||||
|
auto const v1 = split_to<std::vector<int>>(v1str, '.');
|
||||||
|
auto const v2 = split_to<std::vector<int>>(v2str, '.');
|
||||||
|
|
||||||
|
for (size_t i = 0; i < std::max(v1.size(), v2.size()); ++i) {
|
||||||
|
auto const n1 = i < v1.size() ? v1[i] : 0;
|
||||||
|
auto const n2 = i < v2.size() ? v2[i] : 0;
|
||||||
|
|
||||||
|
if (n1 > n2) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (n1 < n2) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void check_compat(logger& lgr [[maybe_unused]], reader::filesystem_v2 const& fs,
|
void check_compat(logger& lgr [[maybe_unused]], reader::filesystem_v2 const& fs,
|
||||||
std::string const& version, bool enable_nlink) {
|
std::string const& version, bool enable_nlink) {
|
||||||
bool const has_devices = not(version == "0.2.0" or version == "0.2.3");
|
bool const has_devices = compare_versions(version, "0.3.0") >= 0;
|
||||||
bool const has_ac_time = version == "0.2.0" or version == "0.2.3";
|
bool const has_ac_time = compare_versions(version, "0.3.0") < 0;
|
||||||
bool const nlink_affects_blocks =
|
bool const nlink_affects_blocks = compare_versions(version, "0.5.0") >= 0;
|
||||||
not(version.starts_with("0.2.") or version.starts_with("0.3.") or
|
bool const has_section_index = compare_versions(version, "0.6.0") >= 0;
|
||||||
version.starts_with("0.4."));
|
|
||||||
auto const expected_blocks =
|
auto const expected_blocks =
|
||||||
nlink_affects_blocks and enable_nlink ? 2747 : 10614;
|
nlink_affects_blocks and enable_nlink ? 2747 : 10614;
|
||||||
|
|
||||||
@ -956,6 +975,8 @@ void check_compat(logger& lgr [[maybe_unused]], reader::filesystem_v2 const& fs,
|
|||||||
|
|
||||||
auto entry = fs.find("/format.sh");
|
auto entry = fs.find("/format.sh");
|
||||||
|
|
||||||
|
EXPECT_EQ(has_section_index, fs.has_valid_section_index());
|
||||||
|
|
||||||
ASSERT_TRUE(entry);
|
ASSERT_TRUE(entry);
|
||||||
auto iv = entry->inode();
|
auto iv = entry->inode();
|
||||||
auto st = fs.getattr(iv);
|
auto st = fs.getattr(iv);
|
||||||
@ -1446,6 +1467,7 @@ TEST_P(rewrite, filesystem_rewrite) {
|
|||||||
reader::filesystem_v2 fs(lgr, os, mm);
|
reader::filesystem_v2 fs(lgr, os, mm);
|
||||||
check_dynamic(version, fs, origmm, rebuild_metadata.has_value());
|
check_dynamic(version, fs, origmm, rebuild_metadata.has_value());
|
||||||
check_checksums(fs);
|
check_checksums(fs);
|
||||||
|
EXPECT_TRUE(fs.has_valid_section_index());
|
||||||
}
|
}
|
||||||
|
|
||||||
rewritten.str(std::string());
|
rewritten.str(std::string());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user