[Lldb-commits] [lldb] [lldb][Windows] Fixed the TestBreakpointCommand test (PR #93122)
Dmitry Vasilyev via lldb-commits
lldb-commits at lists.llvm.org
Wed May 22 18:32:40 PDT 2024
https://github.com/slydiman created https://github.com/llvm/llvm-project/pull/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.
>From 4220b6d0dcc32e26a6916608ad2b2cf873bee212 Mon Sep 17 00:00:00 2001
From: Dmitry Vasilyev <dvassiliev at accesssoftek.com>
Date: Thu, 23 May 2024 05:30:39 +0400
Subject: [PATCH] [lldb] Fixed the TestBreakpointCommand test
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.
---
.../Breakpoint/BreakpointResolverFileLine.cpp | 10 +++++-----
.../TestBreakpointCommand.py | 18 +++++++++++++-----
2 files changed, 18 insertions(+), 10 deletions(-)
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.
More information about the lldb-commits
mailing list