Author: Dmitry Vasilyev Date: 2024-05-23T13:59:02+04:00 New Revision: 4d9e7b14e45120557e57da2f00f6d23cf122dd95
URL: https://github.com/llvm/llvm-project/commit/4d9e7b14e45120557e57da2f00f6d23cf122dd95 DIFF: https://github.com/llvm/llvm-project/commit/4d9e7b14e45120557e57da2f00f6d23cf122dd95.diff LOG: [lldb][Windows] Fixed the TestBreakpointCommand test (#93122) The TestBreakpointCommand test is incorrectly disabled for Windows target. We can disable it for Windows host instead or just fix the issue. This patch fixes the path separator in BreakpointResolverFileLine::DeduceSourceMapping() and the Windows specific absolute path in the test in case of the Windows host. Added: Modified: lldb/source/Breakpoint/BreakpointResolverFileLine.cpp lldb/test/API/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py Removed: ################################################################################ diff --git a/lldb/source/Breakpoint/BreakpointResolverFileLine.cpp b/lldb/source/Breakpoint/BreakpointResolverFileLine.cpp index d7d8c714867e3..16c4ee1b88d16 100644 --- a/lldb/source/Breakpoint/BreakpointResolverFileLine.cpp +++ b/lldb/source/Breakpoint/BreakpointResolverFileLine.cpp @@ -198,16 +198,16 @@ void BreakpointResolverFileLine::DeduceSourceMapping( return; Log *log = GetLog(LLDBLog::Breakpoints); - const llvm::StringRef path_separator = llvm::sys::path::get_separator( - m_location_spec.GetFileSpec().GetPathStyle()); // Check if "b" is a suffix of "a". // And return std::nullopt if not or the new path // of "a" after consuming "b" from the back. auto check_suffix = - [path_separator](llvm::StringRef a, llvm::StringRef b, - bool case_sensitive) -> std::optional<llvm::StringRef> { + [](llvm::StringRef a, llvm::StringRef b, + bool case_sensitive) -> std::optional<llvm::StringRef> { if (case_sensitive ? a.consume_back(b) : a.consume_back_insensitive(b)) { - if (a.empty() || a.ends_with(path_separator)) { + // Note sc_file_dir and request_file_dir below are normalized + // and always contain the path separator '/'. + if (a.empty() || a.ends_with("/")) { return a; } } diff --git a/lldb/test/API/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py b/lldb/test/API/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py index c219a4ee5bd9c..605561c757372 100644 --- a/lldb/test/API/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py +++ b/lldb/test/API/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py @@ -6,7 +6,7 @@ import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil +from lldbsuite.test import lldbutil, lldbplatformutil import json import os import side_effect @@ -581,7 +581,6 @@ def verify_source_map_deduce_statistics(self, target, expected_count): self.assertNotEqual(target_stats, None) self.assertEqual(target_stats["sourceMapDeduceCount"], expected_count) - @skipIf(oslist=["windows"]) @no_debug_info_test def test_breakpoints_auto_source_map_relative(self): """ @@ -612,8 +611,13 @@ def test_breakpoints_auto_source_map_relative(self): self.verify_source_map_deduce_statistics(target, 0) # Verify auto deduced source map when file path in debug info - # is a suffix of request breakpoint file path - path = "/x/y/a/b/c/main.cpp" + # is a suffix of request breakpoint file path. + # Note the path must be absolute. + path = ( + "/x/y/a/b/c/main.cpp" + if lldbplatformutil.getHostPlatform() != "windows" + else r"C:\x\y\a\b\c\main.cpp" + ) bp = target.BreakpointCreateByLocation(path, 2) self.assertGreater( bp.GetNumLocations(), @@ -625,7 +629,11 @@ def test_breakpoints_auto_source_map_relative(self): source_map_json = self.get_source_map_json() self.assertEqual(len(source_map_json), 1, "source map should not be empty") - self.verify_source_map_entry_pair(source_map_json[0], ".", "/x/y") + self.verify_source_map_entry_pair( + source_map_json[0], + ".", + "/x/y" if lldbplatformutil.getHostPlatform() != "windows" else r"C:\x\y", + ) self.verify_source_map_deduce_statistics(target, 1) # Reset source map. _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits