[Lldb-commits] [lldb] ef25a21 - Prevent lldb-vscode tests from source lldbinit file
Jeffrey Tan via lldb-commits
lldb-commits at lists.llvm.org
Tue Oct 11 15:43:49 PDT 2022
Author: Jeffrey Tan
Date: 2022-10-11T15:43:35-07:00
New Revision: ef25a217266aaf3b6df68ac155537e3a1171dccf
URL: https://github.com/llvm/llvm-project/commit/ef25a217266aaf3b6df68ac155537e3a1171dccf
DIFF: https://github.com/llvm/llvm-project/commit/ef25a217266aaf3b6df68ac155537e3a1171dccf.diff
LOG: Prevent lldb-vscode tests from source lldbinit file
lldb-vscode is hard-coded to source .lldbinit file which causes some tests to
fail on my machine.
This patch adds a new option to control this:
1. vscode.py and lldb-vscode tests will not source .lldbinit by default
2. lldb-vscode will source .lldbinit in production if not specified otherwise
Differential Revision: https://reviews.llvm.org/D135620
Added:
Modified:
lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py
lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
lldb/tools/lldb-vscode/lldb-vscode.cpp
Removed:
################################################################################
diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py
index 90d90d959592d..8ba8e0e4bf3b4 100644
--- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py
@@ -253,7 +253,7 @@ def attach(self, program=None, pid=None, waitFor=None, trace=None,
initCommands=None, preRunCommands=None, stopCommands=None,
exitCommands=None, attachCommands=None, coreFile=None,
disconnectAutomatically=True, terminateCommands=None,
- postRunCommands=None, sourceMap=None):
+ postRunCommands=None, sourceMap=None, sourceInitFile=False):
'''Build the default Makefile target, create the VSCode debug adaptor,
and attach to the process.
'''
@@ -267,7 +267,7 @@ def cleanup():
# Execute the cleanup function during test case tear down.
self.addTearDownHook(cleanup)
# Initialize and launch the program
- self.vscode.request_initialize()
+ self.vscode.request_initialize(sourceInitFile)
response = self.vscode.request_attach(
program=program, pid=pid, waitFor=waitFor, trace=trace,
initCommands=initCommands, preRunCommands=preRunCommands,
@@ -284,7 +284,7 @@ def launch(self, program=None, args=None, cwd=None, env=None,
disableSTDIO=False, shellExpandArguments=False,
trace=False, initCommands=None, preRunCommands=None,
stopCommands=None, exitCommands=None, terminateCommands=None,
- sourcePath=None, debuggerRoot=None, launchCommands=None,
+ sourcePath=None, debuggerRoot=None, sourceInitFile=False, launchCommands=None,
sourceMap=None, disconnectAutomatically=True, runInTerminal=False,
expectFailure=False, postRunCommands=None):
'''Sending launch request to vscode
@@ -301,7 +301,7 @@ def cleanup():
self.addTearDownHook(cleanup)
# Initialize and launch the program
- self.vscode.request_initialize()
+ self.vscode.request_initialize(sourceInitFile)
response = self.vscode.request_launch(
program,
args=args,
@@ -344,7 +344,7 @@ def build_and_launch(self, program, args=None, cwd=None, env=None,
trace=False, initCommands=None, preRunCommands=None,
stopCommands=None, exitCommands=None,
terminateCommands=None, sourcePath=None,
- debuggerRoot=None, runInTerminal=False,
+ debuggerRoot=None, sourceInitFile=False, runInTerminal=False,
disconnectAutomatically=True, postRunCommands=None,
lldbVSCodeEnv=None):
'''Build the default Makefile target, create the VSCode debug adaptor,
@@ -356,6 +356,7 @@ def build_and_launch(self, program, args=None, cwd=None, env=None,
return self.launch(program, args, cwd, env, stopOnEntry, disableASLR,
disableSTDIO, shellExpandArguments, trace,
initCommands, preRunCommands, stopCommands, exitCommands,
- terminateCommands, sourcePath, debuggerRoot, runInTerminal=runInTerminal,
+ terminateCommands, sourcePath, debuggerRoot, sourceInitFile,
+ runInTerminal=runInTerminal,
disconnectAutomatically=disconnectAutomatically,
postRunCommands=postRunCommands)
diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
index 0996d8696cd25..d6a6abca53e38 100644
--- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
@@ -613,7 +613,7 @@ def request_evaluate(self, expression, frameIndex=0, threadId=None, context=None
}
return self.send_recv(command_dict)
- def request_initialize(self):
+ def request_initialize(self, sourceInitFile):
command_dict = {
'command': 'initialize',
'type': 'request',
@@ -626,7 +626,8 @@ def request_initialize(self):
'pathFormat': 'path',
'supportsRunInTerminalRequest': True,
'supportsVariablePaging': True,
- 'supportsVariableType': True
+ 'supportsVariableType': True,
+ 'sourceInitFile': sourceInitFile
}
}
response = self.send_recv(command_dict)
@@ -1004,7 +1005,7 @@ def attach_options_specified(options):
def run_vscode(dbg, args, options):
- dbg.request_initialize()
+ dbg.request_initialize(options.sourceInitFile)
if attach_options_specified(options):
response = dbg.request_attach(program=options.program,
pid=options.pid,
@@ -1112,6 +1113,13 @@ def main():
default=False,
help='Pause waiting for a debugger to attach to the debug adaptor')
+ parser.add_option(
+ '--sourceInitFile',
+ action='store_true',
+ dest='sourceInitFile',
+ default=False,
+ help='Whether lldb-vscode should source .lldbinit file or not')
+
parser.add_option(
'--port',
type='int',
diff --git a/lldb/tools/lldb-vscode/lldb-vscode.cpp b/lldb/tools/lldb-vscode/lldb-vscode.cpp
index b7285915f8542..1c6f9c829c388 100644
--- a/lldb/tools/lldb-vscode/lldb-vscode.cpp
+++ b/lldb/tools/lldb-vscode/lldb-vscode.cpp
@@ -1444,8 +1444,15 @@ void request_initialize(const llvm::json::Object &request) {
auto log_cb = [](const char *buf, void *baton) -> void {
g_vsc.SendOutput(OutputType::Console, llvm::StringRef{buf});
};
+
+ auto arguments = request.getObject("arguments");
+ // sourceInitFile option is not from formal DAP specification. It is only
+ // used by unit tests to prevent sourcing .lldbinit files from environment
+ // which may affect the outcome of tests.
+ bool source_init_file = GetBoolean(arguments, "sourceInitFile", true);
+
g_vsc.debugger =
- lldb::SBDebugger::Create(true /*source_init_files*/, log_cb, nullptr);
+ lldb::SBDebugger::Create(source_init_file, log_cb, nullptr);
g_vsc.progress_event_thread = std::thread(ProgressEventThreadFunction);
// Start our event thread so we can receive events from the debugger, target,
More information about the lldb-commits
mailing list