[llvm] r253556 - [lit] Fix bug when using Python3 where a failing test would not show

Dan Liew via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 19 03:35:44 PST 2015


Author: delcypher
Date: Thu Nov 19 05:35:42 2015
New Revision: 253556

URL: http://llvm.org/viewvc/llvm-project?rev=253556&view=rev
Log:
[lit] Fix bug when using Python3 where a failing test would not show
the script when running a ShTest with an external or internal shell.

This bug is caused by use of the ``map`` function in Python 3 which
returns an iterable (rather than a list in Python 2). After the iterable
is exhausted it won't return any more output and consequently when
``_runShTest()`` tries to access the ``script`` which has already been
iterated over it is empty. Converting to a list immediatley after
calling ``map()`` fixes this.

This fixes the ``tests/shtest-format.py`` test when running under
Python3 which was previously failing.

Modified:
    llvm/trunk/utils/lit/lit/TestRunner.py

Modified: llvm/trunk/utils/lit/lit/TestRunner.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/TestRunner.py?rev=253556&r1=253555&r2=253556&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/TestRunner.py (original)
+++ llvm/trunk/utils/lit/lit/TestRunner.py Thu Nov 19 05:35:42 2015
@@ -469,7 +469,9 @@ def applySubstitutions(script, substitut
 
         # Strip the trailing newline and any extra whitespace.
         return ln.strip()
-    return map(processLine, script)
+    # Note Python 3 map() gives an iterator rather than a list so explicitly
+    # convert to list before returning.
+    return list(map(processLine, script))
 
 def parseIntegratedTestScript(test, require_script=True):
     """parseIntegratedTestScript - Scan an LLVM/Clang style integrated test




More information about the llvm-commits mailing list