• Home
  • Raw
  • Download

Lines Matching +full:external +full:- +full:contents

1 //===- unittests/Basic/VirtualFileSystem.cpp ---------------- VFS tests ---===//
8 //===----------------------------------------------------------------------===//
55 return I->second; in status()
78 if (LastSep == Path.size() || LastSep == Path.size()-1) in isInPath()
88 if (isInPath(I->first)) { in DirIterImpl()
89 CurrentEntry = I->second; in DirIterImpl()
97 if (isInPath(I->first)) { in increment()
98 CurrentEntry = I->second; in increment()
142 D->addRegularFile("/foo"); in TEST()
143 Status = D->status("/foo"); in TEST()
145 EXPECT_TRUE(Status->isStatusKnown()); in TEST()
146 EXPECT_FALSE(Status->isDirectory()); in TEST()
147 EXPECT_TRUE(Status->isRegularFile()); in TEST()
148 EXPECT_FALSE(Status->isSymlink()); in TEST()
149 EXPECT_FALSE(Status->isOther()); in TEST()
150 EXPECT_TRUE(Status->exists()); in TEST()
152 D->addDirectory("/bar"); in TEST()
153 Status = D->status("/bar"); in TEST()
155 EXPECT_TRUE(Status->isStatusKnown()); in TEST()
156 EXPECT_TRUE(Status->isDirectory()); in TEST()
157 EXPECT_FALSE(Status->isRegularFile()); in TEST()
158 EXPECT_FALSE(Status->isSymlink()); in TEST()
159 EXPECT_FALSE(Status->isOther()); in TEST()
160 EXPECT_TRUE(Status->exists()); in TEST()
162 D->addSymlink("/baz"); in TEST()
163 Status = D->status("/baz"); in TEST()
165 EXPECT_TRUE(Status->isStatusKnown()); in TEST()
166 EXPECT_FALSE(Status->isDirectory()); in TEST()
167 EXPECT_FALSE(Status->isRegularFile()); in TEST()
168 EXPECT_TRUE(Status->isSymlink()); in TEST()
169 EXPECT_FALSE(Status->isOther()); in TEST()
170 EXPECT_TRUE(Status->exists()); in TEST()
172 EXPECT_TRUE(Status->equivalent(*Status)); in TEST()
173 ErrorOr<vfs::Status> Status2 = D->status("/foo"); in TEST()
175 EXPECT_FALSE(Status->equivalent(*Status2)); in TEST()
181 EXPECT_FALSE(Status = D->status("/foo")); in TEST()
184 EXPECT_FALSE(Status = O->status("/foo")); in TEST()
186 D->addRegularFile("/foo"); in TEST()
187 Status = D->status("/foo"); in TEST()
191 Status2 = O->status("/foo"); in TEST()
193 EXPECT_TRUE(Status->equivalent(*Status2)); in TEST()
202 O->pushOverlay(Middle); in TEST()
203 O->pushOverlay(Top); in TEST()
210 Base->addRegularFile("/foo"); in TEST()
211 StatusB = Base->status("/foo"); in TEST()
213 Status1 = O->status("/foo"); in TEST()
215 Middle->addRegularFile("/foo"); in TEST()
216 StatusM = Middle->status("/foo"); in TEST()
218 Status2 = O->status("/foo"); in TEST()
220 Top->addRegularFile("/foo"); in TEST()
221 StatusT = Top->status("/foo"); in TEST()
223 Status3 = O->status("/foo"); in TEST()
226 EXPECT_TRUE(Status1->equivalent(*StatusB)); in TEST()
227 EXPECT_TRUE(Status2->equivalent(*StatusM)); in TEST()
228 EXPECT_TRUE(Status3->equivalent(*StatusT)); in TEST()
230 EXPECT_FALSE(Status1->equivalent(*Status2)); in TEST()
231 EXPECT_FALSE(Status2->equivalent(*Status3)); in TEST()
232 EXPECT_FALSE(Status1->equivalent(*Status3)); in TEST()
240 O->pushOverlay(Upper); in TEST()
242 Lower->addDirectory("/lower-only"); in TEST()
243 Upper->addDirectory("/upper-only"); in TEST()
245 // non-merged paths should be the same in TEST()
246 ErrorOr<vfs::Status> Status1 = Lower->status("/lower-only"); in TEST()
248 ErrorOr<vfs::Status> Status2 = O->status("/lower-only"); in TEST()
250 EXPECT_TRUE(Status1->equivalent(*Status2)); in TEST()
252 Status1 = Upper->status("/upper-only"); in TEST()
254 Status2 = O->status("/upper-only"); in TEST()
256 EXPECT_TRUE(Status1->equivalent(*Status2)); in TEST()
265 O->pushOverlay(Upper); in TEST()
268 Lower->addDirectory("/both", sys::fs::owner_read); in TEST()
269 Upper->addDirectory("/both", sys::fs::owner_all | sys::fs::group_read); in TEST()
270 Status = O->status("/both"); in TEST()
272 EXPECT_EQ(0740, Status->getPermissions()); in TEST()
275 Lower->addRegularFile("/both/foo", sys::fs::owner_read); in TEST()
276 Upper->addRegularFile("/both/bar", sys::fs::owner_write); in TEST()
277 Status = O->status("/both/foo"); in TEST()
279 EXPECT_EQ(0400, Status->getPermissions()); in TEST()
280 Status = O->status("/both/bar"); in TEST()
282 EXPECT_EQ(0200, Status->getPermissions()); in TEST()
309 ScopedDir TestDirectory("virtual-file-system-test", /*Unique*/true); in TEST()
313 vfs::directory_iterator I = FS->dir_begin(Twine(TestDirectory), EC); in TEST()
322 I = FS->dir_begin(Twine(TestDirectory), EC); in TEST()
326 EXPECT_TRUE(I->getName().endswith("a") || I->getName().endswith("c")); in TEST()
330 EXPECT_TRUE(I->getName().endswith("a") || I->getName().endswith("c")); in TEST()
336 ScopedDir TestDirectory("virtual-file-system-test", /*Unique*/true); in TEST()
353 std::vector<std::string> Contents; in TEST() local
356 Contents.push_back(I->getName()); in TEST()
359 // Check contents, which may be in any order in TEST()
360 EXPECT_EQ(4U, Contents.size()); in TEST()
362 for (const std::string &Name : Contents) { in TEST()
364 int Index = Name[Name.size()-1] - 'a'; in TEST()
380 // Do not rely on iteration order to check for contents, sort both in checkContents()
383 InputToCheck.push_back(I->getName()); in checkContents()
399 O->pushOverlay(Upper); in TEST()
402 checkContents(O->dir_begin("/", EC), ArrayRef<StringRef>()); in TEST()
404 Lower->addRegularFile("/file1"); in TEST()
405 checkContents(O->dir_begin("/", EC), ArrayRef<StringRef>("/file1")); in TEST()
407 Upper->addRegularFile("/file2"); in TEST()
408 checkContents(O->dir_begin("/", EC), {"/file2", "/file1"}); in TEST()
410 Lower->addDirectory("/dir1"); in TEST()
411 Lower->addRegularFile("/dir1/foo"); in TEST()
412 Upper->addDirectory("/dir2"); in TEST()
413 Upper->addRegularFile("/dir2/foo"); in TEST()
414 checkContents(O->dir_begin("/dir2", EC), ArrayRef<StringRef>("/dir2/foo")); in TEST()
415 checkContents(O->dir_begin("/", EC), {"/dir2", "/file2", "/dir1", "/file1"}); in TEST()
424 O->pushOverlay(Middle); in TEST()
425 O->pushOverlay(Upper); in TEST()
431 Lower->addRegularFile("/file1"); in TEST()
435 Upper->addDirectory("/dir"); in TEST()
436 Upper->addRegularFile("/dir/file2"); in TEST()
440 Lower->addDirectory("/dir1"); in TEST()
441 Lower->addRegularFile("/dir1/foo"); in TEST()
442 Lower->addDirectory("/dir1/a"); in TEST()
443 Lower->addRegularFile("/dir1/a/b"); in TEST()
444 Middle->addDirectory("/a"); in TEST()
445 Middle->addDirectory("/a/b"); in TEST()
446 Middle->addDirectory("/a/b/c"); in TEST()
447 Middle->addRegularFile("/a/b/c/d"); in TEST()
448 Middle->addRegularFile("/hiddenByUp"); in TEST()
449 Upper->addDirectory("/dir2"); in TEST()
450 Upper->addRegularFile("/dir2/foo"); in TEST()
451 Upper->addRegularFile("/hiddenByUp"); in TEST()
466 O->pushOverlay(Middle); in TEST()
467 O->pushOverlay(Upper); in TEST()
470 checkContents(O->dir_begin("/", EC), ArrayRef<StringRef>()); in TEST()
472 Middle->addRegularFile("/file2"); in TEST()
473 checkContents(O->dir_begin("/", EC), ArrayRef<StringRef>("/file2")); in TEST()
475 Lower->addRegularFile("/file1"); in TEST()
476 Upper->addRegularFile("/file3"); in TEST()
477 checkContents(O->dir_begin("/", EC), {"/file3", "/file2", "/file1"}); in TEST()
486 O->pushOverlay(Middle); in TEST()
487 O->pushOverlay(Upper); in TEST()
490 Lower->addRegularFile("/onlyInLow", sys::fs::owner_read); in TEST()
491 Lower->addRegularFile("/hiddenByMid", sys::fs::owner_read); in TEST()
492 Lower->addRegularFile("/hiddenByUp", sys::fs::owner_read); in TEST()
493 Middle->addRegularFile("/onlyInMid", sys::fs::owner_write); in TEST()
494 Middle->addRegularFile("/hiddenByMid", sys::fs::owner_write); in TEST()
495 Middle->addRegularFile("/hiddenByUp", sys::fs::owner_write); in TEST()
496 Upper->addRegularFile("/onlyInUp", sys::fs::owner_all); in TEST()
497 Upper->addRegularFile("/hiddenByUp", sys::fs::owner_all); in TEST()
499 O->dir_begin("/", EC), in TEST()
502 // Make sure we get the top-most entry in TEST()
505 vfs::directory_iterator I = O->dir_begin("/", EC), E; in TEST()
507 if (I->getName() == "/hiddenByUp") in TEST()
510 EXPECT_EQ(sys::fs::owner_all, I->getPermissions()); in TEST()
514 vfs::directory_iterator I = O->dir_begin("/", EC), E; in TEST()
516 if (I->getName() == "/hiddenByMid") in TEST()
519 EXPECT_EQ(sys::fs::owner_write, I->getPermissions()); in TEST()
564 ASSERT_EQ("/a", Stat->getName()); in TEST_F()
572 ASSERT_EQ("/a", Stat->getName()); in TEST_F()
583 ASSERT_EQ("a", (*(*File)->getBuffer("ignored"))->getBuffer()); in TEST_F()
585 ASSERT_EQ("a", (*(*File)->getBuffer("ignored"))->getBuffer()); in TEST_F()
587 ASSERT_EQ("a", (*(*File)->getBuffer("ignored"))->getBuffer()); in TEST_F()
597 ASSERT_EQ("c", (*(*File)->getBuffer("ignored"))->getBuffer()); in TEST_F()
599 ASSERT_EQ("d", (*(*File)->getBuffer("ignored"))->getBuffer()); in TEST_F()
616 ASSERT_EQ("/a", I->getName()); in TEST_F()
619 ASSERT_EQ("/b", I->getName()); in TEST_F()
626 ASSERT_EQ("/b/c", I->getName()); in TEST_F()
638 ASSERT_EQ("c", Stat->getName()); in TEST_F()
667 ++Test->NumDiagnostics; in CountingDiagHandler()
706 Lower->addRegularFile("//root/foo/bar/a"); in TEST_F()
712 " 'contents': [ {\n" in TEST_F()
715 " 'external-contents': '//root/foo/bar/a'\n" in TEST_F()
720 " 'external-contents': '//root/foo/b'\n" in TEST_F()
731 O->pushOverlay(FS); in TEST_F()
734 ErrorOr<vfs::Status> S = O->status("//root/file1"); in TEST_F()
736 EXPECT_EQ("//root/foo/bar/a", S->getName()); in TEST_F()
737 EXPECT_TRUE(S->IsVFSMapped); in TEST_F()
739 ErrorOr<vfs::Status> SLower = O->status("//root/foo/bar/a"); in TEST_F()
740 EXPECT_EQ("//root/foo/bar/a", SLower->getName()); in TEST_F()
741 EXPECT_TRUE(S->equivalent(*SLower)); in TEST_F()
742 EXPECT_FALSE(SLower->IsVFSMapped); in TEST_F()
745 auto OpenedF = O->openFileForRead("//root/file1"); in TEST_F()
747 auto OpenedS = (*OpenedF)->status(); in TEST_F()
749 EXPECT_EQ("//root/foo/bar/a", OpenedS->getName()); in TEST_F()
750 EXPECT_TRUE(OpenedS->IsVFSMapped); in TEST_F()
753 S = O->status("//root/"); in TEST_F()
755 EXPECT_TRUE(S->isDirectory()); in TEST_F()
756 EXPECT_TRUE(S->equivalent(*O->status("//root/"))); // non-volatile UniqueID in TEST_F()
759 EXPECT_EQ(O->status("//root/file2").getError(), in TEST_F()
766 Lower->addRegularFile("//root/foo/bar/a"); in TEST_F()
768 getFromYAMLString("{ 'case-sensitive': 'false',\n" in TEST_F()
773 " 'contents': [ {\n" in TEST_F()
776 " 'external-contents': '//root/foo/bar/a'\n" in TEST_F()
785 O->pushOverlay(FS); in TEST_F()
787 ErrorOr<vfs::Status> S = O->status("//root/XX"); in TEST_F()
790 ErrorOr<vfs::Status> SS = O->status("//root/xx"); in TEST_F()
792 EXPECT_TRUE(S->equivalent(*SS)); in TEST_F()
793 SS = O->status("//root/xX"); in TEST_F()
794 EXPECT_TRUE(S->equivalent(*SS)); in TEST_F()
795 SS = O->status("//root/Xx"); in TEST_F()
796 EXPECT_TRUE(S->equivalent(*SS)); in TEST_F()
802 Lower->addRegularFile("//root/foo/bar/a"); in TEST_F()
804 getFromYAMLString("{ 'case-sensitive': 'true',\n" in TEST_F()
809 " 'contents': [ {\n" in TEST_F()
812 " 'external-contents': '//root/foo/bar/a'\n" in TEST_F()
821 O->pushOverlay(FS); in TEST_F()
823 ErrorOr<vfs::Status> SS = O->status("//root/xx"); in TEST_F()
825 SS = O->status("//root/xX"); in TEST_F()
827 SS = O->status("//root/Xx"); in TEST_F()
835 // invalid YAML at top-level in TEST_F()
842 "{ 'roots':[ { 'name': 'foo', 'type': 'directory', 'contents': [}", in TEST_F()
849 FS = getFromYAMLString("{ 'case-sensitive': 'maybe', 'roots':[] }", Lower); in TEST_F()
860 "{ 'roots':[ { 'type': 'other', 'name': 'me', 'contents': '' }", Lower); in TEST_F()
863 "'external-contents': 'other' }", in TEST_F()
867 "{ 'roots':[ { 'type': 'file', 'name': 'me', 'external-contents': [] }", in TEST_F()
871 "{ 'roots':[ { 'type': 'file', 'name': 'me', 'external-contents': {} }", in TEST_F()
875 "{ 'roots':[ { 'type': 'directory', 'name': 'me', 'contents': {} }", in TEST_F()
879 "{ 'roots':[ { 'type': 'directory', 'name': 'me', 'contents': '' }", in TEST_F()
883 "{ 'roots':[ { 'thingy': 'directory', 'name': 'me', 'contents': [] }", in TEST_F()
891 "{ 'roots':[ { 'type': 'file', 'external-contents': 'other' }", Lower); in TEST_F()
893 FS = getFromYAMLString("{ 'roots':[ { 'name': 'me', 'contents': [] }", Lower); in TEST_F()
900 "{ 'case-sensitive':'true', 'case-sensitive':'true', 'roots':[] }", in TEST_F()
905 "'external-contents':'blah' } ] }", in TEST_F()
916 FS = getFromYAMLRawString("{ 'version':-1, 'roots':[] }", Lower); in TEST_F()
925 Lower->addRegularFile("//root/external/file"); in TEST_F()
930 " 'external-contents': '//root/external/file'\n" in TEST_F()
933 " 'use-external-name': true,\n" in TEST_F()
934 " 'external-contents': '//root/external/file'\n" in TEST_F()
937 " 'use-external-name': false,\n" in TEST_F()
938 " 'external-contents': '//root/external/file'\n" in TEST_F()
944 EXPECT_EQ("//root/external/file", FS->status("//root/A")->getName()); in TEST_F()
946 EXPECT_EQ("//root/external/file", FS->status("//root/B")->getName()); in TEST_F()
947 EXPECT_EQ("//root/C", FS->status("//root/C")->getName()); in TEST_F()
951 "{ 'use-external-names': false,\n" in TEST_F()
954 " 'external-contents': '//root/external/file'\n" in TEST_F()
957 " 'use-external-name': true,\n" in TEST_F()
958 " 'external-contents': '//root/external/file'\n" in TEST_F()
961 " 'use-external-name': false,\n" in TEST_F()
962 " 'external-contents': '//root/external/file'\n" in TEST_F()
968 EXPECT_EQ("//root/A", FS->status("//root/A")->getName()); in TEST_F()
970 EXPECT_EQ("//root/external/file", FS->status("//root/B")->getName()); in TEST_F()
971 EXPECT_EQ("//root/C", FS->status("//root/C")->getName()); in TEST_F()
976 Lower->addRegularFile("//root/other"); in TEST_F()
982 " 'external-contents': '//root/other' }]\n" in TEST_F()
985 EXPECT_FALSE(FS->status("//root/path/to/file").getError()); in TEST_F()
986 EXPECT_FALSE(FS->status("//root/path/to").getError()); in TEST_F()
987 EXPECT_FALSE(FS->status("//root/path").getError()); in TEST_F()
988 EXPECT_FALSE(FS->status("//root/").getError()); in TEST_F()
994 " 'contents': [ { 'type': 'file', 'name': 'file',\n" in TEST_F()
995 " 'external-contents': '//root/other' }]}]\n" in TEST_F()
998 EXPECT_FALSE(FS->status("//root/path/to/file").getError()); in TEST_F()
999 EXPECT_FALSE(FS->status("//root/path/to").getError()); in TEST_F()
1000 EXPECT_FALSE(FS->status("//root/path").getError()); in TEST_F()
1001 EXPECT_FALSE(FS->status("//root/").getError()); in TEST_F()
1007 " 'contents': [ { 'type': 'file', 'name': 'path/to/file',\n" in TEST_F()
1008 " 'external-contents': '//root/other' }]}]\n" in TEST_F()
1011 EXPECT_FALSE(FS->status("//root/path/to/file").getError()); in TEST_F()
1012 EXPECT_FALSE(FS->status("//root/path/to").getError()); in TEST_F()
1013 EXPECT_FALSE(FS->status("//root/path").getError()); in TEST_F()
1014 EXPECT_FALSE(FS->status("//root/").getError()); in TEST_F()
1019 Lower->addRegularFile("//root/other"); in TEST_F()
1025 " 'contents': [ { 'type': 'file', 'name': 'file',\n" in TEST_F()
1026 " 'external-contents': '//root/other' }]}]\n" in TEST_F()
1029 EXPECT_FALSE(FS->status("//root/path/to/file").getError()); in TEST_F()
1030 EXPECT_FALSE(FS->status("//root/path/to").getError()); in TEST_F()
1031 EXPECT_FALSE(FS->status("//root/path").getError()); in TEST_F()
1032 EXPECT_FALSE(FS->status("//root/").getError()); in TEST_F()
1037 Lower->addDirectory("//root/"); in TEST_F()
1038 Lower->addDirectory("//root/foo"); in TEST_F()
1039 Lower->addDirectory("//root/foo/bar"); in TEST_F()
1040 Lower->addRegularFile("//root/foo/bar/a"); in TEST_F()
1041 Lower->addRegularFile("//root/foo/bar/b"); in TEST_F()
1042 Lower->addRegularFile("//root/file3"); in TEST_F()
1044 getFromYAMLString("{ 'use-external-names': false,\n" in TEST_F()
1049 " 'contents': [ {\n" in TEST_F()
1052 " 'external-contents': '//root/foo/bar/a'\n" in TEST_F()
1057 " 'external-contents': '//root/foo/bar/b'\n" in TEST_F()
1068 O->pushOverlay(FS); in TEST_F()
1071 checkContents(O->dir_begin("//root/", EC), in TEST_F()
1074 checkContents(O->dir_begin("//root/foo/bar", EC), in TEST_F()
1084 Lower->addDirectory("//root/zab"); in TEST_F()
1085 Lower->addDirectory("//root/baz"); in TEST_F()
1086 Lower->addRegularFile("//root/zab/a"); in TEST_F()
1087 Lower->addRegularFile("//root/zab/b"); in TEST_F()
1089 "{ 'use-external-names': false,\n" in TEST_F()
1094 " 'contents': [ {\n" in TEST_F()
1097 " 'external-contents': '//root/zab/a'\n" in TEST_F()
1104 " 'contents': [ {\n" in TEST_F()
1107 " 'external-contents': '//root/zab/b'\n" in TEST_F()
1118 O->pushOverlay(FS); in TEST_F()
1122 checkContents(O->dir_begin("//root/baz/", EC), in TEST_F()
1129 Lower->addDirectory("//root/a"); in TEST_F()
1130 Lower->addDirectory("//root/a/b"); in TEST_F()
1131 Lower->addDirectory("//root/a/b/c"); in TEST_F()
1132 Lower->addRegularFile("//root/a/b/c/file"); in TEST_F()
1134 "{ 'use-external-names': false,\n" in TEST_F()
1139 " 'contents': [ {\n" in TEST_F()
1142 " 'external-contents': '//root/a/b/c/file'\n" in TEST_F()
1153 O->pushOverlay(FS); in TEST_F()