0
0
mirror of https://github.com/llvm/llvm-project.git synced 2025-04-18 09:36:39 +00:00
Connie Zhu 18e55052d6
[mlir][polly][llvm-lit] Fixed logic for turning on external shell in lit ()
For both mlir and polly, the lit internal shell is the default shell for
running lit tests. However, if the user wanted to switch back to the
external shell by setting `LIT_USE_INTERNAL_SHELL=0`, the `not` used in
the body of the `if` conditional changes `use_lit_shell` to be True
instead of the intended False. Removing `not` allows for this lit config
to work as intended.

Fixes https://github.com/llvm/llvm-project/issues/106459.
2024-08-30 09:21:13 -07:00

84 lines
2.8 KiB
INI

# -*clang- Python -*-
import os
import platform
import re
import subprocess
import lit.formats
import lit.util
from lit.llvm import llvm_config
# Configuration file for the 'lit' test runner.
# name: The name of this test suite.
config.name = 'Polly'
# testFormat: The test format to use to interpret tests.
#
# For now we require '&&' between commands, until they get globally killed and
# the test runner updated.
#
# TODO: Consolidate the logic for turning on the internal shell by default for all LLVM test suites.
# See https://github.com/llvm/llvm-project/issues/106636 for more details.
#
# We prefer the lit internal shell which provides a better user experience on failures
# unless the user explicitly disables it with LIT_USE_INTERNAL_SHELL=0 env var.
use_lit_shell = True
lit_shell_env = os.environ.get("LIT_USE_INTERNAL_SHELL")
if lit_shell_env:
use_lit_shell = lit.util.pythonize_bool(lit_shell_env)
config.test_format = lit.formats.ShTest(execute_external=not use_lit_shell)
# suffixes: A list of file extensions to treat as test files.
config.suffixes = ['.ll']
# test_source_root: The root path where tests are located.
config.test_source_root = os.path.dirname(__file__)
# test_exec_root: The root path where tests should be run.
config.test_exec_root = os.path.join(config.polly_obj_root, 'test')
# Tweak the PATH to include the tools dir and the scripts dir.
base_paths = [config.llvm_tools_dir, config.environment['PATH']]
path = os.path.pathsep.join(base_paths + config.extra_paths)
config.environment['PATH'] = path
path = os.path.pathsep.join((config.llvm_libs_dir,
config.environment.get('LD_LIBRARY_PATH','')))
config.environment['LD_LIBRARY_PATH'] = path
llvm_config.use_default_substitutions()
tool_patterns = ['opt', 'polly-isl-test']
llvm_config.add_tool_substitutions(tool_patterns)
# opt knows whether it is compiled with -DNDEBUG.
import subprocess
try:
opt_cmd = subprocess.Popen([os.path.join(config.llvm_tools_dir, 'opt'), '-version'],
stdout = subprocess.PIPE,
env=config.environment)
except OSError:
print("Could not find opt in " + config.llvm_tools_dir)
exit(42)
if re.search(r'with assertions', opt_cmd.stdout.read().decode('ascii')):
config.available_features.add('asserts')
opt_cmd.wait()
try:
llvm_config_cmd = subprocess.Popen([os.path.join(
config.llvm_tools_dir,
'llvm-config'),
'--targets-built'],
stdout = subprocess.PIPE,
env=config.environment)
except OSError:
print("Could not find llvm-config in " + config.llvm_tools_dir)
exit(42)
llvm_config_cmd.wait()