diff options
Diffstat (limited to 'clang/unittests/Basic/VirtualFileSystemTest.cpp')
-rw-r--r-- | clang/unittests/Basic/VirtualFileSystemTest.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/clang/unittests/Basic/VirtualFileSystemTest.cpp b/clang/unittests/Basic/VirtualFileSystemTest.cpp index de09cfbd520..334b1a45ddf 100644 --- a/clang/unittests/Basic/VirtualFileSystemTest.cpp +++ b/clang/unittests/Basic/VirtualFileSystemTest.cpp @@ -466,3 +466,64 @@ TEST_F(VFSFromYAMLTest, IllegalVFSFile) { EXPECT_EQ(NULL, FS.getPtr()); EXPECT_EQ(24, NumDiagnostics); } + +TEST_F(VFSFromYAMLTest, MultiComponentPath) { + IntrusiveRefCntPtr<DummyFileSystem> Lower(new DummyFileSystem()); + Lower->addRegularFile("/other"); + + // file in roots + IntrusiveRefCntPtr<vfs::FileSystem> FS = getFromYAMLString( + "{ 'roots': [\n" + " { 'type': 'file', 'name': '/path/to/file',\n" + " 'external-contents': '/other' }]\n" + "}", Lower); + ASSERT_TRUE(NULL != FS.getPtr()); + EXPECT_EQ(errc::success, FS->status("/path/to/file").getError()); + EXPECT_EQ(errc::success, FS->status("/path/to").getError()); + EXPECT_EQ(errc::success, FS->status("/path").getError()); + EXPECT_EQ(errc::success, FS->status("/").getError()); + + // at the start + FS = getFromYAMLString( + "{ 'roots': [\n" + " { 'type': 'directory', 'name': '/path/to',\n" + " 'contents': [ { 'type': 'file', 'name': 'file',\n" + " 'external-contents': '/other' }]}]\n" + "}", Lower); + ASSERT_TRUE(NULL != FS.getPtr()); + EXPECT_EQ(errc::success, FS->status("/path/to/file").getError()); + EXPECT_EQ(errc::success, FS->status("/path/to").getError()); + EXPECT_EQ(errc::success, FS->status("/path").getError()); + EXPECT_EQ(errc::success, FS->status("/").getError()); + + // at the end + FS = getFromYAMLString( + "{ 'roots': [\n" + " { 'type': 'directory', 'name': '/',\n" + " 'contents': [ { 'type': 'file', 'name': 'path/to/file',\n" + " 'external-contents': '/other' }]}]\n" + "}", Lower); + ASSERT_TRUE(NULL != FS.getPtr()); + EXPECT_EQ(errc::success, FS->status("/path/to/file").getError()); + EXPECT_EQ(errc::success, FS->status("/path/to").getError()); + EXPECT_EQ(errc::success, FS->status("/path").getError()); + EXPECT_EQ(errc::success, FS->status("/").getError()); +} + +TEST_F(VFSFromYAMLTest, TrailingSlashes) { + IntrusiveRefCntPtr<DummyFileSystem> Lower(new DummyFileSystem()); + Lower->addRegularFile("/other"); + + // file in roots + IntrusiveRefCntPtr<vfs::FileSystem> FS = getFromYAMLString( + "{ 'roots': [\n" + " { 'type': 'directory', 'name': '/path/to////',\n" + " 'contents': [ { 'type': 'file', 'name': 'file',\n" + " 'external-contents': '/other' }]}]\n" + "}", Lower); + ASSERT_TRUE(NULL != FS.getPtr()); + EXPECT_EQ(errc::success, FS->status("/path/to/file").getError()); + EXPECT_EQ(errc::success, FS->status("/path/to").getError()); + EXPECT_EQ(errc::success, FS->status("/path").getError()); + EXPECT_EQ(errc::success, FS->status("/").getError()); +} |