diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2009-08-01 23:18:27 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2009-08-01 23:18:27 +0000 |
| commit | 6cfaa47c852359a304fbcf546d9a6626ae0e55fb (patch) | |
| tree | bd3bfafbbab55647384cba614cbe26e9d57c4f52 /clang/utils | |
| parent | 62561fe9b03b05108754cfd4a292e3acc029a8c1 (diff) | |
| download | bcm5719-llvm-6cfaa47c852359a304fbcf546d9a6626ae0e55fb.tar.gz bcm5719-llvm-6cfaa47c852359a304fbcf546d9a6626ae0e55fb.zip | |
lit: Catch (internal) exceptions when using --no-sh.
llvm-svn: 77830
Diffstat (limited to 'clang/utils')
| -rwxr-xr-x | clang/utils/test/TestRunner.py | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/clang/utils/test/TestRunner.py b/clang/utils/test/TestRunner.py index e605ef60138..42799093d19 100755 --- a/clang/utils/test/TestRunner.py +++ b/clang/utils/test/TestRunner.py @@ -26,20 +26,13 @@ def executeShCmd(cmd, cfg, cwd, results): if isinstance(cmd, ShUtil.Seq): if cmd.op == ';': res = executeShCmd(cmd.lhs, cfg, cwd, results) - if res is None: - return res - return executeShCmd(cmd.rhs, cfg, cwd, results) if cmd.op == '&': - Util.warning("unsupported test command: '&'") - return None + raise NotImplementedError,"unsupported test command: '&'" if cmd.op == '||': res = executeShCmd(cmd.lhs, cfg, cwd, results) - if res is None: - return res - if res != 0: res = executeShCmd(cmd.rhs, cfg, cwd, results) return res @@ -72,7 +65,7 @@ def executeShCmd(cmd, cfg, cwd, results): elif r[0] == ('<',): stdin = open(r[1], 'r') else: - return None + raise NotImplementedError,"Unsupported redirect: %r" % r procs.append(subprocess.Popen(j.args, cwd=cwd, stdin = stdin, @@ -120,9 +113,14 @@ def executeScriptInternal(cfg, commands, cwd): cmd = ShUtil.ShParser(' &&\n'.join(commands)).parse() results = [] - exitCode = executeShCmd(cmd, cfg, cwd, results) - if exitCode is None: - return None + try: + exitCode = executeShCmd(cmd, cfg, cwd, results) + except: + import traceback + + out = '' + err = 'Exception during script execution:\n%s\n' % traceback.format_exc() + return out, err, 127 out = err = '' for i,(cmd, cmd_out,cmd_err,res) in enumerate(results): |

