]> granicus.if.org Git - llvm/commit
[lit] Take the last error when executing pipelines.
authorZachary Turner <zturner@google.com>
Fri, 19 May 2017 18:12:07 +0000 (18:12 +0000)
committerZachary Turner <zturner@google.com>
Fri, 19 May 2017 18:12:07 +0000 (18:12 +0000)
commit435c118e779f664ed5b5536980b6e01ac64da5bc
treea5feff2ff26b6124d42601b249019213dd6d0f5b
parent54d0694b5b02c2f808b02d5a3bc49dbbaa54f363
[lit] Take the last error when executing pipelines.

This seems to have been present since the beginning of time,
which is quite surprising.  The symptom was this: Suppose you
have a test with a run line that looks like this:

  RUN: foo | FileCheck %s

foo prints some output and then due to a bug in the program it
asserts.  On Windows this results in the program returning a
negative exit code.  But if enough output had been printed
already by the tool so that the FileCheck match would succeed
then FileCheck would return 0, and because of bad logic in
lit this 0 return value would overwrite the failed return
value from previous items in the pipeline.  This only happened
with negative exit codes.

The most sensible behavior is to just take whatever the first
exit code is.  There is no logical ordering defined on exit
codes, so comparing with < and > does not make a lot of sense.
Instead, as soon as we find the first non-successful return
value, that should be the result of the entire expression.

This fixes the issue, as now tests which fail on non-Windows
platforms also fail for me on Windows as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303440 91177308-0d34-0410-b5e6-96231b3b80d8
utils/lit/lit/TestRunner.py