mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
[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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375020 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ' ')
|
||||
|
||||
3
utils/lit/tests/Inputs/shtest-shell/diff-in.dos
Normal file
3
utils/lit/tests/Inputs/shtest-shell/diff-in.dos
Normal file
@@ -0,0 +1,3 @@
|
||||
In this file, the
|
||||
sequence "\r\n"
|
||||
terminates lines.
|
||||
3
utils/lit/tests/Inputs/shtest-shell/diff-in.unix
Normal file
3
utils/lit/tests/Inputs/shtest-shell/diff-in.unix
Normal file
@@ -0,0 +1,3 @@
|
||||
In this file, the
|
||||
sequence "\n"
|
||||
terminates lines.
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user