[Lldb-commits] [PATCH] Add option to set environment variables from dotest.py

Tamas Berghammer tberghammer at google.com
Wed Feb 25 04:04:58 PST 2015


Unquote value passed to the environment variable


http://reviews.llvm.org/D7854

Files:
  test/dotest.py

Index: test/dotest.py
===================================================================
--- test/dotest.py
+++ test/dotest.py
@@ -21,16 +21,17 @@
 """
 
 import commands
-import os
 import errno
+import inspect
+import os
 import platform
 import progress
+import shlex
 import signal
 import subprocess
 import sys
 import textwrap
 import time
-import inspect
 import unittest2
 
 if sys.version_info >= (2, 7):
@@ -551,6 +552,7 @@
     X('-S', "Skip the build and cleanup while running the test. Use this option with care as you would need to build the inferior(s) by hand and build the executable(s) with the correct name(s). This can be used with '-# n' to stress test certain test cases for n number of times")
     X('-t', 'Turn on tracing of lldb command and other detailed test executions')
     group.add_argument('-u', dest='unset_env_varnames', metavar='variable', action='append', help='Specify an environment variable to unset before running the test cases. e.g., -u DYLD_INSERT_LIBRARIES -u MallocScribble')
+    group.add_argument('--env', dest='set_env_vars', metavar='variable', action='append', help='Specify an environment variable to set to the given value before running the test cases e.g.: --env CXXFLAGS=-O3 --env DYLD_INSERT_LIBRARIES')
     X('-v', 'Do verbose mode of unittest framework (print out each test case invocation)')
     X('-w', 'Insert some wait time (currently 0.5 sec) between consecutive test cases')
     X('-T', 'Obtain and dump svn information for this checkout of LLDB (off by default)')
@@ -574,7 +576,22 @@
                 # is automatically translated into a corresponding call to unsetenv().
                 del os.environ[env_var]
                 #os.unsetenv(env_var)
-    
+
+    if args.set_env_vars:
+        for env_var in args.set_env_vars:
+            parts = env_var.split('=', 1)
+            if len(parts) == 1:
+                os.environ[parts[0]] = ""
+            else:
+                value = shlex.split(parts[1])
+                if len(value) == 0:
+                    os.environ[parts[0]] = ""
+                elif len(value) == 1:
+                    os.environ[parts[0]] = value[0]
+                else:
+                    print "Failed to interpret value given for environment variable %s (%s)" % (parts[0], parts[1])
+                    do_help = True
+
     # only print the args if being verbose (and parsable is off)
     if args.v and not args.q:
         print sys.argv

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7854.20665.patch
Type: text/x-patch
Size: 2464 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20150225/0349b68f/attachment.bin>


More information about the lldb-commits mailing list