[Lldb-commits] [PATCH] D74579: [don't review]Creating environment variable test for lldbd
diazhector98 updated this revision to Diff 244723. diazhector98 added a comment. Comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74579/new/ https://reviews.llvm.org/D74579 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/Makefile lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/main.cpp lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py lldb/test/API/testcases/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/test/API/testcases/tools/lldb-vscode/lldbvscode_testcase.py lldb/test/API/testcases/tools/lldb-vscode/vscode.py lldb/tools/lldb-vscode/lldb-vscode.cpp lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the VSCode Environment Variables", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/tools/lldb-vscode/lldb-vscode.cpp === --- lldb/tools/lldb-vscode/lldb-vscode.cpp +++ lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -49,6 +49,8 @@ #include "LLDBUtils.h" #include "VSCode.h" +extern char **environ; + #if defined(_WIN32) #ifndef PATH_MAX #define PATH_MAX MAX_PATH @@ -1327,6 +1329,7 @@ auto launchCommands = GetStrings(arguments, "launchCommands"); g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false); const auto debuggerRoot = GetString(arguments, "debuggerRoot"); + bool launchWithDebuggerEnvironment = GetBoolean(arguments, "inheritEnvironment", false); // This is a hack for loading DWARF in .o files on Mac where the .o files // in the debug map of the main executable have relative paths which require @@ -1364,13 +1367,24 @@ // Extract any extra arguments and append them to our program arguments for // when we launch auto args = GetStrings(arguments, "args"); - if (!args.empty()) + if (!args.empty()) g_vsc.launch_info.SetArguments(MakeArgv(args).data(), true); // Pass any environment variables along that the user specified. auto envs = GetStrings(arguments, "env"); + + if (launchWithDebuggerEnvironment) { +char** env_var_pointer = environ; +std::vector vscode_env_variables; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer){ + vscode_env_variables.push_back(env_variable); +} +envs.insert(std::end(envs), std::begin(vscode_env_variables), std::end(vscode_env_variables)); + } + if (!envs.empty()) g_vsc.launch_info.SetEnvironmentEntries(MakeArgv(envs).data(), true); + auto flags = g_vsc.launch_info.GetLaunchFlags(); Index: lldb/test/API/testcases/tools/lldb-vscode/vscode.py === --- lldb/test/API/testcases/tools/lldb-vscode/vscode.py +++ lldb/test/API/testcases/tools/lldb-vscode/vscode.py @@ -111,7 +111,6 @@ self.exit_status = None self.initialize_body = None self.thread_stop_reasons = {} -self.breakpoint_events = [] self.sequence = 1 self.threads = None self.recv_thread.start() @@ -187,7 +186,7 @@ self.output[category] = output self.output_condition.notify() self.output_condition.release() -# no need to add 'output' event packets to our packets list +# no need to add 'output' packets to our packets list return keepGoing elif event == 'process': # When a new process is attached or launched, remember the @@ -201,13 +200,6 @@ self._process_stopped() tid = body['threadId'] self.thread_stop_reasons[tid] = body -elif event == 'breakpoint': -# Breakpoint events come in when a breakpoint has locations -# added or removed. Keep track of them so we can look for them -# in tests. -self.breakpoint_events.append(packet) -# no need to add 'breakpoint' event packets to our packets list -return keepGoing elif packet_type == 'response': if packet['command'] == 'disconnect': keepGoing = False @@ -570,7 +562,7 @@
[Lldb-commits] [PATCH] D74579: [don't review]Creating environment variable test for lldbd
diazhector98 updated this revision to Diff 244721. diazhector98 added a comment. - Comment Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74579/new/ https://reviews.llvm.org/D74579 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/Makefile lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/main.cpp 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 lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the VSCode Environment Variables", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/tools/lldb-vscode/lldb-vscode.cpp === --- lldb/tools/lldb-vscode/lldb-vscode.cpp +++ lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -49,6 +49,8 @@ #include "LLDBUtils.h" #include "VSCode.h" +extern char **environ; + #if defined(_WIN32) #ifndef PATH_MAX #define PATH_MAX MAX_PATH @@ -1327,6 +1329,7 @@ auto launchCommands = GetStrings(arguments, "launchCommands"); g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false); const auto debuggerRoot = GetString(arguments, "debuggerRoot"); + bool launchWithDebuggerEnvironment = GetBoolean(arguments, "inheritEnvironment", false); // This is a hack for loading DWARF in .o files on Mac where the .o files // in the debug map of the main executable have relative paths which require @@ -1364,13 +1367,24 @@ // Extract any extra arguments and append them to our program arguments for // when we launch auto args = GetStrings(arguments, "args"); - if (!args.empty()) + if (!args.empty()) g_vsc.launch_info.SetArguments(MakeArgv(args).data(), true); // Pass any environment variables along that the user specified. auto envs = GetStrings(arguments, "env"); + + if (launchWithDebuggerEnvironment) { +char** env_var_pointer = environ; +std::vector vscode_env_variables; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer){ + vscode_env_variables.push_back(env_variable); +} +envs.insert(std::end(envs), std::begin(vscode_env_variables), std::end(vscode_env_variables)); + } + if (!envs.empty()) g_vsc.launch_info.SetEnvironmentEntries(MakeArgv(envs).data(), true); + auto flags = g_vsc.launch_info.GetLaunchFlags(); Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py === --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py @@ -570,7 +570,7 @@ disableSTDIO=False, shellExpandArguments=False, trace=False, initCommands=None, preRunCommands=None, stopCommands=None, exitCommands=None, sourcePath=None, - debuggerRoot=None, launchCommands=None): + debuggerRoot=None, launchCommands=None, inheritEnvironment=False): args_dict = { 'program': program } @@ -605,6 +605,8 @@ args_dict['debuggerRoot'] = debuggerRoot if launchCommands: args_dict['launchCommands'] = launchCommands +if inheritEnvironment: +args_dict['inheritEnvironment'] = inheritEnvironment command_dict = { 'command': 'launch', 'type': 'request', @@ -912,7 +914,9 @@ initCommands=options.initCmds, preRunCommands=options.preRunCmds, stopCommands=options.stopCmds, - exitCommands=options.exitCmds) + exitCommands=options.exitCmds + inheritEnvironment=options.inheritEnvironment + ) if response['success']: if options.sourceBreakpoints: Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py === --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.
[Lldb-commits] [PATCH] D74579: [don't review]Creating environment variable test for lldbd
diazhector98 updated this revision to Diff 244719. diazhector98 added a comment. - Merge branch 'master' of https://github.com/llvm/llvm-project Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74579/new/ https://reviews.llvm.org/D74579 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/Makefile lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/main.cpp 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 lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the VSCode Environment Variables", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/tools/lldb-vscode/lldb-vscode.cpp === --- lldb/tools/lldb-vscode/lldb-vscode.cpp +++ lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -49,6 +49,8 @@ #include "LLDBUtils.h" #include "VSCode.h" +extern char **environ; + #if defined(_WIN32) #ifndef PATH_MAX #define PATH_MAX MAX_PATH @@ -1327,6 +1329,7 @@ auto launchCommands = GetStrings(arguments, "launchCommands"); g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false); const auto debuggerRoot = GetString(arguments, "debuggerRoot"); + bool launchWithDebuggerEnvironment = GetBoolean(arguments, "inheritEnvironment", false); // This is a hack for loading DWARF in .o files on Mac where the .o files // in the debug map of the main executable have relative paths which require @@ -1364,13 +1367,24 @@ // Extract any extra arguments and append them to our program arguments for // when we launch auto args = GetStrings(arguments, "args"); - if (!args.empty()) + if (!args.empty()) g_vsc.launch_info.SetArguments(MakeArgv(args).data(), true); // Pass any environment variables along that the user specified. auto envs = GetStrings(arguments, "env"); - if (!envs.empty()) + + if (launchWithDebuggerEnvironment) { +char** env_var_pointer = environ; +std::vector vscode_env_variables; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer){ + vscode_env_variables.push_back(env_variable); +} +envs.insert(std::end(envs), std::begin(vscode_env_variables), std::end(vscode_env_variables)); + } + + if (!envs.empty()) { g_vsc.launch_info.SetEnvironmentEntries(MakeArgv(envs).data(), true); + } auto flags = g_vsc.launch_info.GetLaunchFlags(); Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py === --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py @@ -570,7 +570,7 @@ disableSTDIO=False, shellExpandArguments=False, trace=False, initCommands=None, preRunCommands=None, stopCommands=None, exitCommands=None, sourcePath=None, - debuggerRoot=None, launchCommands=None): + debuggerRoot=None, launchCommands=None, inheritEnvironment=False): args_dict = { 'program': program } @@ -605,6 +605,8 @@ args_dict['debuggerRoot'] = debuggerRoot if launchCommands: args_dict['launchCommands'] = launchCommands +if inheritEnvironment: +args_dict['inheritEnvironment'] = inheritEnvironment command_dict = { 'command': 'launch', 'type': 'request', @@ -912,7 +914,9 @@ initCommands=options.initCmds, preRunCommands=options.preRunCmds, stopCommands=options.stopCmds, - exitCommands=options.exitCmds) + exitCommands=options.exitCmds + inheritEnvironment=options.inheritEnvironment + ) if response['success']: if options.sourceBreakpoints: Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py ===
[Lldb-commits] [PATCH] D74579: [don't review]Creating environment variable test for lldbd
diazhector98 updated this revision to Diff 244717. diazhector98 added a comment. . Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74579/new/ https://reviews.llvm.org/D74579 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/completions/TestVSCode_completions.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/Makefile lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/main.cpp 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 lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the VSCode Environment Variables", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/tools/lldb-vscode/lldb-vscode.cpp === --- lldb/tools/lldb-vscode/lldb-vscode.cpp +++ lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -49,6 +49,11 @@ #include "LLDBUtils.h" #include "VSCode.h" +#include // std::this_thread::sleep_for +#include // std::chrono::seconds + +extern char **environ; + #if defined(_WIN32) #ifndef PATH_MAX #define PATH_MAX MAX_PATH @@ -1340,6 +1345,7 @@ auto launchCommands = GetStrings(arguments, "launchCommands"); g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false); const auto debuggerRoot = GetString(arguments, "debuggerRoot"); + bool launchWithDebuggerEnvironment = GetBoolean(arguments, "inheritEnvironment", false); // This is a hack for loading DWARF in .o files on Mac where the .o files // in the debug map of the main executable have relative paths which require @@ -1387,13 +1393,26 @@ // Extract any extra arguments and append them to our program arguments for // when we launch auto args = GetStrings(arguments, "args"); - if (!args.empty()) + if (!args.empty()) g_vsc.launch_info.SetArguments(MakeArgv(args).data(), true); // Pass any environment variables along that the user specified. auto envs = GetStrings(arguments, "env"); - if (!envs.empty()) + + // if arguments has launchWithDebuggerEnvironment + // then append current environment to g_vsc.launch_info + if (launchWithDebuggerEnvironment) { + // if (true) { +char** env_var_pointer = environ; +std::vector vscode_env_variables; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer){ + vscode_env_variables.push_back(env_variable); +} +envs.insert(std::end(envs), std::begin(vscode_env_variables), std::end(vscode_env_variables)); + } + if (!envs.empty()) { g_vsc.launch_info.SetEnvironmentEntries(MakeArgv(envs).data(), true); + } auto flags = g_vsc.launch_info.GetLaunchFlags(); @@ -2228,6 +2247,8 @@ // }] // } void request_stepIn(const llvm::json::Object &request) { + + return; llvm::json::Object response; FillResponse(request, response); auto arguments = request.getObject("arguments"); Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py === --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py @@ -562,7 +562,7 @@ disableSTDIO=False, shellExpandArguments=False, trace=False, initCommands=None, preRunCommands=None, stopCommands=None, exitCommands=None, sourcePath=None, - debuggerRoot=None, launchCommands=None): + debuggerRoot=None, launchCommands=None, inheritEnvironment=False): args_dict = { 'program': program } @@ -597,6 +597,8 @@ args_dict['debuggerRoot'] = debuggerRoot if launchCommands: args_dict['launchCommands'] = launchCommands +if inheritEnvironment: +args_dict['inheritEnvironment'] = inheritEnvironment command_dict = { 'command': 'launch', 'type': 'request', @@ -891,6 +893,7 @@ stopCommands=options.stopCmds, exitCommands=options.exitCmds) else: +print('Options.Envs: ', options.envs) response
[Lldb-commits] [PATCH] D74579: [don't review]Creating environment variable test for lldbd
wallace added inline comments. Comment at: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py:31-35 +found = False +for line in lines: +if line.startswith('PATH='): +found = True +self.assertTrue(path_env_variable == line, "PATH environment variable not the same") this becomes more readable if you make it a function. That way you avoid having the mutable found variable and you can stop the for loop as soon as you return Comment at: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/main.cpp:10 +char** env_var_pointer = environ; +// std::vector vscode_env_variables; +int count = 0; remove this comment Comment at: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py:315 self.assertTrue(os.path.exists(program), 'executable must exist') - self.launch(program, args, cwd, env, stopOnEntry, disableASLR, try not to delete existing blank lines Comment at: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py:905 stopCommands=options.stopCmds, - exitCommands=options.exitCmds) + exitCommands=options.exitCmds + inheritEnvironment=options.inheritEnvironment I think you need a comma here Comment at: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py:906-907 + exitCommands=options.exitCmds + inheritEnvironment=options.inheritEnvironment + ) put the ) in line 906 Comment at: lldb/tools/lldb-vscode/lldb-vscode.cpp:1408-1410 + if (!envs.empty()) { g_vsc.launch_info.SetEnvironmentEntries(MakeArgv(envs).data(), true); + } in llvm, you don't need to use { } for one line ifs Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74579/new/ https://reviews.llvm.org/D74579 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D74579: [don't review]Creating environment variable test for lldbd
diazhector98 updated this revision to Diff 244701. diazhector98 added a comment. Working on comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74579/new/ https://reviews.llvm.org/D74579 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/completions/TestVSCode_completions.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/completions/main.cpp lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/Makefile lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/main.cpp 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 lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the VSCode Environment Variables", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/tools/lldb-vscode/lldb-vscode.cpp === --- lldb/tools/lldb-vscode/lldb-vscode.cpp +++ lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -49,6 +49,8 @@ #include "LLDBUtils.h" #include "VSCode.h" +extern char **environ; + #if defined(_WIN32) #ifndef PATH_MAX #define PATH_MAX MAX_PATH @@ -951,9 +953,17 @@ for (size_t i = 0; i < count; i++) { std::string match = matches.GetStringAtIndex(i); std::string description = descriptions.GetStringAtIndex(i); - + llvm::json::Object item; -EmplaceSafeString(item, "text", match); + +llvm::StringRef match_ref = match; +for(llvm::StringRef commit_point: {".", "->"}) { + if (match_ref.contains(commit_point)){ +match_ref = match_ref.rsplit(commit_point).second; + } +} +EmplaceSafeString(item, "text", match_ref); + if (description.empty()) EmplaceSafeString(item, "label", match); else @@ -1332,6 +1342,7 @@ auto launchCommands = GetStrings(arguments, "launchCommands"); g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false); const auto debuggerRoot = GetString(arguments, "debuggerRoot"); + bool launchWithDebuggerEnvironment = GetBoolean(arguments, "inheritEnvironment", false); // This is a hack for loading DWARF in .o files on Mac where the .o files // in the debug map of the main executable have relative paths which require @@ -1379,13 +1390,24 @@ // Extract any extra arguments and append them to our program arguments for // when we launch auto args = GetStrings(arguments, "args"); - if (!args.empty()) + if (!args.empty()) g_vsc.launch_info.SetArguments(MakeArgv(args).data(), true); // Pass any environment variables along that the user specified. auto envs = GetStrings(arguments, "env"); - if (!envs.empty()) + + if (launchWithDebuggerEnvironment) { +char** env_var_pointer = environ; +std::vector vscode_env_variables; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer){ + vscode_env_variables.push_back(env_variable); +} +envs.insert(std::end(envs), std::begin(vscode_env_variables), std::end(vscode_env_variables)); + } + + if (!envs.empty()) { g_vsc.launch_info.SetEnvironmentEntries(MakeArgv(envs).data(), true); + } auto flags = g_vsc.launch_info.GetLaunchFlags(); Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py === --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py @@ -562,7 +562,7 @@ disableSTDIO=False, shellExpandArguments=False, trace=False, initCommands=None, preRunCommands=None, stopCommands=None, exitCommands=None, sourcePath=None, - debuggerRoot=None, launchCommands=None): + debuggerRoot=None, launchCommands=None, inheritEnvironment=False): args_dict = { 'program': program } @@ -597,6 +597,8 @@ args_dict['debuggerRoot'] = debuggerRoot if launchCommands: args_dict['launchCommands'] = launchCommands +if inheritEnvironment: +args_dict['inheritEnvironment'] = inheritEnvironment command_dict = { 'command': 'launch',
[Lldb-commits] [PATCH] D74579: [don't review]Creating environment variable test for lldbd
wallace requested changes to this revision. wallace added inline comments. This revision now requires changes to proceed. Comment at: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/completions/TestVSCode_completions.py:26 @skipIfWindows -@skipIfDarwin # Skip this test for now until we can figure out why tings aren't working on build bots +#@skipIfDarwin # Skip this test for now until we can figure out why tings aren't working on build bots def test_completions(self): don't forget to remove the # Comment at: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py:19-24 +def verify_completions(self, actual_list, expected_list, not_expected_list=[]): +for expected_item in expected_list: +self.assertTrue(expected_item in actual_list) + +for not_expected_item in not_expected_list: +self.assertFalse(not_expected_item in actual_list) remove this Comment at: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py:38-43 +found = False +for line in lines: +if line.startswith('PATH='): +found = True +self.assertTrue(path_env_variable == line, "PATH environment variable not the same") +self.assertTrue(found, 'PATH environment variable not found') you can write different tests: - inheritEnvironment = false -> no PATH - inheritEnvironment = true -- send an additional env in the config -> it should override the inherited -- PATH should be correct Comment at: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py:906 stopCommands=options.stopCmds, exitCommands=options.exitCmds) inheritEnv should be passed here Comment at: lldb/tools/lldb-vscode/lldb-vscode.cpp:1400-1412 auto envs = GetStrings(arguments, "env"); - if (!envs.empty()) + + // if arguments has launchWithDebuggerEnvironment + // then append current environment to g_vsc.launch_info + if (launchWithDebuggerEnvironment) { + // if (true) { +char** env_var_pointer = environ; the env sent by the user in the launch.json config should have more priority than the inherited environment. For example, if env = ["X=A"] and the inherited env is ["X=Z", "Y=V"], then the resulting environment should be ["X=A", "Y=V"]. You should also write a test for that Comment at: lldb/tools/lldb-vscode/lldb-vscode.cpp:1405 + if (launchWithDebuggerEnvironment) { + // if (true) { +char** env_var_pointer = environ; remove this Comment at: lldb/tools/lldb-vscode/lldb-vscode.cpp:2250-2251 void request_stepIn(const llvm::json::Object &request) { + + return; llvm::json::Object response; lol Comment at: lldb/tools/lldb-vscode/package.json:89 + "type": "boolean", + "description": "Inherit the VSCode Environment Variables", + "default": false Inherit the debugger environment when launching a process. Only works for binaries launched directly by LLDB. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74579/new/ https://reviews.llvm.org/D74579 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D74579: [don't review]Creating environment variable test for lldbd
diazhector98 updated this revision to Diff 244547. diazhector98 added a comment. Squashing Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74579/new/ https://reviews.llvm.org/D74579 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/completions/TestVSCode_completions.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/Makefile lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/environmentVariables/main.cpp 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 lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the VSCode Environment Variables", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/tools/lldb-vscode/lldb-vscode.cpp === --- lldb/tools/lldb-vscode/lldb-vscode.cpp +++ lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -49,6 +49,11 @@ #include "LLDBUtils.h" #include "VSCode.h" +#include // std::this_thread::sleep_for +#include // std::chrono::seconds + +extern char **environ; + #if defined(_WIN32) #ifndef PATH_MAX #define PATH_MAX MAX_PATH @@ -1340,6 +1345,7 @@ auto launchCommands = GetStrings(arguments, "launchCommands"); g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false); const auto debuggerRoot = GetString(arguments, "debuggerRoot"); + bool launchWithDebuggerEnvironment = GetBoolean(arguments, "inheritEnvironment", false); // This is a hack for loading DWARF in .o files on Mac where the .o files // in the debug map of the main executable have relative paths which require @@ -1387,13 +1393,26 @@ // Extract any extra arguments and append them to our program arguments for // when we launch auto args = GetStrings(arguments, "args"); - if (!args.empty()) + if (!args.empty()) g_vsc.launch_info.SetArguments(MakeArgv(args).data(), true); // Pass any environment variables along that the user specified. auto envs = GetStrings(arguments, "env"); - if (!envs.empty()) + + // if arguments has launchWithDebuggerEnvironment + // then append current environment to g_vsc.launch_info + if (launchWithDebuggerEnvironment) { + // if (true) { +char** env_var_pointer = environ; +std::vector vscode_env_variables; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer){ + vscode_env_variables.push_back(env_variable); +} +envs.insert(std::end(envs), std::begin(vscode_env_variables), std::end(vscode_env_variables)); + } + if (!envs.empty()) { g_vsc.launch_info.SetEnvironmentEntries(MakeArgv(envs).data(), true); + } auto flags = g_vsc.launch_info.GetLaunchFlags(); @@ -2228,6 +2247,8 @@ // }] // } void request_stepIn(const llvm::json::Object &request) { + + return; llvm::json::Object response; FillResponse(request, response); auto arguments = request.getObject("arguments"); Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py === --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py @@ -562,7 +562,7 @@ disableSTDIO=False, shellExpandArguments=False, trace=False, initCommands=None, preRunCommands=None, stopCommands=None, exitCommands=None, sourcePath=None, - debuggerRoot=None, launchCommands=None): + debuggerRoot=None, launchCommands=None, inheritEnvironment=False): args_dict = { 'program': program } @@ -597,6 +597,8 @@ args_dict['debuggerRoot'] = debuggerRoot if launchCommands: args_dict['launchCommands'] = launchCommands +if inheritEnvironment: +args_dict['inheritEnvironment'] = inheritEnvironment command_dict = { 'command': 'launch', 'type': 'request', @@ -891,6 +893,7 @@ stopCommands=options.stopCmds, exitCommands=options.exitCmds) else: +print('Options.Envs: ', options.envs)