summaryrefslogtreecommitdiffstats
path: root/clang/unittests/Basic/VirtualFileSystemTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/unittests/Basic/VirtualFileSystemTest.cpp')
-rw-r--r--clang/unittests/Basic/VirtualFileSystemTest.cpp54
1 files changed, 52 insertions, 2 deletions
diff --git a/clang/unittests/Basic/VirtualFileSystemTest.cpp b/clang/unittests/Basic/VirtualFileSystemTest.cpp
index 334b1a45ddf..367e79492a8 100644
--- a/clang/unittests/Basic/VirtualFileSystemTest.cpp
+++ b/clang/unittests/Basic/VirtualFileSystemTest.cpp
@@ -290,8 +290,7 @@ TEST_F(VFSFromYAMLTest, MappedFiles) {
// file
ErrorOr<vfs::Status> S = O->status("/file1");
ASSERT_EQ(errc::success, S.getError());
- EXPECT_EQ("/file1", S->getName());
- EXPECT_EQ("/foo/bar/a", S->getExternalName());
+ EXPECT_EQ("/foo/bar/a", S->getName());
ErrorOr<vfs::Status> SLower = O->status("/foo/bar/a");
EXPECT_EQ("/foo/bar/a", SLower->getName());
@@ -467,6 +466,57 @@ TEST_F(VFSFromYAMLTest, IllegalVFSFile) {
EXPECT_EQ(24, NumDiagnostics);
}
+TEST_F(VFSFromYAMLTest, UseExternalName) {
+ IntrusiveRefCntPtr<DummyFileSystem> Lower(new DummyFileSystem());
+ Lower->addRegularFile("/external/file");
+
+ IntrusiveRefCntPtr<vfs::FileSystem> FS = getFromYAMLString(
+ "{ 'roots': [\n"
+ " { 'type': 'file', 'name': '/A',\n"
+ " 'external-contents': '/external/file'\n"
+ " },\n"
+ " { 'type': 'file', 'name': '/B',\n"
+ " 'use-external-name': true,\n"
+ " 'external-contents': '/external/file'\n"
+ " },\n"
+ " { 'type': 'file', 'name': '/C',\n"
+ " 'use-external-name': false,\n"
+ " 'external-contents': '/external/file'\n"
+ " }\n"
+ "] }", Lower);
+ ASSERT_TRUE(NULL != FS.getPtr());
+
+ // default true
+ EXPECT_EQ("/external/file", FS->status("/A")->getName());
+ // explicit
+ EXPECT_EQ("/external/file", FS->status("/B")->getName());
+ EXPECT_EQ("/C", FS->status("/C")->getName());
+
+ // global configuration
+ FS = getFromYAMLString(
+ "{ 'use-external-names': false,\n"
+ " 'roots': [\n"
+ " { 'type': 'file', 'name': '/A',\n"
+ " 'external-contents': '/external/file'\n"
+ " },\n"
+ " { 'type': 'file', 'name': '/B',\n"
+ " 'use-external-name': true,\n"
+ " 'external-contents': '/external/file'\n"
+ " },\n"
+ " { 'type': 'file', 'name': '/C',\n"
+ " 'use-external-name': false,\n"
+ " 'external-contents': '/external/file'\n"
+ " }\n"
+ "] }", Lower);
+ ASSERT_TRUE(NULL != FS.getPtr());
+
+ // default
+ EXPECT_EQ("/A", FS->status("/A")->getName());
+ // explicit
+ EXPECT_EQ("/external/file", FS->status("/B")->getName());
+ EXPECT_EQ("/C", FS->status("/C")->getName());
+}
+
TEST_F(VFSFromYAMLTest, MultiComponentPath) {
IntrusiveRefCntPtr<DummyFileSystem> Lower(new DummyFileSystem());
Lower->addRegularFile("/other");
OpenPOWER on IntegriCloud