diff options
Diffstat (limited to 'unittests/Basic/FileManagerTest.cpp')
| -rw-r--r-- | unittests/Basic/FileManagerTest.cpp | 27 | 
1 files changed, 27 insertions, 0 deletions
| diff --git a/unittests/Basic/FileManagerTest.cpp b/unittests/Basic/FileManagerTest.cpp index a19535e1047c..a2a6c6aebe4b 100644 --- a/unittests/Basic/FileManagerTest.cpp +++ b/unittests/Basic/FileManagerTest.cpp @@ -10,6 +10,7 @@  #include "clang/Basic/FileManager.h"  #include "clang/Basic/FileSystemOptions.h"  #include "clang/Basic/FileSystemStatCache.h" +#include "clang/Basic/VirtualFileSystem.h"  #include "llvm/ADT/STLExtras.h"  #include "llvm/Config/llvm-config.h"  #include "llvm/Support/Path.h" @@ -296,4 +297,30 @@ TEST_F(FileManagerTest, getVirtualFileWithDifferentName) {  #endif  // !LLVM_ON_WIN32 +TEST_F(FileManagerTest, makeAbsoluteUsesVFS) { +  SmallString<64> CustomWorkingDir; +#ifdef LLVM_ON_WIN32 +  CustomWorkingDir = "C:"; +#else +  CustomWorkingDir = "/"; +#endif +  llvm::sys::path::append(CustomWorkingDir, "some", "weird", "path"); + +  auto FS = +      IntrusiveRefCntPtr<vfs::InMemoryFileSystem>(new vfs::InMemoryFileSystem); +  // setCurrentworkingdirectory must finish without error. +  ASSERT_TRUE(!FS->setCurrentWorkingDirectory(CustomWorkingDir)); + +  FileSystemOptions Opts; +  FileManager Manager(Opts, FS); + +  SmallString<64> Path("a/foo.cpp"); + +  SmallString<64> ExpectedResult(CustomWorkingDir); +  llvm::sys::path::append(ExpectedResult, Path); + +  ASSERT_TRUE(Manager.makeAbsolutePath(Path)); +  EXPECT_EQ(Path, ExpectedResult); +} +  } // anonymous namespace | 
