[llvm] r375020 - [lit] Fix internal diff's --strip-trailing-cr and use it

Joel E. Denny via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 16 10:21:57 PDT 2019


Author: jdenny
Date: Wed Oct 16 10:21:57 2019
New Revision: 375020

URL: http://llvm.org/viewvc/llvm-project?rev=375020&view=rev
Log:
[lit] Fix internal diff's --strip-trailing-cr and use it

Using GNU diff, `--strip-trailing-cr` removes a `\r` appearing before
a `\n` at the end of a line.  Without this patch, lit's internal diff
only removes `\r` if it appears as the last character.  That seems
useless.  This patch fixes that.

This patch also adds `--strip-trailing-cr` to some tests that fail on
Windows bots when D68664 is applied.  Based on what I see in the bot
logs, I think the following is happening.  In each test there, lit
diff is comparing a file with `\r\n` line endings to a file with `\n`
line endings.  Without D68664, lit diff reads those files in text
mode, which in Windows causes `\r\n` to be replaced with `\n`.
However, with D68664, lit diff reads the files in binary mode instead
and thus reports that every line is different, just as GNU diff does
(at least under Ubuntu).  Adding `--strip-trailing-cr` to those tests
restores the previous behavior while permitting the behavior of lit
diff to be more like GNU diff.

Reviewed By: rnk

Differential Revision: https://reviews.llvm.org/D68839

Added:
    llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-in.dos
    llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-in.unix
    llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-strip-trailing-cr.txt
Modified:
    llvm/trunk/test/MC/ARM/preserve-comments-arm.s
    llvm/trunk/test/MC/AsmParser/preserve-comments.s
    llvm/trunk/test/tools/llvm-cxxmap/remap.test
    llvm/trunk/test/tools/llvm-profdata/profile-symbol-list.test
    llvm/trunk/test/tools/llvm-profdata/roundtrip.test
    llvm/trunk/test/tools/llvm-profdata/sample-remap.test
    llvm/trunk/utils/lit/lit/TestRunner.py
    llvm/trunk/utils/lit/tests/max-failures.py
    llvm/trunk/utils/lit/tests/shtest-shell.py

Modified: llvm/trunk/test/MC/ARM/preserve-comments-arm.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/preserve-comments-arm.s?rev=375020&r1=375019&r2=375020&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/preserve-comments-arm.s (original)
+++ llvm/trunk/test/MC/ARM/preserve-comments-arm.s Wed Oct 16 10:21:57 2019
@@ -1,6 +1,6 @@
 	@RUN: llvm-mc -preserve-comments -n -triple arm-eabi < %s > %t
 	@RUN: sed 's/#[C]omment/@Comment/g' %s > %t2
-	@RUN: diff %t %t2
+	@RUN: diff --strip-trailing-cr %t %t2
 	.text
 
 	mov	r0, r0

Modified: llvm/trunk/test/MC/AsmParser/preserve-comments.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AsmParser/preserve-comments.s?rev=375020&r1=375019&r2=375020&view=diff
==============================================================================
--- llvm/trunk/test/MC/AsmParser/preserve-comments.s (original)
+++ llvm/trunk/test/MC/AsmParser/preserve-comments.s Wed Oct 16 10:21:57 2019
@@ -1,5 +1,5 @@
 	#RUN: llvm-mc -preserve-comments -n -triple i386-linux-gnu < %s > %t
-	#RUN: diff %s %t
+	#RUN: diff --strip-trailing-cr %s %t
 	.text
 
 foo:	#Comment here

Modified: llvm/trunk/test/tools/llvm-cxxmap/remap.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cxxmap/remap.test?rev=375020&r1=375019&r2=375020&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-cxxmap/remap.test (original)
+++ llvm/trunk/test/tools/llvm-cxxmap/remap.test Wed Oct 16 10:21:57 2019
@@ -1,5 +1,5 @@
 RUN: llvm-cxxmap %S/Inputs/before.sym %S/Inputs/after.sym -r %S/Inputs/remap.map -o %t.output -Wambiguous -Wincomplete 2>&1 | FileCheck %s --allow-empty
-RUN: diff %S/Inputs/expected %t.output
+RUN: diff --strip-trailing-cr %S/Inputs/expected %t.output
 
 CHECK-NOT: warning
 CHECK-NOT: error

Modified: llvm/trunk/test/tools/llvm-profdata/profile-symbol-list.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-profdata/profile-symbol-list.test?rev=375020&r1=375019&r2=375020&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-profdata/profile-symbol-list.test (original)
+++ llvm/trunk/test/tools/llvm-profdata/profile-symbol-list.test Wed Oct 16 10:21:57 2019
@@ -2,4 +2,4 @@
 ; RUN: llvm-profdata merge -sample -extbinary -prof-sym-list=%S/Inputs/profile-symbol-list-2.text %S/Inputs/sample-profile.proftext -o %t.2.output
 ; RUN: llvm-profdata merge -sample -extbinary %t.1.output %t.2.output -o %t.3.output
 ; RUN: llvm-profdata show -sample -show-prof-sym-list %t.3.output > %t.4.output
-; RUN: diff %S/Inputs/profile-symbol-list.expected %t.4.output
+; RUN: diff --strip-trailing-cr %S/Inputs/profile-symbol-list.expected %t.4.output

Modified: llvm/trunk/test/tools/llvm-profdata/roundtrip.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-profdata/roundtrip.test?rev=375020&r1=375019&r2=375020&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-profdata/roundtrip.test (original)
+++ llvm/trunk/test/tools/llvm-profdata/roundtrip.test Wed Oct 16 10:21:57 2019
@@ -1,18 +1,18 @@
 RUN: llvm-profdata merge -o %t.0.profdata %S/Inputs/IR_profile.proftext
 RUN: llvm-profdata show -o %t.0.proftext -all-functions -text %t.0.profdata 
-RUN: diff %t.0.proftext %S/Inputs/IR_profile.proftext
+RUN: diff --strip-trailing-cr %t.0.proftext %S/Inputs/IR_profile.proftext
 RUN: llvm-profdata merge -o %t.1.profdata %t.0.proftext
 RUN: llvm-profdata show -o %t.1.proftext -all-functions -text %t.1.profdata 
-RUN: diff %t.1.proftext %S/Inputs/IR_profile.proftext
+RUN: diff --strip-trailing-cr %t.1.proftext %S/Inputs/IR_profile.proftext
 RUN: llvm-profdata merge --sample --binary -output=%t.2.profdata %S/Inputs/sample-profile.proftext
 RUN: llvm-profdata merge --sample --text -output=%t.2.proftext %t.2.profdata
-RUN: diff %t.2.proftext %S/Inputs/sample-profile.proftext
+RUN: diff --strip-trailing-cr %t.2.proftext %S/Inputs/sample-profile.proftext
 # Round trip from text --> extbinary --> text
 RUN: llvm-profdata merge --sample --extbinary -output=%t.3.profdata %S/Inputs/sample-profile.proftext
 RUN: llvm-profdata merge --sample --text -output=%t.3.proftext %t.3.profdata
-RUN: diff %t.3.proftext %S/Inputs/sample-profile.proftext
+RUN: diff --strip-trailing-cr %t.3.proftext %S/Inputs/sample-profile.proftext
 # Round trip from text --> binary --> extbinary --> text
 RUN: llvm-profdata merge --sample --binary -output=%t.4.profdata %S/Inputs/sample-profile.proftext
 RUN: llvm-profdata merge --sample --extbinary -output=%t.5.profdata %t.4.profdata
 RUN: llvm-profdata merge --sample --text -output=%t.4.proftext %t.5.profdata
-RUN: diff %t.4.proftext %S/Inputs/sample-profile.proftext
+RUN: diff --strip-trailing-cr %t.4.proftext %S/Inputs/sample-profile.proftext

Modified: llvm/trunk/test/tools/llvm-profdata/sample-remap.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-profdata/sample-remap.test?rev=375020&r1=375019&r2=375020&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-profdata/sample-remap.test (original)
+++ llvm/trunk/test/tools/llvm-profdata/sample-remap.test Wed Oct 16 10:21:57 2019
@@ -1,2 +1,2 @@
 ; RUN: llvm-profdata merge -sample -text %S/Inputs/sample-remap.proftext -r %S/Inputs/sample-remap.remap -o %t.output
-; RUN: diff %S/Inputs/sample-remap.expected %t.output
+; RUN: diff --strip-trailing-cr %S/Inputs/sample-remap.expected %t.output

Modified: llvm/trunk/utils/lit/lit/TestRunner.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/TestRunner.py?rev=375020&r1=375019&r2=375020&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/TestRunner.py (original)
+++ llvm/trunk/utils/lit/lit/TestRunner.py Wed Oct 16 10:21:57 2019
@@ -465,7 +465,7 @@ def executeBuiltinDiff(cmd, cmd_shenv):
 
         f = lambda x: x
         if strip_trailing_cr:
-            f = compose2(lambda line: line.rstrip('\r'), f)
+            f = compose2(lambda line: line.replace('\r\n', '\n'), f)
         if ignore_all_space or ignore_space_change:
             ignoreSpace = lambda line, separator: separator.join(line.split())
             ignoreAllSpaceOrSpaceChange = functools.partial(ignoreSpace, separator='' if ignore_all_space else ' ')

Added: llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-in.dos
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-in.dos?rev=375020&view=auto
==============================================================================
--- llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-in.dos (added)
+++ llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-in.dos Wed Oct 16 10:21:57 2019
@@ -0,0 +1,3 @@
+In this file, the
+sequence "\r\n"
+terminates lines.

Added: llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-in.unix
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-in.unix?rev=375020&view=auto
==============================================================================
--- llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-in.unix (added)
+++ llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-in.unix Wed Oct 16 10:21:57 2019
@@ -0,0 +1,3 @@
+In this file, the
+sequence "\n"
+terminates lines.

Added: llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-strip-trailing-cr.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-strip-trailing-cr.txt?rev=375020&view=auto
==============================================================================
--- llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-strip-trailing-cr.txt (added)
+++ llvm/trunk/utils/lit/tests/Inputs/shtest-shell/diff-strip-trailing-cr.txt Wed Oct 16 10:21:57 2019
@@ -0,0 +1,10 @@
+# Check behavior of --strip-trailing-cr.
+
+# RUN: diff -u diff-in.dos diff-in.unix && false || true
+# RUN: diff -u diff-in.unix diff-in.dos && false || true
+
+# RUN: diff -u --strip-trailing-cr diff-in.dos diff-in.unix && false || true
+# RUN: diff -u --strip-trailing-cr diff-in.unix diff-in.dos && false || true
+
+# Fail so lit will print output.
+# RUN: false

Modified: llvm/trunk/utils/lit/tests/max-failures.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/max-failures.py?rev=375020&r1=375019&r2=375020&view=diff
==============================================================================
--- llvm/trunk/utils/lit/tests/max-failures.py (original)
+++ llvm/trunk/utils/lit/tests/max-failures.py Wed Oct 16 10:21:57 2019
@@ -8,7 +8,7 @@
 #
 # END.
 
-# CHECK: Failing Tests (31)
+# CHECK: Failing Tests (32)
 # CHECK: Failing Tests (1)
 # CHECK: Failing Tests (2)
 # CHECK: error: argument --max-failures: requires positive integer, but found '0'

Modified: llvm/trunk/utils/lit/tests/shtest-shell.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/tests/shtest-shell.py?rev=375020&r1=375019&r2=375020&view=diff
==============================================================================
--- llvm/trunk/utils/lit/tests/shtest-shell.py (original)
+++ llvm/trunk/utils/lit/tests/shtest-shell.py Wed Oct 16 10:21:57 2019
@@ -201,6 +201,60 @@
 
 # CHECK: PASS: shtest-shell :: diff-r.txt
 
+
+# CHECK: FAIL: shtest-shell :: diff-strip-trailing-cr.txt
+
+# CHECK: *** TEST 'shtest-shell :: diff-strip-trailing-cr.txt' FAILED ***
+
+# CHECK: $ "diff" "-u" "diff-in.dos" "diff-in.unix"
+# CHECK: # command output:
+# CHECK: @@
+# CHECK-NEXT: -In this file, the
+# CHECK-NEXT: -sequence "\r\n"
+# CHECK-NEXT: -terminates lines.
+# CHECK-NEXT: +In this file, the
+# CHECK-NEXT: +sequence "\n"
+# CHECK-NEXT: +terminates lines.
+# CHECK: error: command failed with exit status: 1
+# CHECK: $ "true"
+
+# CHECK: $ "diff" "-u" "diff-in.unix" "diff-in.dos"
+# CHECK: # command output:
+# CHECK: @@
+# CHECK-NEXT: -In this file, the
+# CHECK-NEXT: -sequence "\n"
+# CHECK-NEXT: -terminates lines.
+# CHECK-NEXT: +In this file, the
+# CHECK-NEXT: +sequence "\r\n"
+# CHECK-NEXT: +terminates lines.
+# CHECK: error: command failed with exit status: 1
+# CHECK: $ "true"
+
+# CHECK: $ "diff" "-u" "--strip-trailing-cr" "diff-in.dos" "diff-in.unix"
+# CHECK: # command output:
+# CHECK: @@
+# CHECK-NEXT:  In this file, the
+# CHECK-NEXT: -sequence "\r\n"
+# CHECK-NEXT: +sequence "\n"
+# CHECK-NEXT:  terminates lines.
+# CHECK: error: command failed with exit status: 1
+# CHECK: $ "true"
+
+# CHECK: $ "diff" "-u" "--strip-trailing-cr" "diff-in.unix" "diff-in.dos"
+# CHECK: # command output:
+# CHECK: @@
+# CHECK-NEXT:  In this file, the
+# CHECK-NEXT: -sequence "\n"
+# CHECK-NEXT: +sequence "\r\n"
+# CHECK-NEXT:  terminates lines.
+# CHECK: error: command failed with exit status: 1
+# CHECK: $ "true"
+
+# CHECK: $ "false"
+
+# CHECK: ***
+
+
 # CHECK: FAIL: shtest-shell :: diff-unified-error-0.txt
 # CHECK: *** TEST 'shtest-shell :: diff-unified-error-0.txt' FAILED ***
 # CHECK: $ "diff" "-U" "30.1" "{{[^"]*}}" "{{[^"]*}}"
@@ -360,4 +414,4 @@
 # CHECK: PASS: shtest-shell :: sequencing-0.txt
 # CHECK: XFAIL: shtest-shell :: sequencing-1.txt
 # CHECK: PASS: shtest-shell :: valid-shell.txt
-# CHECK: Failing Tests (31)
+# CHECK: Failing Tests (32)




More information about the llvm-commits mailing list