diff options
author | Joel E. Denny <jdenny.ornl@gmail.com> | 2019-10-10 17:39:57 +0000 |
---|---|---|
committer | Joel E. Denny <jdenny.ornl@gmail.com> | 2019-10-10 17:39:57 +0000 |
commit | f4edce12fffee221a16c5829b24281b3e23f423d (patch) | |
tree | 16f574172123f5c9b50e785581a9be71e79b8803 /llvm/utils/lit/tests | |
parent | 19e6bb25f05fa24ea445dd455c7f44fc3b036725 (diff) | |
download | bcm5719-llvm-f4edce12fffee221a16c5829b24281b3e23f423d.tar.gz bcm5719-llvm-f4edce12fffee221a16c5829b24281b3e23f423d.zip |
[lit] Extend internal diff to support `-` argument
When using lit's internal shell, RUN lines like the following
accidentally execute an external `diff` instead of lit's internal
`diff`:
```
# RUN: program | diff file -
```
Such cases exist now, in `clang/test/Analysis` for example. We are
preparing patches to ensure lit's internal `diff` is called in such
cases, which will then fail because lit's internal `diff` doesn't
recognize `-` as a command-line option. This patch adds support for
`-` to mean stdin.
Reviewed By: probinson, rnk
Differential Revision: https://reviews.llvm.org/D67643
llvm-svn: 374390
Diffstat (limited to 'llvm/utils/lit/tests')
6 files changed, 135 insertions, 2 deletions
diff --git a/llvm/utils/lit/tests/Inputs/shtest-shell/diff-encodings.txt b/llvm/utils/lit/tests/Inputs/shtest-shell/diff-encodings.txt index d8b9718a099..044908f7725 100644 --- a/llvm/utils/lit/tests/Inputs/shtest-shell/diff-encodings.txt +++ b/llvm/utils/lit/tests/Inputs/shtest-shell/diff-encodings.txt @@ -5,5 +5,11 @@ # RUN: diff -u diff-in.utf8 diff-in.bin && false || true # RUN: diff -u diff-in.bin diff-in.utf8 && false || true +# RUN: cat diff-in.bin | diff -u - diff-in.bin +# RUN: cat diff-in.bin | diff -u diff-in.bin - +# RUN: cat diff-in.bin | diff -u diff-in.utf16 - && false || true +# RUN: cat diff-in.bin | diff -u diff-in.utf8 - && false || true +# RUN: cat diff-in.bin | diff -u - diff-in.utf8 && false || true + # Fail so lit will print output. # RUN: false diff --git a/llvm/utils/lit/tests/Inputs/shtest-shell/diff-pipes.txt b/llvm/utils/lit/tests/Inputs/shtest-shell/diff-pipes.txt index ce0abca1661..0bd73a86251 100644 --- a/llvm/utils/lit/tests/Inputs/shtest-shell/diff-pipes.txt +++ b/llvm/utils/lit/tests/Inputs/shtest-shell/diff-pipes.txt @@ -5,6 +5,16 @@ # RUN: diff %t.foo %t.foo | FileCheck -allow-empty -check-prefix=EMPTY %s # RUN: diff -u %t.foo %t.bar | FileCheck %s && false || true +# Check input pipe. +# RUN: echo foo | diff -u - %t.foo +# RUN: echo foo | diff -u %t.foo - +# RUN: echo bar | diff -u %t.foo - && false || true +# RUN: echo bar | diff -u - %t.foo && false || true + +# Check output and input pipes at the same time. +# RUN: echo foo | diff - %t.foo | FileCheck -allow-empty -check-prefix=EMPTY %s +# RUN: echo bar | diff -u %t.foo - | FileCheck %s && false || true + # Fail so lit will print output. # RUN: false diff --git a/llvm/utils/lit/tests/Inputs/shtest-shell/diff-r-error-7.txt b/llvm/utils/lit/tests/Inputs/shtest-shell/diff-r-error-7.txt new file mode 100644 index 00000000000..08c50447a97 --- /dev/null +++ b/llvm/utils/lit/tests/Inputs/shtest-shell/diff-r-error-7.txt @@ -0,0 +1,2 @@ +# diff -r currently cannot handle stdin. +# RUN: diff -r - %t diff --git a/llvm/utils/lit/tests/Inputs/shtest-shell/diff-r-error-8.txt b/llvm/utils/lit/tests/Inputs/shtest-shell/diff-r-error-8.txt new file mode 100644 index 00000000000..26361a91e89 --- /dev/null +++ b/llvm/utils/lit/tests/Inputs/shtest-shell/diff-r-error-8.txt @@ -0,0 +1,2 @@ +# diff -r currently cannot handle stdin. +# RUN: diff -r %t - diff --git a/llvm/utils/lit/tests/max-failures.py b/llvm/utils/lit/tests/max-failures.py index 45224a70f1d..67f21caa1bb 100644 --- a/llvm/utils/lit/tests/max-failures.py +++ b/llvm/utils/lit/tests/max-failures.py @@ -8,7 +8,7 @@ # # END. -# CHECK: Failing Tests (28) +# CHECK: Failing Tests (30) # CHECK: Failing Tests (1) # CHECK: Failing Tests (2) # CHECK: error: Option '--max-failures' requires positive integer diff --git a/llvm/utils/lit/tests/shtest-shell.py b/llvm/utils/lit/tests/shtest-shell.py index 6d9b1aa459c..db57c3af1f1 100644 --- a/llvm/utils/lit/tests/shtest-shell.py +++ b/llvm/utils/lit/tests/shtest-shell.py @@ -81,6 +81,60 @@ # CHECK: error: command failed with exit status: 1 # CHECK: $ "true" +# CHECK: $ "cat" "diff-in.bin" +# CHECK-NOT: error +# CHECK: $ "diff" "-u" "-" "diff-in.bin" +# CHECK-NOT: error + +# CHECK: $ "cat" "diff-in.bin" +# CHECK-NOT: error +# CHECK: $ "diff" "-u" "diff-in.bin" "-" +# CHECK-NOT: error + +# CHECK: $ "cat" "diff-in.bin" +# CHECK-NOT: error +# CHECK: $ "diff" "-u" "diff-in.utf16" "-" +# CHECK: # command output: +# CHECK-NEXT: --- +# CHECK-NEXT: +++ +# CHECK-NEXT: @@ +# CHECK-NEXT: {{^ .f.o.o.$}} +# CHECK-NEXT: {{^-.b.a.r.$}} +# CHECK-NEXT: {{^\+.b.a.r..}} +# CHECK-NEXT: {{^ .b.a.z.$}} +# CHECK: error: command failed with exit status: 1 +# CHECK: $ "true" + +# CHECK: $ "cat" "diff-in.bin" +# CHECK-NOT: error +# CHECK: $ "diff" "-u" "diff-in.utf8" "-" +# CHECK: # command output: +# CHECK-NEXT: --- +# CHECK-NEXT: +++ +# CHECK-NEXT: @@ +# CHECK-NEXT: -foo +# CHECK-NEXT: -bar +# CHECK-NEXT: -baz +# CHECK-NEXT: {{^\+.f.o.o.$}} +# CHECK-NEXT: {{^\+.b.a.r..}} +# CHECK-NEXT: {{^\+.b.a.z.$}} +# CHECK: error: command failed with exit status: 1 +# CHECK: $ "true" + +# CHECK: $ "diff" "-u" "-" "diff-in.utf8" +# CHECK: # command output: +# CHECK-NEXT: --- +# CHECK-NEXT: +++ +# CHECK-NEXT: @@ +# CHECK-NEXT: {{^\-.f.o.o.$}} +# CHECK-NEXT: {{^\-.b.a.r..}} +# CHECK-NEXT: {{^\-.b.a.z.$}} +# CHECK-NEXT: +foo +# CHECK-NEXT: +bar +# CHECK-NEXT: +baz +# CHECK: error: command failed with exit status: 1 +# CHECK: $ "true" + # CHECK: $ "false" # CHECK: *** @@ -158,6 +212,51 @@ # CHECK-NOT: error # CHECK: $ "true" +# CHECK: $ "echo" "foo" +# CHECK: $ "diff" "-u" "-" "{{[^"]*}}.foo" +# CHECK-NOT: note +# CHECK-NOT: error + +# CHECK: $ "echo" "foo" +# CHECK: $ "diff" "-u" "{{[^"]*}}.foo" "-" +# CHECK-NOT: note +# CHECK-NOT: error + +# CHECK: $ "echo" "bar" +# CHECK: $ "diff" "-u" "{{[^"]*}}.foo" "-" +# CHECK: # command output: +# CHECK: @@ +# CHECK-NEXT: -foo +# CHECK-NEXT: +bar +# CHECK: error: command failed with exit status: 1 +# CHECK: $ "true" + +# CHECK: $ "echo" "bar" +# CHECK: $ "diff" "-u" "-" "{{[^"]*}}.foo" +# CHECK: # command output: +# CHECK: @@ +# CHECK-NEXT: -bar +# CHECK-NEXT: +foo +# CHECK: error: command failed with exit status: 1 +# CHECK: $ "true" + +# CHECK: $ "echo" "foo" +# CHECK: $ "diff" "-" "{{[^"]*}}.foo" +# CHECK-NOT: note +# CHECK-NOT: error +# CHECK: $ "FileCheck" +# CHECK-NOT: note +# CHECK-NOT: error + +# CHECK: $ "echo" "bar" +# CHECK: $ "diff" "-u" "{{[^"]*}}.foo" "-" +# CHECK: note: command had no output on stdout or stderr +# CHECK: error: command failed with exit status: 1 +# CHECK: $ "FileCheck" +# CHECK-NOT: note +# CHECK-NOT: error +# CHECK: $ "true" + # CHECK: $ "false" # CHECK: *** @@ -216,6 +315,20 @@ # CHECK: File {{.*}}dir1{{.*}}extra_file is a regular empty file while file {{.*}}dir2{{.*}}extra_file is a directory # CHECK: error: command failed with exit status: 1 +# CHECK: FAIL: shtest-shell :: diff-r-error-7.txt +# CHECK: *** TEST 'shtest-shell :: diff-r-error-7.txt' FAILED *** +# CHECK: $ "diff" "-r" "-" "{{[^"]*}}" +# CHECK: # command stderr: +# CHECK: Error: cannot recursively compare '-' +# CHECK: error: command failed with exit status: 1 + +# CHECK: FAIL: shtest-shell :: diff-r-error-8.txt +# CHECK: *** TEST 'shtest-shell :: diff-r-error-8.txt' FAILED *** +# CHECK: $ "diff" "-r" "{{[^"]*}}" "-" +# CHECK: # command stderr: +# CHECK: Error: cannot recursively compare '-' +# CHECK: error: command failed with exit status: 1 + # CHECK: PASS: shtest-shell :: diff-r.txt # CHECK: FAIL: shtest-shell :: error-0.txt @@ -297,4 +410,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 (28) +# CHECK: Failing Tests (30) |