================ @@ -16,3 +17,76 @@ def test_file(self): self.assertEqual(str(file), "t.c") self.assertEqual(file.name, "t.c") self.assertEqual(repr(file), "<File: t.c>") + + def test_file_eq(self): + path = os.path.join(inputs_dir, "hello.cpp") + header_path = os.path.join(inputs_dir, "header3.h") + tu = TranslationUnit.from_source(path) + file1 = File.from_name(tu, path) + file2 = File.from_name(tu, header_path) + file2_2 = File.from_name(tu, header_path) + + self.assertEqual(file1, file1) + self.assertEqual(file2, file2_2) + self.assertNotEqual(file1, file2) + self.assertNotEqual(file1, "t.c") + + def test_file_eq_failing(self): + index = Index.create() + tu = index.parse( + "t.c", + unsaved_files=[ + ("t.c", "int a = 729;"), + ("s.c", "int a = 729;"), + ], + ) + file1 = File.from_name(tu, "t.c") + file2 = File.from_name(tu, "s.c") + # FIXME: These files are not supposed to be equal + self.assertEqual(file1, file2) + + def test_file_eq_failing_2(self): + index = Index.create() + tu = index.parse( + "t.c", + unsaved_files=[ + ("t.c", "int a = 729;"), + ("s.c", "int a = 728;"), + ], + ) + file1 = File.from_name(tu, "t.c") + file2 = File.from_name(tu, "s.c") + # FIXME: These files are not supposed to be equal + self.assertEqual(file1, file2) + + def test_file_eq_failing_3(self): + index = Index.create() + tu = index.parse( + "t.c", + unsaved_files=[ + ("t.c", '#include "a.c"\n#include "b.c";'), + ("a.c", "int a = 729;"), + ("b.c", "int b = 729;"), + ], + ) + file1 = File.from_name(tu, "t.c") + file2 = File.from_name(tu, "a.c") + file3 = File.from_name(tu, "b.c") + # FIXME: These files are not supposed to be equal + self.assertEqual(file2, file3) + self.assertEqual(file1, file2) + self.assertEqual(file1, file3) + + def test_file_eq_failing_4(self): + path = os.path.join(inputs_dir, "testfile.c") + path_a = os.path.join(inputs_dir, "a.inc") + path_b = os.path.join(inputs_dir, "b.inc") + tu = TranslationUnit.from_source(path) + print(tu.spelling, tu.cursor.spelling) + file1 = File.from_name(tu, path) + file2 = File.from_name(tu, path_a) + file3 = File.from_name(tu, path_b) + # FIXME: These files are not supposed to be equal + self.assertEqual(file2, file3) + self.assertEqual(file1, file2) + self.assertEqual(file1, file3) ---------------- DeinAlptraum wrote:
@AaronBallman sorry for the delay and thanks a lot for the suggestions! Changing the line you mentioned to use the equality operator instead indeed seems to result in the correct behavior! It seems like file equality doesn't have any tests in `LibclangTest.cpp` either, so I'll add one for this and open a PR later. https://github.com/llvm/llvm-project/pull/130383 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits