xref: /llvm-project/llvm/test/tools/llvm-symbolizer/Inputs/flush-output.py (revision b71edfaa4ec3c998aadb35255ce2f60bba2940b0)
1from __future__ import print_function
2import os
3import subprocess
4import sys
5import threading
6
7
8def kill_subprocess(process):
9    process.kill()
10    os._exit(1)
11
12
13# Pass -f=none and --output-style=GNU to get only one line of output per input.
14cmd = subprocess.Popen(
15    [sys.argv[1], "--obj=" + sys.argv[2], "-f=none", "--output-style=GNU"],
16    stdout=subprocess.PIPE,
17    stdin=subprocess.PIPE,
18)
19watchdog = threading.Timer(20, kill_subprocess, args=[cmd])
20watchdog.start()
21cmd.stdin.write(b"0\n")
22cmd.stdin.flush()
23print(cmd.stdout.readline())
24cmd.stdin.write(b"bad\n")
25cmd.stdin.flush()
26print(cmd.stdout.readline())
27watchdog.cancel()
28