mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-02 08:26:29 +00:00
[VFS] Add isLocal to ProxyFileSystem and add unit tests.
Differential Revision: https://reviews.llvm.org/D55789 llvm-svn: 349410
This commit is contained in:
parent
54f6e32c40
commit
faad5fda26
@ -374,6 +374,9 @@ public:
|
||||
SmallVectorImpl<char> &Output) const override {
|
||||
return FS->getRealPath(Path, Output);
|
||||
}
|
||||
std::error_code isLocal(const Twine &Path, bool &Result) override {
|
||||
return FS->isLocal(Path, Result);
|
||||
}
|
||||
|
||||
protected:
|
||||
FileSystem &getUnderlyingFS() { return *FS; }
|
||||
|
@ -743,6 +743,43 @@ TEST(VirtualFileSystemTest, HiddenInIteration) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(ProxyFileSystemTest, Basic) {
|
||||
IntrusiveRefCntPtr<vfs::InMemoryFileSystem> Base(
|
||||
new vfs::InMemoryFileSystem());
|
||||
vfs::ProxyFileSystem PFS(Base);
|
||||
|
||||
Base->addFile("/a", 0, MemoryBuffer::getMemBuffer("test"));
|
||||
|
||||
auto Stat = PFS.status("/a");
|
||||
ASSERT_FALSE(Stat.getError());
|
||||
|
||||
auto File = PFS.openFileForRead("/a");
|
||||
ASSERT_FALSE(File.getError());
|
||||
EXPECT_EQ("test", (*(*File)->getBuffer("ignored"))->getBuffer());
|
||||
|
||||
std::error_code EC;
|
||||
vfs::directory_iterator I = PFS.dir_begin("/", EC);
|
||||
ASSERT_FALSE(EC);
|
||||
ASSERT_EQ("/a", I->path());
|
||||
I.increment(EC);
|
||||
ASSERT_FALSE(EC);
|
||||
ASSERT_EQ(vfs::directory_iterator(), I);
|
||||
|
||||
ASSERT_FALSE(PFS.setCurrentWorkingDirectory("/"));
|
||||
|
||||
auto PWD = PFS.getCurrentWorkingDirectory();
|
||||
ASSERT_FALSE(PWD.getError());
|
||||
ASSERT_EQ("/", *PWD);
|
||||
|
||||
SmallString<16> Path;
|
||||
ASSERT_FALSE(PFS.getRealPath("a", Path));
|
||||
ASSERT_EQ("/a", Path);
|
||||
|
||||
bool Local = true;
|
||||
ASSERT_FALSE(PFS.isLocal("/a", Local));
|
||||
ASSERT_EQ(false, Local);
|
||||
}
|
||||
|
||||
class InMemoryFileSystemTest : public ::testing::Test {
|
||||
protected:
|
||||
llvm::vfs::InMemoryFileSystem FS;
|
||||
|
Loading…
Reference in New Issue
Block a user