[llvm] 3094992 - Relands "[YAMLVFSWriter][Test][NFC] Add couple tests" vol. 2

Jan Korous via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 4 01:26:26 PDT 2020


Author: Jan Korous
Date: 2020-06-04T01:26:12-07:00
New Revision: 30949926f98576fbff8d5ad0390be5124ffacd7e

URL: https://github.com/llvm/llvm-project/commit/30949926f98576fbff8d5ad0390be5124ffacd7e
DIFF: https://github.com/llvm/llvm-project/commit/30949926f98576fbff8d5ad0390be5124ffacd7e.diff

LOG: Relands "[YAMLVFSWriter][Test][NFC] Add couple tests" vol. 2

This reverts commit e4e3e41905d182c0f3d5b0b9406e3cbf2aabb30f.

Fixed dangling StringRef in test.

Added: 
    

Modified: 
    llvm/unittests/Support/VirtualFileSystemTest.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/unittests/Support/VirtualFileSystemTest.cpp b/llvm/unittests/Support/VirtualFileSystemTest.cpp
index 85e7093514b3..96092de2345b 100644
--- a/llvm/unittests/Support/VirtualFileSystemTest.cpp
+++ b/llvm/unittests/Support/VirtualFileSystemTest.cpp
@@ -2338,3 +2338,60 @@ TEST_F(VFSFromYAMLTest, YAMLVFSWriterTestHandleDirs) {
   EXPECT_FALSE(FS->exists(_b.Path + "/b"));
   EXPECT_FALSE(FS->exists(_c.Path + "/c"));
 }
+
+TEST_F(VFSFromYAMLTest, YAMLVFSWriterTestNestedDirs) {
+  ScopedDir TestDirectory("virtual-file-system-test", /*Unique*/ true);
+  ScopedDir a(TestDirectory + "/a");
+  ScopedDir _a_aa(TestDirectory + "/a/aa");
+  ScopedDir b(TestDirectory + "/b");
+  ScopedDir _b_bb(TestDirectory + "/b/bb");
+  ScopedDir c(TestDirectory + "/c");
+  ScopedDir _c_cc(TestDirectory + "/c/cc");
+
+  vfs::YAMLVFSWriter VFSWriter;
+  VFSWriter.addDirectoryMapping(a.Path, "//root/a");
+  VFSWriter.addDirectoryMapping(_a_aa.Path, "//root/a/aa");
+  VFSWriter.addDirectoryMapping(b.Path, "//root/b");
+  VFSWriter.addDirectoryMapping(_b_bb.Path, "//root/b/bb");
+  VFSWriter.addDirectoryMapping(c.Path, "//root/c");
+  VFSWriter.addDirectoryMapping(_c_cc.Path, "//root/c/cc");
+
+  std::string Buffer;
+  raw_string_ostream OS(Buffer);
+  VFSWriter.write(OS);
+  OS.flush();
+
+  IntrusiveRefCntPtr<ErrorDummyFileSystem> Lower(new ErrorDummyFileSystem());
+  Lower->addDirectory("//root/a");
+  Lower->addDirectory("//root/a/aa");
+  Lower->addDirectory("//root/b");
+  Lower->addDirectory("//root/b/bb");
+  Lower->addDirectory("//root/c");
+  Lower->addDirectory("//root/c/cc");
+
+  IntrusiveRefCntPtr<vfs::FileSystem> FS = getFromYAMLRawString(Buffer, Lower);
+  ASSERT_TRUE(FS.get() != nullptr);
+
+  EXPECT_TRUE(FS->exists(a.Path));
+  EXPECT_TRUE(FS->exists(_a_aa.Path));
+  EXPECT_TRUE(FS->exists(b.Path));
+  EXPECT_TRUE(FS->exists(_b_bb.Path));
+  EXPECT_TRUE(FS->exists(c.Path));
+  EXPECT_TRUE(FS->exists(_c_cc.Path));
+}
+
+TEST(YAMLVFSWriterTest, HandleRootAsVPath) {
+  llvm::SmallVector<char, 32> Tmp;
+  llvm::sys::path::system_temp_directory(false, Tmp);
+  std::string Root = llvm::sys::path::root_path(StringRef(Tmp.data(), Tmp.size())).str();
+  llvm::SmallVector<char, 32> Subdir(Root.begin(), Root.end());
+  llvm::sys::path::append(Subdir, "foo");
+
+  llvm::vfs::YAMLVFSWriter W;
+  W.addDirectoryMapping(Root, "/tmp");
+  W.addDirectoryMapping(std::string{Subdir.begin(), Subdir.end()} + "/foo", "/tmp/bar");
+  std::string Dump;
+  llvm::raw_string_ostream ToBeIgnored(Dump);
+
+  EXPECT_NO_FATAL_FAILURE(W.write(ToBeIgnored));
+}


        


More information about the llvm-commits mailing list