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, _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits