[lit] Read command stdout/stderr as text on Windows

This takes care of normalizing newlines back to single LF instead
of CRLF.

This on itself breaks on a couple tests that accidentally seem to
be writing binary data to stdout; make sure those cases are piped
to /dev/null instead of actually written to a terminal.

Differential Revision: https://reviews.llvm.org/D120623
This commit is contained in:
Martin Storsjö 2022-02-27 00:16:24 +02:00
parent 33830326aa
commit 640e45b9b2
8 changed files with 12 additions and 13 deletions

View file

@ -6,8 +6,6 @@
# #
#===----------------------------------------------------------------------===## #===----------------------------------------------------------------------===##
# XFAIL: LIBCXX-WINDOWS-FIXME
# Note: We prepend arguments with 'x' to avoid thinking there are too few # Note: We prepend arguments with 'x' to avoid thinking there are too few
# arguments in case an argument is an empty string. # arguments in case an argument is an empty string.
# RUN: %{python} %s x%S x%T x%{substitutions} # RUN: %{python} %s x%S x%T x%{substitutions}

View file

@ -1,4 +1,4 @@
// RUN: not llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s 2> %t // RUN: not llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s 2> %t > /dev/null
// RUN: FileCheck -input-file %t %s // RUN: FileCheck -input-file %t %s
.global zed .global zed

View file

@ -1,5 +1,5 @@
// RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mattr=+micromips < %s \ // RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mattr=+micromips < %s \
// RUN: | llvm-readobj --sections --section-data \ // RUN: | llvm-readobj --sections --section-data - \
// RUN: | FileCheck -check-prefix=DATA %s // RUN: | FileCheck -check-prefix=DATA %s
// //
// XFAIL: * // XFAIL: *

View file

@ -1,4 +1,4 @@
;RUN: opt < %s -dot-cfg -cfg-weights -cfg-dot-filename-prefix=%t 2>/dev/null ;RUN: opt < %s -dot-cfg -cfg-weights -cfg-dot-filename-prefix=%t 2>/dev/null > /dev/null
;RUN: FileCheck %s -input-file=%t.f.dot ;RUN: FileCheck %s -input-file=%t.f.dot
define void @f(i32) { define void @f(i32) {

View file

@ -1,4 +1,4 @@
;RUN: opt < %s -dot-cfg -cfg-weights -cfg-raw-weights -cfg-dot-filename-prefix=%t 2>/dev/null ;RUN: opt < %s -dot-cfg -cfg-weights -cfg-raw-weights -cfg-dot-filename-prefix=%t 2>/dev/null > /dev/null
;RUN: FileCheck %s -input-file=%t.f.dot ;RUN: FileCheck %s -input-file=%t.f.dot
define void @f(i32) { define void @f(i32) {

View file

@ -1,12 +1,12 @@
; RUN: rm -f %t.other.dot %t-only.other.dot ; RUN: rm -f %t.other.dot %t-only.other.dot
;; Both f and func are dumped because their names contain the pattern 'f' as a substring. ;; Both f and func are dumped because their names contain the pattern 'f' as a substring.
; RUN: opt < %s -dot-cfg -cfg-dot-filename-prefix=%t -cfg-func-name=f 2>/dev/null ; RUN: opt < %s -dot-cfg -cfg-dot-filename-prefix=%t -cfg-func-name=f 2>/dev/null > /dev/null
; RUN: FileCheck %s -input-file=%t.f.dot -check-prefix=F ; RUN: FileCheck %s -input-file=%t.f.dot -check-prefix=F
; RUN: FileCheck %s -input-file=%t.func.dot -check-prefix=Func ; RUN: FileCheck %s -input-file=%t.func.dot -check-prefix=Func
; RUN: not test -f %t.other.dot ; RUN: not test -f %t.other.dot
; RUN: opt < %s -dot-cfg-only -cfg-dot-filename-prefix=%t-only -cfg-func-name=f 2>/dev/null ; RUN: opt < %s -dot-cfg-only -cfg-dot-filename-prefix=%t-only -cfg-func-name=f 2>/dev/null > /dev/null
; RUN: FileCheck %s -input-file=%t-only.f.dot -check-prefix=F ; RUN: FileCheck %s -input-file=%t-only.f.dot -check-prefix=F
; RUN: FileCheck %s -input-file=%t-only.func.dot -check-prefix=Func ; RUN: FileCheck %s -input-file=%t-only.func.dot -check-prefix=Func
; RUN: not test -f %t-only.other.dot ; RUN: not test -f %t-only.other.dot

View file

@ -1,12 +1,12 @@
; RUN: rm -rf %t ; RUN: rm -rf %t
; RUN: mkdir -p %t ; RUN: mkdir -p %t
; RUN: opt < %s -dot-cfg -cfg-hide-unreachable-paths -cfg-dot-filename-prefix=%t/unreach 2>/dev/null ; RUN: opt < %s -dot-cfg -cfg-hide-unreachable-paths -cfg-dot-filename-prefix=%t/unreach 2>/dev/null > /dev/null
; RUN: FileCheck %s -input-file=%t/unreach.callee.dot -check-prefix=UNREACH ; RUN: FileCheck %s -input-file=%t/unreach.callee.dot -check-prefix=UNREACH
; RUN: opt < %s -dot-cfg -cfg-hide-deoptimize-paths -cfg-dot-filename-prefix=%t/deopt 2>/dev/null ; RUN: opt < %s -dot-cfg -cfg-hide-deoptimize-paths -cfg-dot-filename-prefix=%t/deopt 2>/dev/null > /dev/null
; RUN: FileCheck %s -input-file=%t/deopt.callee.dot -check-prefix=DEOPT ; RUN: FileCheck %s -input-file=%t/deopt.callee.dot -check-prefix=DEOPT
; RUN: opt < %s -dot-cfg -cfg-dot-filename-prefix=%t/no-flags 2>/dev/null ; RUN: opt < %s -dot-cfg -cfg-dot-filename-prefix=%t/no-flags 2>/dev/null > /dev/null
; RUN: FileCheck %s -input-file=%t/no-flags.callee.dot -check-prefix=NO-FLAGS ; RUN: FileCheck %s -input-file=%t/no-flags.callee.dot -check-prefix=NO-FLAGS
; RUN: opt < %s -dot-cfg -cfg-hide-unreachable-paths -cfg-hide-deoptimize-paths -cfg-dot-filename-prefix=%t/both-flags 2>/dev/null ; RUN: opt < %s -dot-cfg -cfg-hide-unreachable-paths -cfg-hide-deoptimize-paths -cfg-dot-filename-prefix=%t/both-flags 2>/dev/null > /dev/null
; RUN: FileCheck %s -input-file=%t/both-flags.callee.dot -check-prefix=BOTH-FLAGS ; RUN: FileCheck %s -input-file=%t/both-flags.callee.dot -check-prefix=BOTH-FLAGS
declare i8 @llvm.experimental.deoptimize.i8(...) declare i8 @llvm.experimental.deoptimize.i8(...)

View file

@ -783,7 +783,8 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
stdout = stdout, stdout = stdout,
stderr = stderr, stderr = stderr,
env = cmd_shenv.env, env = cmd_shenv.env,
close_fds = kUseCloseFDs)) close_fds = kUseCloseFDs,
universal_newlines = True))
proc_not_counts.append(not_count) proc_not_counts.append(not_count)
# Let the helper know about this process # Let the helper know about this process
timeoutHelper.addProcess(procs[-1]) timeoutHelper.addProcess(procs[-1])