diff --git a/llvm/utils/lit/lit/display.py b/llvm/utils/lit/lit/display.py --- a/llvm/utils/lit/lit/display.py +++ b/llvm/utils/lit/lit/display.py @@ -86,7 +86,10 @@ errors="replace") except UnicodeDecodeError: pass - out = out.decode(encoding=sys.stdout.encoding) + # Python 2 can raise UnicodeDecodeError here too in cases + # where the stdout encoding is ASCII. Ignore decode errors + # in this case. + out = out.decode(encoding=sys.stdout.encoding, errors="ignore") print(out) print("*" * 20) diff --git a/llvm/utils/lit/tests/shtest-shell.py b/llvm/utils/lit/tests/shtest-shell.py --- a/llvm/utils/lit/tests/shtest-shell.py +++ b/llvm/utils/lit/tests/shtest-shell.py @@ -6,6 +6,14 @@ # RUN: cat %t.out # RUN: FileCheck --input-file %t.out %s # +# Test again in non-UTF shell to catch potential errors with python 2 seen +# on stdout-encoding.txt +# RUN: env PYTHONIOENCODING=ascii not %{lit} -j 1 -a %{inputs}/shtest-shell > %t.ascii.out +# FIXME: Temporarily dump test output so we can debug failing tests on +# buildbots. +# RUN: cat %t.ascii.out +# RUN: FileCheck --input-file %t.ascii.out %s +# # END. # CHECK: -- Testing: @@ -64,7 +72,7 @@ # CHECK-NEXT: @@ # CHECK-NEXT: {{^ .f.o.o.$}} # CHECK-NEXT: {{^-.b.a.r.$}} -# 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" @@ -78,7 +86,7 @@ # CHECK-NEXT: -bar # CHECK-NEXT: -baz # 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" @@ -89,7 +97,7 @@ # 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-NEXT: +foo # CHECK-NEXT: +bar @@ -116,7 +124,7 @@ # CHECK-NEXT: @@ # CHECK-NEXT: {{^ .f.o.o.$}} # CHECK-NEXT: {{^-.b.a.r.$}} -# 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" @@ -132,7 +140,7 @@ # CHECK-NEXT: -bar # CHECK-NEXT: -baz # 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" @@ -143,7 +151,7 @@ # 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-NEXT: +foo # CHECK-NEXT: +bar @@ -576,7 +584,7 @@ # CHECK: $ "cat" "diff-in.bin" # CHECK: # command output: # CHECK-NEXT: {{^.f.o.o.$}} -# CHECK-NEXT: {{^.b.a.r..}} +# CHECK-NEXT: {{^.b.a.r.}} # CHECK-NEXT: {{^.b.a.z.$}} # CHECK-NOT: error # CHECK: $ "false"