forked from OSchip/llvm-project
27 lines
1.0 KiB
Plaintext
27 lines
1.0 KiB
Plaintext
## Test that when writing to a closed stdout, LLVM tools finish with a non-zero
|
|
## exit code and an error message on stderr. The test uses llvm-cxxfilt, but
|
|
## it's a logic from the default SIGPIPE handler, so it applies to all the tools.
|
|
## This is required for UNIX03 conformance.
|
|
|
|
# UNSUPPORTED: system-windows
|
|
|
|
# RUN: not %python %s llvm-cxxfilt 2>&1 | FileCheck %s
|
|
# CHECK: error: write on a pipe with no reader
|
|
|
|
import subprocess
|
|
import sys
|
|
|
|
with subprocess.Popen([sys.argv[1]], stdout=subprocess.PIPE, stdin=subprocess.PIPE) as process:
|
|
process.stdout.close()
|
|
|
|
# llvm-cxxfilt with no extra arguments runs interactively and writes input
|
|
# to output. Writing continuously to stdin should trigger SIGPIPE when the
|
|
# subprocess attempts to write out bytes to a closed stdout.
|
|
try:
|
|
while True:
|
|
process.stdin.write("foo\n".encode("utf-8"))
|
|
except BrokenPipeError:
|
|
# Clear stdin, pipe is broken and closing it on cleanup will raise an exception.
|
|
process.stdin = None
|
|
sys.exit(process.returncode)
|