Author: Adrian Vogelsgesang Date: 2024-10-31T09:01:46-07:00 New Revision: 2aed0d9cd3fc8f3c600d59b8b10d10a4466e50c6
URL: https://github.com/llvm/llvm-project/commit/2aed0d9cd3fc8f3c600d59b8b10d10a4466e50c6 DIFF: https://github.com/llvm/llvm-project/commit/2aed0d9cd3fc8f3c600d59b8b10d10a4466e50c6.diff LOG: [lldb][test] Fix `LibCxxInternalsRecognizerTestCase` on clang <= 17 (#114122) We had to disable the tests for libc++ <= 15 because the `std::ranges` functions were not available, yet. Also, on libc++17 there was still an additional `__fn` struct withing `ranges::__sort`. The test expectation was updated to use a regular expression, so we can match both the old and the new name. See https://green.lab.llvm.org/job/llvm.org/view/LLDB/job/lldb-cmake-matrix/912/execution/node/107/log/ Added: Modified: lldb/test/API/lang/cpp/libcxx-internals-recognizer/TestLibcxxInternalsRecognizer.py Removed: ################################################################################ diff --git a/lldb/test/API/lang/cpp/libcxx-internals-recognizer/TestLibcxxInternalsRecognizer.py b/lldb/test/API/lang/cpp/libcxx-internals-recognizer/TestLibcxxInternalsRecognizer.py index ad48208f21e502..5cc43f3cd9910c 100644 --- a/lldb/test/API/lang/cpp/libcxx-internals-recognizer/TestLibcxxInternalsRecognizer.py +++ b/lldb/test/API/lang/cpp/libcxx-internals-recognizer/TestLibcxxInternalsRecognizer.py @@ -3,11 +3,13 @@ from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil +import re class LibCxxInternalsRecognizerTestCase(TestBase): NO_DEBUG_INFO_TESTCASE = True @add_test_categories(["libc++"]) + @skipIf(compiler="clang", compiler_version=["<", "16.0"]) def test_frame_recognizer(self): """Test that implementation details of libc++ are hidden""" self.build() @@ -21,7 +23,7 @@ def test_frame_recognizer(self): # We never hide the frame of the entry-point into the standard library, even # if the name starts with `__` which usually indicates an internal function. "ranges_sort_less(int, int)": [ - "ranges::__sort::operator()", + re.compile("ranges::__sort::(__fn::)?operator\(\)"), "test_algorithms", ], # `ranges::views::transform` internally uses `std::invoke`, and that @@ -57,9 +59,14 @@ def test_frame_recognizer(self): ): frame_id = frame_id + 1 # Expect the correct parent frame - self.assertIn( - expected_parent, thread.GetFrameAtIndex(frame_id).GetFunctionName() - ) + func_name = thread.GetFrameAtIndex(frame_id).GetFunctionName() + if isinstance(expected_parent, re.Pattern): + self.assertTrue( + expected_parent.search(func_name) is not None, + f"'{expected_parent}' not found in '{func_name}'" + ) + else: + self.assertIn(expected_parent, func_name) frame_id = frame_id + 1 process.Continue() _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits