amaiorano created this revision. amaiorano added reviewers: klimek, djasper, hans, cfe-commits.
This is more a workaround than a real fix. The real problem is that FS.addFile uses clang::vfs::FileSystem::makeAbsolute to convert the input path to an absolute path, while getStyle uses llvm::sys::fs::make_absolute, which while named similarly, behave differently. Both will join the input path to the current working directory (CWD), except that in the former case, you need to have set the CWD explicitly via clang::vfs::FileSystem::setCurrentWorkingDirectory, while the latter retrieves the CWD from the platform abstraction (llvm::sys::fs::current_path). A better fix might be to make clang::vfs::FileSystem match the behaviour of llvm::sys::fs, having it retrieve the CWD from the platform, rather than having the client set it explicitly. Or perhaps clang::vfs::FileSystem should be rewritten in terms of llvm::sys::fs, and deprecate the former so that code moves towards using the latter. https://reviews.llvm.org/D27971 Files: unittests/Format/FormatTest.cpp Index: unittests/Format/FormatTest.cpp =================================================================== --- unittests/Format/FormatTest.cpp +++ unittests/Format/FormatTest.cpp @@ -10907,12 +10907,16 @@ format("auto a = unique_ptr < Foo < Bar>[10]> ;", Spaces)); } -// Since this test case uses UNIX-style file path. We disable it for MS -// compiler. -#if !defined(_MSC_VER) && !defined(__MINGW32__) - TEST(FormatStyle, GetStyleOfFile) { vfs::InMemoryFileSystem FS; + + // Set CWD so that clang::vfs::FileSystem::makeAbsolute and + // llvm::sys::fs::make_absolute return the same thing. + llvm::SmallString<128> InitialDirectory; + std::error_code EC = llvm::sys::fs::current_path(InitialDirectory); + EXPECT_EQ(EC.value(), 0); + FS.setCurrentWorkingDirectory(InitialDirectory); + // Test 1: format file in the same directory. ASSERT_TRUE( FS.addFile("/a/.clang-format", 0, @@ -10938,8 +10942,6 @@ ASSERT_EQ(Style3, getGoogleStyle()); } -#endif // _MSC_VER - TEST_F(ReplacementTest, FormatCodeAfterReplacements) { // Column limit is 20. std::string Code = "Type *a =\n"
Index: unittests/Format/FormatTest.cpp =================================================================== --- unittests/Format/FormatTest.cpp +++ unittests/Format/FormatTest.cpp @@ -10907,12 +10907,16 @@ format("auto a = unique_ptr < Foo < Bar>[10]> ;", Spaces)); } -// Since this test case uses UNIX-style file path. We disable it for MS -// compiler. -#if !defined(_MSC_VER) && !defined(__MINGW32__) - TEST(FormatStyle, GetStyleOfFile) { vfs::InMemoryFileSystem FS; + + // Set CWD so that clang::vfs::FileSystem::makeAbsolute and + // llvm::sys::fs::make_absolute return the same thing. + llvm::SmallString<128> InitialDirectory; + std::error_code EC = llvm::sys::fs::current_path(InitialDirectory); + EXPECT_EQ(EC.value(), 0); + FS.setCurrentWorkingDirectory(InitialDirectory); + // Test 1: format file in the same directory. ASSERT_TRUE( FS.addFile("/a/.clang-format", 0, @@ -10938,8 +10942,6 @@ ASSERT_EQ(Style3, getGoogleStyle()); } -#endif // _MSC_VER - TEST_F(ReplacementTest, FormatCodeAfterReplacements) { // Column limit is 20. std::string Code = "Type *a =\n"
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits