r348665 - [tests] Fix the FileManagerTest getVirtualFile test on Windows
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Mon Dec 10 06:55:04 PST 2018
On Fri, Dec 7, 2018 at 6:52 PM Stella Stamenova via cfe-commits
<cfe-commits at lists.llvm.org> wrote:
>
> Author: stella.stamenova
> Date: Fri Dec 7 15:50:05 2018
> New Revision: 348665
>
> URL: http://llvm.org/viewvc/llvm-project?rev=348665&view=rev
> Log:
> [tests] Fix the FileManagerTest getVirtualFile test on Windows
>
> Summary: The test passes on Windows only when it is executed on the C: drive. If the build and tests run on a different drive, the test is currently failing.
>
> Reviewers: kadircet, asmith
>
> Subscribers: cfe-commits
>
> Differential Revision: https://reviews.llvm.org/D55451
>
> Modified:
> cfe/trunk/unittests/Basic/FileManagerTest.cpp
>
> Modified: cfe/trunk/unittests/Basic/FileManagerTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Basic/FileManagerTest.cpp?rev=348665&r1=348664&r2=348665&view=diff
> ==============================================================================
> --- cfe/trunk/unittests/Basic/FileManagerTest.cpp (original)
> +++ cfe/trunk/unittests/Basic/FileManagerTest.cpp Fri Dec 7 15:50:05 2018
> @@ -351,22 +351,34 @@ TEST_F(FileManagerTest, makeAbsoluteUses
>
> // getVirtualFile should always fill the real path.
> TEST_F(FileManagerTest, getVirtualFileFillsRealPathName) {
> + SmallString<64> CustomWorkingDir;
> +#ifdef _WIN32
> + CustomWorkingDir = "C:/";
> +#else
> + CustomWorkingDir = "/";
> +#endif
Unfortunately, this is still an issue -- you cannot assume that C:\ is
the correct drive letter on Windows. For instance, this unit test
fails for me because it turns out to be D:\ on my system.
~Aaron
> +
> + auto FS = IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem>(
> + new llvm::vfs::InMemoryFileSystem);
> + // setCurrentworkingdirectory must finish without error.
> + ASSERT_TRUE(!FS->setCurrentWorkingDirectory(CustomWorkingDir));
> +
> + FileSystemOptions Opts;
> + FileManager Manager(Opts, FS);
> +
> // Inject fake files into the file system.
> auto statCache = llvm::make_unique<FakeStatCache>();
> statCache->InjectDirectory("/tmp", 42);
> statCache->InjectFile("/tmp/test", 43);
> - manager.addStatCache(std::move(statCache));
> +
> + Manager.addStatCache(std::move(statCache));
>
> // Check for real path.
> - const FileEntry *file = manager.getVirtualFile("/tmp/test", 123, 1);
> + const FileEntry *file = Manager.getVirtualFile("/tmp/test", 123, 1);
> ASSERT_TRUE(file != nullptr);
> ASSERT_TRUE(file->isValid());
> - SmallString<64> ExpectedResult;
> -#ifdef _WIN32
> - ExpectedResult = "C:/";
> -#else
> - ExpectedResult = "/";
> -#endif
> + SmallString<64> ExpectedResult = CustomWorkingDir;
> +
> llvm::sys::path::append(ExpectedResult, "tmp", "test");
> EXPECT_EQ(file->tryGetRealPathName(), ExpectedResult);
> }
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list