[Lldb-commits] [PATCH] D74579: [don't review]Creating environment variable test for lldbd

2020-02-14 Thread Héctor Luis Díaz Aceves via Phabricator via lldb-commits
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

2020-02-14 Thread Héctor Luis Díaz Aceves via Phabricator via lldb-commits
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-commits] [PATCH] D74579: [don't review]Creating environment variable test for lldbd

2020-02-14 Thread Héctor Luis Díaz Aceves via Phabricator via lldb-commits
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

2020-02-14 Thread Héctor Luis Díaz Aceves via Phabricator via lldb-commits
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 ) {
+
+  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

2020-02-14 Thread walter erquinigo via Phabricator via lldb-commits
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

2020-02-14 Thread Héctor Luis Díaz Aceves via Phabricator via lldb-commits
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

2020-02-13 Thread walter erquinigo via Phabricator via lldb-commits
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 ) {
+
+  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

2020-02-13 Thread Héctor Luis Díaz Aceves via Phabricator via lldb-commits
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 ) {
+
+  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)