mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02:00
8e4d247b07
Presently lit leaks files in the tests' output directories. Specifically, if a test creates output files, lit makes no effort to remove them prior to the next test run. This is problematic because it leads to false positives whenever a test passes because stale files were present. In general it is a source of flakiness that should be removed. This patch addresses this by building the list of all test directories that are part of the current run set, and then deleting those directories and recreating them anew. This gives each test a clean baseline to start from. Differential Revision: https://reviews.llvm.org/D34732 llvm-svn: 306832
97 lines
3.8 KiB
Python
97 lines
3.8 KiB
Python
# -*- Python -*-
|
|
|
|
# Configuration file for the 'lit' test runner.
|
|
|
|
import os
|
|
|
|
import lit.formats
|
|
|
|
# name: The name of this test suite.
|
|
config.name = 'LLVM-Unit'
|
|
|
|
# suffixes: A list of file extensions to treat as test files.
|
|
config.suffixes = []
|
|
|
|
# is_early; Request to run this suite early.
|
|
config.is_early = True
|
|
|
|
# test_source_root: The root path where tests are located.
|
|
# test_exec_root: The root path where tests should be run.
|
|
llvm_obj_root = getattr(config, 'llvm_obj_root', None)
|
|
if llvm_obj_root is not None:
|
|
config.test_exec_root = os.path.join(llvm_obj_root, 'unittests')
|
|
config.test_source_root = config.test_exec_root
|
|
|
|
# testFormat: The test format to use to interpret tests.
|
|
llvm_build_mode = getattr(config, 'llvm_build_mode', "Debug")
|
|
config.test_format = lit.formats.GoogleTest(llvm_build_mode, 'Tests')
|
|
|
|
# Propagate the temp directory. Windows requires this because it uses \Windows\
|
|
# if none of these are present.
|
|
if 'TMP' in os.environ:
|
|
config.environment['TMP'] = os.environ['TMP']
|
|
if 'TEMP' in os.environ:
|
|
config.environment['TEMP'] = os.environ['TEMP']
|
|
|
|
# Propagate path to symbolizer for ASan/MSan.
|
|
for symbolizer in ['ASAN_SYMBOLIZER_PATH', 'MSAN_SYMBOLIZER_PATH']:
|
|
if symbolizer in os.environ:
|
|
config.environment[symbolizer] = os.environ[symbolizer]
|
|
|
|
# Win32 seeks DLLs along %PATH%.
|
|
if sys.platform in ['win32', 'cygwin']:
|
|
shlibdir = getattr(config, 'shlibdir', None)
|
|
if shlibdir is not None and os.path.isdir(shlibdir):
|
|
config.environment['PATH'] = os.path.pathsep.join((
|
|
config.shlibdir, config.environment['PATH']))
|
|
|
|
# Win32 may use %SYSTEMDRIVE% during file system shell operations, so propogate.
|
|
if sys.platform == 'win32' and 'SYSTEMDRIVE' in os.environ:
|
|
config.environment['SYSTEMDRIVE'] = os.environ['SYSTEMDRIVE']
|
|
|
|
###
|
|
|
|
# Check that the object root is known.
|
|
if config.test_exec_root is None:
|
|
# Otherwise, we haven't loaded the site specific configuration (the user is
|
|
# probably trying to run on a test file directly, and either the site
|
|
# configuration hasn't been created by the build system, or we are in an
|
|
# out-of-tree build situation).
|
|
|
|
# Check for 'llvm_unit_site_config' user parameter, and use that if available.
|
|
site_cfg = lit_config.params.get('llvm_unit_site_config', None)
|
|
if site_cfg and os.path.exists(site_cfg):
|
|
lit_config.load_config(config, site_cfg)
|
|
raise SystemExit
|
|
|
|
# Try to detect the situation where we are using an out-of-tree build by
|
|
# looking for 'llvm-config'.
|
|
#
|
|
# FIXME: I debated (i.e., wrote and threw away) adding logic to
|
|
# automagically generate the lit.site.cfg if we are in some kind of fresh
|
|
# build situation. This means knowing how to invoke the build system
|
|
# though, and I decided it was too much magic.
|
|
|
|
llvm_config = lit.util.which('llvm-config', config.environment['PATH'])
|
|
if not llvm_config:
|
|
lit_config.fatal('No site specific configuration available!')
|
|
|
|
# Get the source and object roots.
|
|
llvm_src_root = lit.util.capture(['llvm-config', '--src-root']).strip()
|
|
llvm_obj_root = lit.util.capture(['llvm-config', '--obj-root']).strip()
|
|
|
|
# Validate that we got a tree which points to here.
|
|
this_src_root = os.path.join(os.path.dirname(__file__),'..','..')
|
|
if os.path.realpath(llvm_src_root) != os.path.realpath(this_src_root):
|
|
lit_config.fatal('No site specific configuration available!')
|
|
|
|
# Check that the site specific configuration exists.
|
|
site_cfg = os.path.join(llvm_obj_root, 'test', 'Unit', 'lit.site.cfg')
|
|
if not os.path.exists(site_cfg):
|
|
lit_config.fatal('No site specific configuration available!')
|
|
|
|
# Okay, that worked. Notify the user of the automagic, and reconfigure.
|
|
lit_config.note('using out-of-tree build at %r' % llvm_obj_root)
|
|
lit_config.load_config(config, site_cfg)
|
|
raise SystemExit
|