From 33ea3bda7aa089e6947b3572f46c079792f76119 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Sat, 30 Dec 2023 00:54:01 +0100 Subject: [PATCH] test: add tests for --input-list --- test/tool_main_test.cpp | 61 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/test/tool_main_test.cpp b/test/tool_main_test.cpp index 5b43d354..ecb9db3a 100644 --- a/test/tool_main_test.cpp +++ b/test/tool_main_test.cpp @@ -218,6 +218,67 @@ TEST_F(dwarfsextract_main_test, perfmon) { } #endif +TEST_F(mkdwarfs_main_test, input_list_file_test) { + auto fa = std::make_shared(); + iol->set_file_access(fa); + + fa->set_file("input_list.txt", "somelink\nfoo.pl\nsomedir/ipsum.py\n"); + + auto exit_code = run({"--input-list", "input_list.txt", "-o", "test.dwarfs"}); + EXPECT_EQ(exit_code, 0); + + auto fsimage = fa->get_file("test.dwarfs"); + EXPECT_TRUE(fsimage); + + auto mm = std::make_shared(std::move(fsimage.value())); + test::test_logger lgr; + filesystem_v2 fs(lgr, mm); + + auto link = fs.find("/somelink"); + auto foo = fs.find("/foo.pl"); + auto ipsum = fs.find("/somedir/ipsum.py"); + + EXPECT_TRUE(link); + EXPECT_TRUE(foo); + EXPECT_TRUE(ipsum); + + EXPECT_FALSE(fs.find("/test.pl")); + + EXPECT_TRUE(link->is_symlink()); + EXPECT_TRUE(foo->is_regular_file()); + EXPECT_TRUE(ipsum->is_regular_file()); +} + +TEST_F(mkdwarfs_main_test, input_list_stdin_test) { + auto fa = std::make_shared(); + iol->set_file_access(fa); + iol->set_in("somelink\nfoo.pl\nsomedir/ipsum.py\n"); + + auto exit_code = run({"--input-list", "-", "-o", "test.dwarfs"}); + EXPECT_EQ(exit_code, 0); + + auto fsimage = fa->get_file("test.dwarfs"); + EXPECT_TRUE(fsimage); + + auto mm = std::make_shared(std::move(fsimage.value())); + test::test_logger lgr; + filesystem_v2 fs(lgr, mm); + + auto link = fs.find("/somelink"); + auto foo = fs.find("/foo.pl"); + auto ipsum = fs.find("/somedir/ipsum.py"); + + EXPECT_TRUE(link); + EXPECT_TRUE(foo); + EXPECT_TRUE(ipsum); + + EXPECT_FALSE(fs.find("/test.pl")); + + EXPECT_TRUE(link->is_symlink()); + EXPECT_TRUE(foo->is_regular_file()); + EXPECT_TRUE(ipsum->is_regular_file()); +} + class categorizer_test : public testing::TestWithParam {}; TEST_P(categorizer_test, end_to_end) {