This revision was automatically updated to reflect the committed changes.
Closed by commit rG3f2fb0132f7b: [lldb] Make the lit configuration values 
optional for the API tests (authored by JDevlieghere).
Herald added a project: LLDB.

Changed prior to commit:
  https://reviews.llvm.org/D86821?vs=288713&id=288741#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D86821/new/

https://reviews.llvm.org/D86821

Files:
  lldb/test/API/lit.cfg.py
  lldb/test/API/lldbtest.py

Index: lldb/test/API/lldbtest.py
===================================================================
--- lldb/test/API/lldbtest.py
+++ lldb/test/API/lldbtest.py
@@ -38,7 +38,7 @@
         if litConfig.noExecute:
             return lit.Test.PASS, ''
 
-        if not test.config.lldb_enable_python:
+        if not getattr(test.config, 'lldb_enable_python', False):
             return (lit.Test.UNSUPPORTED, 'Python module disabled')
 
         if test.config.unsupported:
Index: lldb/test/API/lit.cfg.py
===================================================================
--- lldb/test/API/lit.cfg.py
+++ lldb/test/API/lit.cfg.py
@@ -23,14 +23,14 @@
 
 
 def mkdir_p(path):
-    import errno
-    try:
-        os.makedirs(path)
-    except OSError as e:
-        if e.errno != errno.EEXIST:
-            raise
-    if not os.path.isdir(path):
-        raise OSError(errno.ENOTDIR, "%s is not a directory"%path)
+  import errno
+  try:
+    os.makedirs(path)
+  except OSError as e:
+    if e.errno != errno.EEXIST:
+      raise
+  if not os.path.isdir(path):
+    raise OSError(errno.ENOTDIR, "%s is not a directory"%path)
 
 
 def find_sanitizer_runtime(name):
@@ -85,22 +85,39 @@
   return copied_python
 
 
-if 'Address' in config.llvm_use_sanitizer:
-  config.environment['ASAN_OPTIONS'] = 'detect_stack_use_after_return=1'
-  if 'Darwin' in config.host_os and 'x86' in config.host_triple:
-    config.environment['DYLD_INSERT_LIBRARIES'] = find_sanitizer_runtime(
-        'libclang_rt.asan_osx_dynamic.dylib')
+def is_configured(attr):
+  """Return the configuration attribute if it exists and None otherwise.
+
+  This allows us to check if the attribute exists before trying to access it."""
+  return getattr(config, attr, None)
+
+
+def delete_module_cache(path):
+  """Clean the module caches in the test build directory.
+
+  This is necessary in an incremental build whenever clang changes underneath,
+  so doing it once per lit.py invocation is close enough. """
+  if os.path.isdir(path):
+    print("Deleting module cache at %s." % path)
+    shutil.rmtree(path)
 
-if 'Thread' in config.llvm_use_sanitizer:
-  if 'Darwin' in config.host_os and 'x86' in config.host_triple:
-    config.environment['DYLD_INSERT_LIBRARIES'] = find_sanitizer_runtime(
-        'libclang_rt.tsan_osx_dynamic.dylib')
+if is_configured('llvm_use_sanitizer'):
+  if 'Address' in config.llvm_use_sanitizer:
+    config.environment['ASAN_OPTIONS'] = 'detect_stack_use_after_return=1'
+    if 'Darwin' in config.host_os and 'x86' in config.host_triple:
+      config.environment['DYLD_INSERT_LIBRARIES'] = find_sanitizer_runtime(
+          'libclang_rt.asan_osx_dynamic.dylib')
+
+  if 'Thread' in config.llvm_use_sanitizer:
+    if 'Darwin' in config.host_os and 'x86' in config.host_triple:
+      config.environment['DYLD_INSERT_LIBRARIES'] = find_sanitizer_runtime(
+          'libclang_rt.tsan_osx_dynamic.dylib')
 
 if 'DYLD_INSERT_LIBRARIES' in config.environment and platform.system() == 'Darwin':
   config.python_executable = find_python_interpreter()
 
 # Shared library build of LLVM may require LD_LIBRARY_PATH or equivalent.
-if config.shared_libs:
+if is_configured('shared_libs'):
   for shlibpath_var in find_shlibpath_var():
     # In stand-alone build llvm_shlib_dir specifies LLDB's lib directory while
     # llvm_libs_dir specifies LLVM's lib directory.
