https://github.com/DeinAlptraum created https://github.com/llvm/llvm-project/pull/135773
Add tests for clang_File_isEqual (on-disk and in-memory) >From 62dcfb1cb9bd0918bd471fddc1ffd849c2d604ac Mon Sep 17 00:00:00 2001 From: Jannick Kremer <jannick.kre...@mailbox.org> Date: Tue, 15 Apr 2025 19:17:43 +0900 Subject: [PATCH] [libclang/C++] Fix clang_File_isEqual for in-memory files Add tests for clang_File_isEqual (on-disk and in-memory) --- clang/unittests/libclang/LibclangTest.cpp | 49 +++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/clang/unittests/libclang/LibclangTest.cpp b/clang/unittests/libclang/LibclangTest.cpp index 6de4d02bf74f4..b2a87d240e56e 100644 --- a/clang/unittests/libclang/LibclangTest.cpp +++ b/clang/unittests/libclang/LibclangTest.cpp @@ -1410,3 +1410,52 @@ TEST_F(LibclangRewriteTest, RewriteRemove) { ASSERT_EQ(clang_CXRewriter_overwriteChangedFiles(Rew), 0); EXPECT_EQ(getFileContent(Filename), "int () { return 0; }"); } + +TEST_F(LibclangParseTest, FileEqual) { + std::string AInc = "a.inc", BInc = "b.inc", Main = "main.cpp"; + WriteFile(Main, "int a[] = {\n" + " #include \"a.inc\"\n" + "};\n" + "int b[] = {\n" + " #include \"b.inc\"\n" + "};"); + WriteFile(AInc, "1,2,3"); + WriteFile(BInc, "1,2,3"); + + ClangTU = clang_parseTranslationUnit(Index, Main.c_str(), nullptr, 0, nullptr, + 0, TUFlags); + + CXFile AFile = clang_getFile(ClangTU, AInc.c_str()), + AFile2 = clang_getFile(ClangTU, AInc.c_str()), + BFile = clang_getFile(ClangTU, BInc.c_str()), + MainFile = clang_getFile(ClangTU, Main.c_str()); + + ASSERT_FALSE(clang_File_isEqual(MainFile, AFile)); + ASSERT_FALSE(clang_File_isEqual(AFile, BFile)); + ASSERT_TRUE(clang_File_isEqual(AFile, AFile2)); +} + +TEST_F(LibclangParseTest, FileEqualInMemory) { + std::string AInc = "a.inc", BInc = "b.inc", Main = "main.cpp"; + MapUnsavedFile(Main, "int a[] = {\n" + " #include \"a.inc\"\n" + "};\n" + "int b[] = {\n" + " #include \"b.inc\"\n" + "};"); + MapUnsavedFile(AInc, "1,2,3"); + MapUnsavedFile(BInc, "1,2,3"); + + ClangTU = clang_parseTranslationUnit(Index, UnsavedFiles[0].Filename, nullptr, + 0, &UnsavedFiles.front(), + UnsavedFiles.size(), TUFlags); + + CXFile AFile = clang_getFile(ClangTU, UnsavedFiles[1].Filename), + AFile2 = clang_getFile(ClangTU, UnsavedFiles[1].Filename), + BFile = clang_getFile(ClangTU, UnsavedFiles[2].Filename), + MainFile = clang_getFile(ClangTU, UnsavedFiles[0].Filename); + + ASSERT_FALSE(clang_File_isEqual(MainFile, AFile)); + ASSERT_FALSE(clang_File_isEqual(AFile, BFile)); + ASSERT_TRUE(clang_File_isEqual(AFile, AFile2)); +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits