<div dir="ltr">At least, part of it, llvm/trunk/utils/lit/lit/Test.py, should be fed to release_70 for compatibility of Py3.<div><br><div class="gmail_quote"><div dir="ltr">On Wed, Aug 8, 2018 at 5:55 AM Stella Stamenova via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: stella.stamenova<br>
Date: Tue Aug 7 13:54:38 2018<br>
New Revision: 339179<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=339179&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=339179&view=rev</a><br>
Log:<br>
[lit, python3] Update lit error logging to work correctly in python3 and other test fixes<br>
<br>
Summary:<br>
In Python2 'unicode' is a distinct type from 'str', but in Python3 'unicode' does not exist and instead all 'str' objects are Unicode string. This change updates the logic in the test logging for lit to correctly process each of the types, and more importantly, to not just fail in Python3.<br>
<br>
This change also reverses the use of quotes in several of the cfg files. By using '""' we are guaranteeing that the resulting path will work correctly on Windows while "''" only works correctly sometimes. This also fixes one of the failing tests.<br>
<br>
Reviewers: asmith, zturner<br>
<br>
Subscribers: stella.stamenova, delcypher, llvm-commits<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D50397" rel="noreferrer" target="_blank">https://reviews.llvm.org/D50397</a><br>
<br>
Modified:<br>
llvm/trunk/utils/lit/lit/Test.py<br>
llvm/trunk/utils/lit/lit/llvm/config.py<br>
llvm/trunk/utils/lit/tests/Inputs/shtest-env/lit.cfg<br>
llvm/trunk/utils/lit/tests/Inputs/shtest-shell/lit.cfg<br>
llvm/trunk/utils/lit/tests/Inputs/shtest-timeout/lit.cfg<br>
llvm/trunk/utils/lit/tests/lit.cfg<br>
llvm/trunk/utils/lit/tests/shtest-timeout.py<br>
<br>
Modified: llvm/trunk/utils/lit/lit/Test.py<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/Test.py?rev=339179&r1=339178&r2=339179&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/Test.py?rev=339179&r1=339178&r2=339179&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/lit/lit/Test.py (original)<br>
+++ llvm/trunk/utils/lit/lit/Test.py Tue Aug 7 13:54:38 2018<br>
@@ -378,10 +378,15 @@ class Test:<br>
fil.write(testcase_xml)<br>
if self.result.code.isFailure:<br>
fil.write(">\n\t<failure ><![CDATA[")<br>
- if type(self.result.output) == unicode:<br>
- encoded_output = self.result.output.encode("utf-8", 'ignore')<br>
- else:<br>
+ # In Python2, 'str' and 'unicode' are distinct types, but in Python3, the type 'unicode' does not exist<br>
+ # and instead 'bytes' is distinct<br>
+ # in Python3, there's no unicode<br>
+ if isinstance(self.result.output, str):<br>
encoded_output = self.result.output<br>
+ elif isinstance(self.result.output, bytes):<br>
+ encoded_output = self.result.output.decode("utf-8", 'ignore')<br>
+ else:<br>
+ encoded_output = self.result.output.encode("utf-8", 'ignore')<br>
# In the unlikely case that the output contains the CDATA terminator<br>
# we wrap it by creating a new CDATA block<br>
fil.write(encoded_output.replace("]]>", "]]]]><![CDATA[>"))<br>
<br>
Modified: llvm/trunk/utils/lit/lit/llvm/config.py<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/llvm/config.py?rev=339179&r1=339178&r2=339179&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/llvm/config.py?rev=339179&r1=339178&r2=339179&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/lit/lit/llvm/config.py (original)<br>
+++ llvm/trunk/utils/lit/lit/llvm/config.py Tue Aug 7 13:54:38 2018<br>
@@ -299,7 +299,7 @@ class LLVMConfig(object):<br>
'count'), verbatim=True, unresolved='fatal'),<br>
ToolSubst(r'\| \bnot\b', command=FindTool('not'), verbatim=True, unresolved='fatal')]<br>
<br>
- self.config.substitutions.append(('%python', "'%s'" % (sys.executable)))<br>
+ self.config.substitutions.append(('%python', '"%s"' % (sys.executable)))<br>
<br>
self.add_tool_substitutions(<br>
tool_patterns, [self.config.llvm_tools_dir])<br>
<br>
Modified: llvm/trunk/utils/lit/tests/Inputs/shtest-env/lit.cfg<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-env/lit.cfg?rev=339179&r1=339178&r2=339179&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-env/lit.cfg?rev=339179&r1=339178&r2=339179&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/lit/tests/Inputs/shtest-env/lit.cfg (original)<br>
+++ llvm/trunk/utils/lit/tests/Inputs/shtest-env/lit.cfg Tue Aug 7 13:54:38 2018<br>
@@ -6,4 +6,4 @@ config.test_source_root = None<br>
config.test_exec_root = None<br>
config.environment['FOO'] = '1'<br>
config.environment['BAR'] = '2'<br>
-config.substitutions.append(('%{python}', "'%s'" % (sys.executable)))<br>
+config.substitutions.append(('%{python}', '"%s"' % (sys.executable)))<br>
<br>
Modified: llvm/trunk/utils/lit/tests/Inputs/shtest-shell/lit.cfg<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-shell/lit.cfg?rev=339179&r1=339178&r2=339179&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-shell/lit.cfg?rev=339179&r1=339178&r2=339179&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/lit/tests/Inputs/shtest-shell/lit.cfg (original)<br>
+++ llvm/trunk/utils/lit/tests/Inputs/shtest-shell/lit.cfg Tue Aug 7 13:54:38 2018<br>
@@ -4,4 +4,4 @@ config.suffixes = ['.txt']<br>
config.test_format = lit.formats.ShTest()<br>
config.test_source_root = None<br>
config.test_exec_root = None<br>
-config.substitutions.append(('%{python}', "'%s'" % (sys.executable)))<br>
+config.substitutions.append(('%{python}', '"%s"' % (sys.executable)))<br>
<br>
Modified: llvm/trunk/utils/lit/tests/Inputs/shtest-timeout/lit.cfg<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-timeout/lit.cfg?rev=339179&r1=339178&r2=339179&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-timeout/lit.cfg?rev=339179&r1=339178&r2=339179&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/lit/tests/Inputs/shtest-timeout/lit.cfg (original)<br>
+++ llvm/trunk/utils/lit/tests/Inputs/shtest-timeout/lit.cfg Tue Aug 7 13:54:38 2018<br>
@@ -29,4 +29,4 @@ config.test_exec_root = config.test_sour<br>
config.target_triple = '(unused)'<br>
src_root = os.path.join(config.test_source_root, '..')<br>
config.environment['PYTHONPATH'] = src_root<br>
-config.substitutions.append(('%{python}', "'%s'" % (sys.executable)))<br>
+config.substitutions.append(('%{python}', '"%s"' % (sys.executable)))<br>
<br>
Modified: llvm/trunk/utils/lit/tests/lit.cfg<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/lit.cfg?rev=339179&r1=339178&r2=339179&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/lit.cfg?rev=339179&r1=339178&r2=339179&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/lit/tests/lit.cfg (original)<br>
+++ llvm/trunk/utils/lit/tests/lit.cfg Tue Aug 7 13:54:38 2018<br>
@@ -40,7 +40,7 @@ config.substitutions.append(('%{inputs}'<br>
src_root, 'tests', 'Inputs')))<br>
config.substitutions.append(('%{lit}', "%%{python} %s" % (<br>
os.path.join(lit_path, 'lit.py'),)))<br>
-config.substitutions.append(('%{python}', "'%s'" % (sys.executable)))<br>
+config.substitutions.append(('%{python}', '"%s"' % (sys.executable)))<br>
<br>
<br>
# Enable coverage.py reporting, assuming the coverage module has been installed<br>
<br>
Modified: llvm/trunk/utils/lit/tests/shtest-timeout.py<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/shtest-timeout.py?rev=339179&r1=339178&r2=339179&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/shtest-timeout.py?rev=339179&r1=339178&r2=339179&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/lit/tests/shtest-timeout.py (original)<br>
+++ llvm/trunk/utils/lit/tests/shtest-timeout.py Tue Aug 7 13:54:38 2018<br>
@@ -1,8 +1,5 @@<br>
# REQUIRES: python-psutil<br>
<br>
-# PR33944<br>
-# XFAIL: windows<br>
-<br>
# FIXME: This test is fragile because it relies on time which can<br>
# be affected by system performance. In particular we are currently<br>
# assuming that `short.py` can be successfully executed within 2<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div></div></div>