summaryrefslogtreecommitdiffstats
path: root/clang/unittests/Basic/FileManagerTest.cpp
diff options
context:
space:
mode:
authorHarlan Haskins <harlan@harlanhaskins.com>2019-08-01 21:31:49 +0000
committerHarlan Haskins <harlan@harlanhaskins.com>2019-08-01 21:31:49 +0000
commit461f0722dd26487c1faa497ba37aabed1477a561 (patch)
tree4b92c879f5fb1b812b00fc04e3bc7706598b6c6f /clang/unittests/Basic/FileManagerTest.cpp
parent66c8bccc236f5633d7de9b6264384b02a821b714 (diff)
downloadbcm5719-llvm-461f0722dd26487c1faa497ba37aabed1477a561.tar.gz
bcm5719-llvm-461f0722dd26487c1faa497ba37aabed1477a561.zip
[clang] Adopt llvm::ErrorOr in FileManager methods
Previously, the FileManager would use NULL returns to signify whether a file existed, but that doesn’t cover permissions issues or anything else that might occur while trying to stat or read a file. Instead, convert getFile and getDirectory into returning llvm::ErrorOr Signed-off-by: Harlan Haskins <harlan@apple.com> llvm-svn: 367615
Diffstat (limited to 'clang/unittests/Basic/FileManagerTest.cpp')
-rw-r--r--clang/unittests/Basic/FileManagerTest.cpp82
1 files changed, 45 insertions, 37 deletions
diff --git a/clang/unittests/Basic/FileManagerTest.cpp b/clang/unittests/Basic/FileManagerTest.cpp
index 19e2180d3ff..3518325083f 100644
--- a/clang/unittests/Basic/FileManagerTest.cpp
+++ b/clang/unittests/Basic/FileManagerTest.cpp
@@ -112,9 +112,9 @@ TEST_F(FileManagerTest, NoVirtualDirectoryExistsBeforeAVirtualFileIsAdded) {
// by what's in the real file system.
manager.setStatCache(llvm::make_unique<FakeStatCache>());
- EXPECT_EQ(nullptr, manager.getDirectory("virtual/dir/foo"));
- EXPECT_EQ(nullptr, manager.getDirectory("virtual/dir"));
- EXPECT_EQ(nullptr, manager.getDirectory("virtual"));
+ ASSERT_FALSE(manager.getDirectory("virtual/dir/foo"));
+ ASSERT_FALSE(manager.getDirectory("virtual/dir"));
+ ASSERT_FALSE(manager.getDirectory("virtual"));
}
// When a virtual file is added, all of its ancestors should be created.
@@ -123,15 +123,15 @@ TEST_F(FileManagerTest, getVirtualFileCreatesDirectoryEntriesForAncestors) {
manager.setStatCache(llvm::make_unique<FakeStatCache>());
manager.getVirtualFile("virtual/dir/bar.h", 100, 0);
- EXPECT_EQ(nullptr, manager.getDirectory("virtual/dir/foo"));
+ ASSERT_FALSE(manager.getDirectory("virtual/dir/foo"));
- const DirectoryEntry *dir = manager.getDirectory("virtual/dir");
- ASSERT_TRUE(dir != nullptr);
- EXPECT_EQ("virtual/dir", dir->getName());
+ auto dir = manager.getDirectory("virtual/dir");
+ ASSERT_TRUE(dir);
+ EXPECT_EQ("virtual/dir", (*dir)->getName());
dir = manager.getDirectory("virtual");
- ASSERT_TRUE(dir != nullptr);
- EXPECT_EQ("virtual", dir->getName());
+ ASSERT_TRUE(dir);
+ EXPECT_EQ("virtual", (*dir)->getName());
}
// getFile() returns non-NULL if a real file exists at the given path.
@@ -150,18 +150,18 @@ TEST_F(FileManagerTest, getFileReturnsValidFileEntryForExistingRealFile) {
manager.setStatCache(std::move(statCache));
- const FileEntry *file = manager.getFile("/tmp/test");
- ASSERT_TRUE(file != nullptr);
- ASSERT_TRUE(file->isValid());
- EXPECT_EQ("/tmp/test", file->getName());
+ auto file = manager.getFile("/tmp/test");
+ ASSERT_TRUE(file);
+ ASSERT_TRUE((*file)->isValid());
+ EXPECT_EQ("/tmp/test", (*file)->getName());
- const DirectoryEntry *dir = file->getDir();
+ const DirectoryEntry *dir = (*file)->getDir();
ASSERT_TRUE(dir != nullptr);
EXPECT_EQ("/tmp", dir->getName());
#ifdef _WIN32
file = manager.getFile(FileName);
- ASSERT_TRUE(file != NULL);
+ ASSERT_TRUE(file);
dir = file->getDir();
ASSERT_TRUE(dir != NULL);
@@ -175,12 +175,12 @@ TEST_F(FileManagerTest, getFileReturnsValidFileEntryForExistingVirtualFile) {
manager.setStatCache(llvm::make_unique<FakeStatCache>());
manager.getVirtualFile("virtual/dir/bar.h", 100, 0);
- const FileEntry *file = manager.getFile("virtual/dir/bar.h");
- ASSERT_TRUE(file != nullptr);
- ASSERT_TRUE(file->isValid());
- EXPECT_EQ("virtual/dir/bar.h", file->getName());
+ auto file = manager.getFile("virtual/dir/bar.h");
+ ASSERT_TRUE(file);
+ ASSERT_TRUE((*file)->isValid());
+ EXPECT_EQ("virtual/dir/bar.h", (*file)->getName());
- const DirectoryEntry *dir = file->getDir();
+ const DirectoryEntry *dir = (*file)->getDir();
ASSERT_TRUE(dir != nullptr);
EXPECT_EQ("virtual/dir", dir->getName());
}
@@ -196,13 +196,13 @@ TEST_F(FileManagerTest, getFileReturnsDifferentFileEntriesForDifferentFiles) {
statCache->InjectFile("bar.cpp", 43);
manager.setStatCache(std::move(statCache));
- const FileEntry *fileFoo = manager.getFile("foo.cpp");
- const FileEntry *fileBar = manager.getFile("bar.cpp");
- ASSERT_TRUE(fileFoo != nullptr);
- ASSERT_TRUE(fileFoo->isValid());
- ASSERT_TRUE(fileBar != nullptr);
- ASSERT_TRUE(fileBar->isValid());
- EXPECT_NE(fileFoo, fileBar);
+ auto fileFoo = manager.getFile("foo.cpp");
+ auto fileBar = manager.getFile("bar.cpp");
+ ASSERT_TRUE(fileFoo);
+ ASSERT_TRUE((*fileFoo)->isValid());
+ ASSERT_TRUE(fileBar);
+ ASSERT_TRUE((*fileBar)->isValid());
+ EXPECT_NE(*fileFoo, *fileBar);
}
// getFile() returns NULL if neither a real file nor a virtual file
@@ -217,8 +217,8 @@ TEST_F(FileManagerTest, getFileReturnsNULLForNonexistentFile) {
// Create a virtual bar.cpp file.
manager.getVirtualFile("bar.cpp", 200, 0);
- const FileEntry *file = manager.getFile("xyz.txt");
- EXPECT_EQ(nullptr, file);
+ auto file = manager.getFile("xyz.txt");
+ ASSERT_FALSE(file);
}
// The following tests apply to Unix-like system only.
@@ -234,7 +234,11 @@ TEST_F(FileManagerTest, getFileReturnsSameFileEntryForAliasedRealFiles) {
statCache->InjectFile("abc/bar.cpp", 42);
manager.setStatCache(std::move(statCache));
- EXPECT_EQ(manager.getFile("abc/foo.cpp"), manager.getFile("abc/bar.cpp"));
+ auto f1 = manager.getFile("abc/foo.cpp");
+ auto f2 = manager.getFile("abc/bar.cpp");
+
+ EXPECT_EQ(f1 ? *f1 : nullptr,
+ f2 ? *f2 : nullptr);
}
// getFile() returns the same FileEntry for virtual files that have
@@ -250,7 +254,11 @@ TEST_F(FileManagerTest, getFileReturnsSameFileEntryForAliasedVirtualFiles) {
ASSERT_TRUE(manager.getVirtualFile("abc/foo.cpp", 100, 0)->isValid());
ASSERT_TRUE(manager.getVirtualFile("abc/bar.cpp", 200, 0)->isValid());
- EXPECT_EQ(manager.getFile("abc/foo.cpp"), manager.getFile("abc/bar.cpp"));
+ auto f1 = manager.getFile("abc/foo.cpp");
+ auto f2 = manager.getFile("abc/bar.cpp");
+
+ EXPECT_EQ(f1 ? *f1 : nullptr,
+ f2 ? *f2 : nullptr);
}
// getFile() Should return the same entry as getVirtualFile if the file actually
@@ -273,15 +281,15 @@ TEST_F(FileManagerTest, getVirtualFileWithDifferentName) {
EXPECT_EQ(123, file1->getSize());
// Lookup the virtual file with a different name:
- const FileEntry *file2 = manager.getFile("c:/tmp/test", 100, 1);
- ASSERT_TRUE(file2 != nullptr);
- ASSERT_TRUE(file2->isValid());
+ auto file2 = manager.getFile("c:/tmp/test", 100, 1);
+ ASSERT_TRUE(file2);
+ ASSERT_TRUE((*file2)->isValid());
// Check that it's the same UFE:
- EXPECT_EQ(file1, file2);
- EXPECT_EQ(43U, file2->getUniqueID().getFile());
+ EXPECT_EQ(file1, *file2);
+ EXPECT_EQ(43U, (*file2)->getUniqueID().getFile());
// Check that the contents of the UFE are not overwritten by the entry in the
// filesystem:
- EXPECT_EQ(123, file2->getSize());
+ EXPECT_EQ(123, (*file2)->getSize());
}
#endif // !_WIN32
OpenPOWER on IntegriCloud