lit: Provide file location in cfg error messages

Python doesn't do a good job at diagnosing string exec() so use execfile()
where available.

This should be a timesaver when trying to get to the bottom of build bot
failures.

Before:

    File "llvm/utils/lit/lit/TestingConfig.py", line 93, in load_from_path
      exec("exec data in cfg_globals")
    File "<string>", line 1, in <module>
    File "<string>", line 194, in <module>
  NameError: name 'typo' is not defined

After:

    File "llvm/utils/lit/lit/TestingConfig.py", line 95, in load_from_path
    execfile(path, cfg_globals)
    File "clang/test/lit.cfg", line 194, in <module>
      typo
      ^~~~
  NameError: name 'typo' is not defined

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198766 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alp Toker 2014-01-08 14:20:59 +00:00
parent 38b362617c
commit 598887906b

View File

@ -1,7 +1,7 @@
import os
import sys
PY2 = sys.version_info[0] < 3
OldPy = sys.version_info[0] == 2 and sys.version_info[1] < 6
class TestingConfig:
""""
@ -74,12 +74,14 @@ class TestingConfig:
"""
# Load the config script data.
f = open(path)
try:
data = f.read()
except:
litConfig.fatal('unable to load config file: %r' % (path,))
f.close()
data = None
if OldPy:
f = open(path)
try:
data = f.read()
except:
litConfig.fatal('unable to load config file: %r' % (path,))
f.close()
# Execute the config script to initialize the object.
cfg_globals = dict(globals())
@ -87,10 +89,10 @@ class TestingConfig:
cfg_globals['lit_config'] = litConfig
cfg_globals['__file__'] = path
try:
if PY2:
if OldPy:
exec("exec data in cfg_globals")
else:
exec(data, cfg_globals)
execfile(path, cfg_globals)
if litConfig.debug:
litConfig.note('... loaded config %r' % path)
except SystemExit: