Relands "[YAMLVFSWriter][Test][NFC] Add couple tests"

Fixed test for Windows.

Differential Revision: https://reviews.llvm.org/D79552
This commit is contained in:
Jan Korous 2020-05-07 19:11:51 -07:00
parent 03cb328d6f
commit 49b32d8041
1 changed files with 57 additions and 0 deletions

View File

@ -2274,3 +2274,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);
llvm::StringRef 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));
}