@@ -129,14 +146,6 @@
   elif lldb_repro_mode == 'replay':
     config.available_features.add('lldb-repro-replay')
 
-# Clean the module caches in the test build directory. This is necessary in an
-# incremental build whenever clang changes underneath, so doing it once per
-# lit.py invocation is close enough.
-for cachedir in [config.clang_module_cache, config.lldb_module_cache]:
-  if os.path.isdir(cachedir):
-    print("Deleting module cache at %s." % cachedir)
-    shutil.rmtree(cachedir)
-
 # Set a default per-test timeout of 10 minutes. Setting a timeout per test
 # requires that killProcessAndChildren() is supported on the platform and
 # lit complains if the value is set but it is not supported.
@@ -148,11 +157,12 @@
 
 # Build dotest command.
 dotest_cmd = [os.path.join(config.lldb_src_root, 'test', 'API', 'dotest.py')]
-dotest_cmd += ['--arch', config.test_arch]
-dotest_cmd.extend(config.dotest_args_str.split(';'))
+
+if is_configured('dotest_args_str'):
+  dotest_cmd.extend(config.dotest_args_str.split(';'))
 
 # Library path may be needed to locate just-built clang.
-if config.llvm_libs_dir:
+if is_configured('llvm_libs_dir'):
   dotest_cmd += ['--env', 'LLVM_LIBS_DIR=' + config.llvm_libs_dir]
 
 # Forward ASan-specific environment variables to tests, as a test may load an
@@ -161,49 +171,53 @@
   if env_var in config.environment:
     dotest_cmd += ['--inferior-env', env_var + '=' + config.environment[env_var]]
 
-if config.lldb_build_directory:
+if is_configured('test_arch'):
+  dotest_cmd += ['--arch', config.test_arch]
+
+if is_configured('lldb_build_directory'):
   dotest_cmd += ['--build-dir', config.lldb_build_directory]
 
-if config.lldb_module_cache:
+if is_configured('lldb_module_cache'):
+  delete_module_cache(config.lldb_module_cache)
   dotest_cmd += ['--lldb-module-cache-dir', config.lldb_module_cache]
 
-if config.clang_module_cache:
+if is_configured('clang_module_cache'):
+  delete_module_cache(config.clang_module_cache)
   dotest_cmd += ['--clang-module-cache-dir', config.clang_module_cache]
 
-if config.lldb_executable:
+if is_configured('lldb_executable'):
   dotest_cmd += ['--executable', config.lldb_executable]
 
-if config.test_compiler:
+if is_configured('test_compiler'):
   dotest_cmd += ['--compiler', config.test_compiler]
 
-if config.dsymutil:
+if is_configured('dsymutil'):
   dotest_cmd += ['--dsymutil', config.dsymutil]
 
-if config.filecheck:
+if is_configured('filecheck'):
   dotest_cmd += ['--filecheck', config.filecheck]
 
-if config.yaml2obj:
+if is_configured('yaml2obj'):
   dotest_cmd += ['--yaml2obj', config.yaml2obj]
 
-if config.lldb_libs_dir:
+if is_configured('lldb_libs_dir'):
   dotest_cmd += ['--lldb-libs-dir', config.lldb_libs_dir]
 
 if 'lldb-repro-capture' in config.available_features or \
     'lldb-repro-replay' in config.available_features:
   dotest_cmd += ['--skip-category=lldb-vscode', '--skip-category=std-module']
 
-if config.enabled_plugins:
+if is_configured('enabled_plugins'):
   for plugin in config.enabled_plugins:
     dotest_cmd += ['--enable-plugin', plugin]
 
-# We don't want to force users passing arguments to lit to use `;` as a
-# separator. We use Python's simple lexical analyzer to turn the args into a
-# list. Pass there arguments last so they can override anything that was
-# already configured.
-if config.dotest_lit_args_str:
+if is_configured('dotest_lit_args_str'):
+  # We don't want to force users passing arguments to lit to use `;` as a
+  # separator. We use Python's simple lexical analyzer to turn the args into a
+  # list. Pass there arguments last so they can override anything that was
+  # already configured.
   dotest_cmd.extend(shlex.split(config.dotest_lit_args_str))
 
-
 # Load LLDB test format.
 sys.path.append(os.path.join(config.lldb_src_root, "test", "API"))
 import lldbtest
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to