diff --git a/test/tool_mkdwarfs_main_basic_test.cpp b/test/tool_mkdwarfs_main_basic_test.cpp index a3f4baf7..62d0b206 100644 --- a/test/tool_mkdwarfs_main_basic_test.cpp +++ b/test/tool_mkdwarfs_main_basic_test.cpp @@ -898,17 +898,36 @@ TEST_F(mkdwarfs_main_test, order_invalid) { EXPECT_THAT(err(), ::testing::HasSubstr("invalid inode order mode")); } +TEST_F(mkdwarfs_main_test, order_does_not_support_options) { + EXPECT_NE(0, run({"-i", "/", "-o", "-", "--order=path:foo=42"})); + EXPECT_THAT(err(), ::testing::HasSubstr( + "inode order mode 'path' does not support options")); +} + +TEST_F(mkdwarfs_main_test, order_explicit_failed_to_open_file) { + EXPECT_NE(0, + run({"-i", "/", "-o", "-", "--order=explicit:file=explicit.txt"})); + EXPECT_THAT(err(), ::testing::HasSubstr( + "failed to open explicit order file 'explicit.txt':")); +} + TEST_F(mkdwarfs_main_test, order_nilsimsa_invalid_option) { EXPECT_NE(0, run({"-i", "/", "-o", "-", "--order=nilsimsa:grmpf"})); EXPECT_THAT(err(), ::testing::HasSubstr( "invalid option(s) for choice nilsimsa: grmpf")); } -TEST_F(mkdwarfs_main_test, order_nilsimsa_invalid_value) { +TEST_F(mkdwarfs_main_test, order_nilsimsa_invalid_max_childre_value) { EXPECT_NE(0, run({"-i", "/", "-o", "-", "--order=nilsimsa:max-children=0"})); EXPECT_THAT(err(), ::testing::HasSubstr("invalid max-children value: 0")); } +TEST_F(mkdwarfs_main_test, order_nilsimsa_invalid_max_cluster_size_value) { + EXPECT_NE(0, + run({"-i", "/", "-o", "-", "--order=nilsimsa:max-cluster-size=0"})); + EXPECT_THAT(err(), ::testing::HasSubstr("invalid max-cluster-size value: 0")); +} + TEST_F(mkdwarfs_main_test, order_nilsimsa_cannot_parse_value) { EXPECT_NE( 0, run({"-i", "/", "-o", "-", "--order=nilsimsa:max-cluster-size=-1"})); diff --git a/test/tool_mkdwarfs_main_build_test.cpp b/test/tool_mkdwarfs_main_build_test.cpp index 7206cc06..75e04c16 100644 --- a/test/tool_mkdwarfs_main_build_test.cpp +++ b/test/tool_mkdwarfs_main_build_test.cpp @@ -860,6 +860,7 @@ TEST(mkdwarfs_test, max_similarity_size) { namespace { std::array const fragment_orders{ + std::pair{"none"sv, "a/c,b,c/a,c/d,e"sv}, std::pair{"path"sv, "a/c,b,c/a,c/d,e"sv}, std::pair{"revpath"sv, "c/a,b,a/c,c/d,e"sv}, std::pair{"explicit:file=order.dat"sv, "c/d,b,a/c,e,c/a"sv}, @@ -888,7 +889,7 @@ TEST_P(fragment_order_test, basic) { t.os->add_file("c/d", 16, true); t.os->add_file("e", 32, true); - ASSERT_EQ(0, t.run({"-i", "/", "-o", image_file, + ASSERT_EQ(0, t.run({"-i", "/", "-o", image_file, "--log-level=verbose", "--order=" + std::string{option}, "-B0"})) << t.err(); @@ -907,8 +908,15 @@ TEST_P(fragment_order_test, basic) { EXPECT_EQ(file_offsets.size(), 5); - std::ranges::sort(file_offsets, std::less{}, - &std::pair::second); + if (option == "none") { + // just make sure everything is there, order doesn't matter + std::ranges::sort(file_offsets, std::less{}, + &std::pair::first); + } else { + std::ranges::sort(file_offsets, std::less{}, + &std::pair::second); + } + auto got = file_offsets | ranges::views::keys | ranges::views::join(","sv) | ranges::to();