https://github.com/DeinAlptraum updated https://github.com/llvm/llvm-project/pull/138132
>From 74cf17d76918c465aa24e391e15546ab030483f2 Mon Sep 17 00:00:00 2001 From: Jannick Kremer <jannick.kre...@mailbox.org> Date: Thu, 1 May 2025 22:42:56 +0900 Subject: [PATCH 1/2] [libclang/python] Add tests for equality operators. Adds tests for SourceRange, SourceLocation and Cursor. This is a follow-up to #138074 --- .../python/tests/cindex/test_cursor.py | 15 ++++++++++++++ .../python/tests/cindex/test_location.py | 20 +++++++++++++++++++ .../python/tests/cindex/test_source_range.py | 15 ++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/clang/bindings/python/tests/cindex/test_cursor.py b/clang/bindings/python/tests/cindex/test_cursor.py index 82f40c60afa59..b90a0495ca7be 100644 --- a/clang/bindings/python/tests/cindex/test_cursor.py +++ b/clang/bindings/python/tests/cindex/test_cursor.py @@ -1035,3 +1035,18 @@ def test_specialized_template(self): self.assertNotEqual(foos[0], foos[1]) self.assertEqual(foos[0], prime_foo) self.assertIsNone(tu.cursor.specialized_template) + + def test_equality(self): + tu = get_tu(CHILDREN_TEST, lang="cpp") + cursor1 = get_cursor(tu, "s0") + cursor1_2 = get_cursor(tu, "s0") + cursor2 = get_cursor(tu, "f0") + + self.assertIsNotNone(cursor1) + self.assertIsNotNone(cursor1_2) + self.assertIsNotNone(cursor2) + + self.assertEqual(cursor1, cursor1) + self.assertEqual(cursor1, cursor1_2) + self.assertNotEqual(cursor1, cursor2) + self.assertNotEqual(cursor1, "foo") diff --git a/clang/bindings/python/tests/cindex/test_location.py b/clang/bindings/python/tests/cindex/test_location.py index 21c6169bb0a6f..f1a4589738f52 100644 --- a/clang/bindings/python/tests/cindex/test_location.py +++ b/clang/bindings/python/tests/cindex/test_location.py @@ -16,6 +16,8 @@ from .util import get_cursor, get_tu +INPUTS_DIR = os.path.join(os.path.dirname(__file__), "INPUTS") + BASE_INPUT = "int one;\nint two;\n" @@ -151,3 +153,21 @@ def test_operator_lt(self): assert l_t1_12 < l_t2_13 < l_t1_14 assert not l_t2_13 < l_t1_12 assert not l_t1_14 < l_t2_13 + + def test_equality(self): + path = os.path.join(INPUTS_DIR, "testfile.c") + path_a = os.path.join(INPUTS_DIR, "a.inc") + tu = TranslationUnit.from_source(path) + main_file = File.from_name(tu, path) + a_file = File.from_name(tu, path_a) + + location1 = SourceLocation.from_position(tu, main_file, 1, 3) + location2 = SourceLocation.from_position(tu, main_file, 2, 2) + location1_2 = SourceLocation.from_position(tu, main_file, 1, 3) + file2_location1 = SourceLocation.from_position(tu, a_file, 1, 3) + + self.assertEqual(location1, location1) + self.assertEqual(location1, location1_2) + self.assertNotEqual(location1, location2) + self.assertNotEqual(location1, file2_location1) + self.assertNotEqual(location1, "foo") diff --git a/clang/bindings/python/tests/cindex/test_source_range.py b/clang/bindings/python/tests/cindex/test_source_range.py index 81c0a9b05cff8..87b17caaac69b 100644 --- a/clang/bindings/python/tests/cindex/test_source_range.py +++ b/clang/bindings/python/tests/cindex/test_source_range.py @@ -9,6 +9,8 @@ from .util import get_tu +INPUTS_DIR = os.path.join(os.path.dirname(__file__), "INPUTS") + def create_range(tu, line1, column1, line2, column2): return SourceRange.from_locations( @@ -83,3 +85,16 @@ def test_contains(self): r_curly = create_range(tu2, 1, 11, 3, 1) l_f2 = SourceLocation.from_position(tu2, tu2.get_file("./numbers.inc"), 4, 1) assert l_f2 in r_curly + + def test_equality(self): + path = os.path.join(INPUTS_DIR, "testfile.c") + tu = TranslationUnit.from_source(path) + + r1 = create_range(tu, 1, 1, 2, 2) + r2 = create_range(tu, 1, 2, 2, 2) + r1_2 = create_range(tu, 1, 1, 2, 2) + + self.assertEqual(r1, r1) + self.assertEqual(r1, r1_2) + self.assertNotEqual(r1, r2) + self.assertNotEqual(r1, "foo") >From 686f5078bd875eaff54b7984d2286a6de6d4d060 Mon Sep 17 00:00:00 2001 From: Jannick Kremer <jannick.kre...@mailbox.org> Date: Fri, 2 May 2025 10:59:46 +0900 Subject: [PATCH 2/2] Use pathlib for input file paths --- clang/bindings/python/tests/cindex/test_location.py | 7 ++++--- clang/bindings/python/tests/cindex/test_source_range.py | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/clang/bindings/python/tests/cindex/test_location.py b/clang/bindings/python/tests/cindex/test_location.py index f1a4589738f52..3c6b0357e2f83 100644 --- a/clang/bindings/python/tests/cindex/test_location.py +++ b/clang/bindings/python/tests/cindex/test_location.py @@ -1,4 +1,5 @@ import os +from pathlib import Path from clang.cindex import ( Config, @@ -16,7 +17,7 @@ from .util import get_cursor, get_tu -INPUTS_DIR = os.path.join(os.path.dirname(__file__), "INPUTS") +INPUTS_DIR = Path(__file__).parent / "INPUTS" BASE_INPUT = "int one;\nint two;\n" @@ -155,8 +156,8 @@ def test_operator_lt(self): assert not l_t1_14 < l_t2_13 def test_equality(self): - path = os.path.join(INPUTS_DIR, "testfile.c") - path_a = os.path.join(INPUTS_DIR, "a.inc") + path = INPUTS_DIR / "testfile.c" + path_a = INPUTS_DIR / "a.inc" tu = TranslationUnit.from_source(path) main_file = File.from_name(tu, path) a_file = File.from_name(tu, path_a) diff --git a/clang/bindings/python/tests/cindex/test_source_range.py b/clang/bindings/python/tests/cindex/test_source_range.py index 87b17caaac69b..ca3ebc4041955 100644 --- a/clang/bindings/python/tests/cindex/test_source_range.py +++ b/clang/bindings/python/tests/cindex/test_source_range.py @@ -1,4 +1,5 @@ import os +from pathlib import Path from clang.cindex import Config, SourceLocation, SourceRange, TranslationUnit @@ -9,7 +10,7 @@ from .util import get_tu -INPUTS_DIR = os.path.join(os.path.dirname(__file__), "INPUTS") +INPUTS_DIR = Path(__file__).parent / "INPUTS" def create_range(tu, line1, column1, line2, column2): @@ -87,7 +88,7 @@ def test_contains(self): assert l_f2 in r_curly def test_equality(self): - path = os.path.join(INPUTS_DIR, "testfile.c") + path = INPUTS_DIR / "testfile.c" tu = TranslationUnit.from_source(path) r1 = create_range(tu, 1, 1, 2, 2) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits