Change the logic which interprets output on stderr as an error so that
authorDan Gohman <gohman@apple.com>
Wed, 4 Aug 2010 00:12:31 +0000 (00:12 +0000)
committerDan Gohman <gohman@apple.com>
Wed, 4 Aug 2010 00:12:31 +0000 (00:12 +0000)
it doesn't modify the exit code or the stdout contents, and so that it
doesn't clutter the output with "Command has output on stderr!".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110171 91177308-0d34-0410-b5e6-96231b3b80d8

utils/lit/lit/TestRunner.py

index e0c2962d22ae03c3a7422448e8a227f506d4377e..aae16f6f6aad0268a0643190d50e70bd18fd41c3 100644 (file)
@@ -312,11 +312,6 @@ def executeTclScriptInternal(test, litConfig, tmpBase, commands, cwd):
         out,err,exitCode = executeCommand(command, cwd=cwd,
                                           env=test.config.environment)
 
-        # Tcl commands fail on standard error output.
-        if err:
-            exitCode = 1
-            out = 'Command has output on stderr!\n\n' + out
-
         return out,err,exitCode
     else:
         results = []
@@ -328,11 +323,6 @@ def executeTclScriptInternal(test, litConfig, tmpBase, commands, cwd):
 
     out = err = ''
 
-    # Tcl commands fail on standard error output.
-    if [True for _,_,err,res in results if err]:
-        exitCode = 1
-        out += 'Command has output on stderr!\n\n'
-
     for i,(cmd, cmd_out, cmd_err, res) in enumerate(results):
         out += 'Command %d: %s\n' % (i, ' '.join('"%s"' % s for s in cmd.args))
         out += 'Command %d Result: %r\n' % (i, res)
@@ -521,12 +511,14 @@ def executeTclTest(test, litConfig):
     if len(res) == 2:
         return res
 
+    # Test for failure. In addition to the exit code, Tcl commands fail
+    # if there is any standard error output.
     out,err,exitCode = res
     if isXFail:
-        ok = exitCode != 0
+        ok = exitCode != 0 or err
         status = Test.XFAIL if ok else Test.XPASS
     else:
-        ok = exitCode == 0
+        ok = exitCode == 0 and not err
         status = Test.PASS if ok else Test.FAIL
 
     if ok: