diff --git a/test/compat_test.cpp b/test/compat_test.cpp index 8aecf7e9..daa759f4 100644 --- a/test/compat_test.cpp +++ b/test/compat_test.cpp @@ -1120,6 +1120,33 @@ void check_compat(logger& lgr, reader::filesystem_v2 const& fs, } EXPECT_EQ(expected, paths) << td; } + + { + auto dev = fs.find("foo/1/2/3/4/5/6/7/8/9/j"); + ASSERT_TRUE(dev); + EXPECT_EQ("j", dev->name()); + EXPECT_FALSE(dev->is_root()); + EXPECT_TRUE(dev->inode().is_regular_file()); + dev = dev->parent(); + EXPECT_EQ("9", dev->name()); + EXPECT_EQ("foo/1/2/3/4/5/6/7/8/9", dev->unix_path()); + EXPECT_FALSE(dev->is_root()); + EXPECT_TRUE(dev->inode().is_directory()); + dev = dev->parent()->parent()->parent(); + EXPECT_EQ("6", dev->name()); + EXPECT_FALSE(dev->is_root()); + EXPECT_TRUE(dev->inode().is_directory()); + dev = dev->parent()->parent()->parent()->parent()->parent()->parent(); + EXPECT_EQ("foo", dev->name()); + EXPECT_FALSE(dev->is_root()); + EXPECT_TRUE(dev->inode().is_directory()); + dev = dev->parent(); + ASSERT_TRUE(dev); + EXPECT_EQ("", dev->name()); + EXPECT_TRUE(dev->is_root()); + EXPECT_TRUE(dev->inode().is_directory()); + EXPECT_FALSE(dev->parent()); + } } } // namespace diff --git a/test/dwarfs_test.cpp b/test/dwarfs_test.cpp index 67a1d98c..6f4183ca 100644 --- a/test/dwarfs_test.cpp +++ b/test/dwarfs_test.cpp @@ -563,6 +563,25 @@ void basic_end_to_end_test( ASSERT_TRUE(info.count("root")); } } + + { + auto dev = fs.find("somedir/ipsum.py"); + ASSERT_TRUE(dev); + EXPECT_EQ("ipsum.py", dev->name()); + EXPECT_EQ("somedir/ipsum.py", dev->unix_path()); + EXPECT_FALSE(dev->is_root()); + EXPECT_TRUE(dev->inode().is_regular_file()); + dev = dev->parent(); + EXPECT_EQ("somedir", dev->name()); + EXPECT_FALSE(dev->is_root()); + EXPECT_TRUE(dev->inode().is_directory()); + dev = dev->parent(); + ASSERT_TRUE(dev); + EXPECT_EQ("", dev->name()); + EXPECT_TRUE(dev->is_root()); + EXPECT_TRUE(dev->inode().is_directory()); + EXPECT_FALSE(dev->parent()); + } } std::vector const compressions{