From: Brian Gesiak Date: Thu, 27 Jul 2017 19:27:10 +0000 (+0000) Subject: [lit] Fix TestRunner unit test on Windows X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=935d9198b37758c0717f3b86ab876a32fc12f637;p=llvm [lit] Fix TestRunner unit test on Windows Summary: Normally Python converts all newline characters, Windows or Unix, to Unix newlines when opening a file. However, lit opens files in binary mode, which does not perform this conversion. As a result, trailing Windows newlines are not stripped from test input, which caused a failure in the TestRunner unit test: ``` FAIL: test_custom (__main__.TestIntegratedTestKeywordParser) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Users\bgesiak\src\llvm\llvm\utils\lit\tests\unit\TestRunner.py", line 109, in test_custom self.assertItemsEqual(value, ['a', 'b', 'c']) AssertionError: Element counts were not equal: First has 1, Second has 0: 'c\r' First has 0, Second has 1: 'c' ``` Fix the discrepancy in behavior across the two platforms by manually stripping Windows newlines before yielding each line in the test file. Reviewers: echristo, beanz, ddunbar, delcypher, rnk Reviewed By: rnk Subscribers: mehdi_amini, llvm-commits Differential Revision: https://reviews.llvm.org/D27746 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309312 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py index a60a0f85487..404b8f6581b 100644 --- a/utils/lit/lit/TestRunner.py +++ b/utils/lit/lit/TestRunner.py @@ -787,9 +787,13 @@ def parseIntegratedTestScriptCommands(source_path, keywords): # command. Note that we take care to return regular strings in # Python 2, to avoid other code having to differentiate between the # str and unicode types. + # + # Opening the file in binary mode prevented Windows \r newline + # characters from being converted to Unix \n newlines, so manually + # strip those from the yielded lines. keyword,ln = match.groups() yield (line_number, to_string(keyword.decode('utf-8')), - to_string(ln.decode('utf-8'))) + to_string(ln.decode('utf-8').rstrip('\r'))) finally: f.close()