db06041d59
Add the buffer attribute to sys.stdin, sys.stdout and sys.stderr. This provides raw access to underlying stdio streams for the unix port (and others that use VfsPosix). Signed-off-by: stephanelsmith <stephane.smith@titansensor.com>
66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
# Test sys.std*.buffer objects.
|
||
|
||
import sys
|
||
|
||
try:
|
||
sys.stdout.buffer
|
||
sys.stdin.buffer
|
||
sys.stderr.buffer
|
||
except AttributeError:
|
||
print("SKIP")
|
||
raise SystemExit
|
||
|
||
|
||
# force cpython to flush after every print
|
||
# this is to sequence stdout and stderr
|
||
def print_flush(*args, **kwargs):
|
||
try:
|
||
print(*args, **kwargs, flush=True)
|
||
except TypeError:
|
||
print(*args, **kwargs)
|
||
|
||
|
||
print_flush("==stdin==")
|
||
print_flush(sys.stdin.buffer.fileno())
|
||
|
||
|
||
print_flush("==stdout==")
|
||
print_flush(sys.stdout.buffer.fileno())
|
||
n_text = sys.stdout.write("The quick brown fox jumps over the lazy dog\n")
|
||
sys.stdout.flush()
|
||
n_binary = sys.stdout.buffer.write("The quick brown fox jumps over the lazy dog\n".encode("utf-8"))
|
||
sys.stdout.buffer.flush()
|
||
print_flush("n_text:{} n_binary:{}".format(n_text, n_binary))
|
||
|
||
# temporarily disabling unicode tests until future PR which fixes unicode write character count
|
||
# n_text = sys.stdout.write("🚀")
|
||
# sys.stdout.flush()
|
||
# n_binary = sys.stdout.buffer.write("🚀".encode("utf-8"))
|
||
# sys.stdout.buffer.flush()
|
||
# print_flush("")
|
||
# print_flush("n_text:{} n_binary:{}".format(n_text, n_binary))
|
||
# n_text = sys.stdout.write("1🚀2a3α4b5β6c7γ8d9δ0ぁ1🙐")
|
||
# sys.stdout.flush()
|
||
# n_binary = sys.stdout.buffer.write("1🚀2a3α4b5β6c7γ8d9δ0ぁ1🙐".encode("utf-8"))
|
||
# sys.stdout.buffer.flush()
|
||
# print_flush("")
|
||
# print_flush("n_text:{} n_binary:{}".format(n_text, n_binary))
|
||
|
||
|
||
print_flush("==stderr==")
|
||
print_flush(sys.stderr.buffer.fileno())
|
||
n_text = sys.stderr.write("The quick brown fox jumps over the lazy dog\n")
|
||
sys.stderr.flush()
|
||
n_binary = sys.stderr.buffer.write("The quick brown fox jumps over the lazy dog\n".encode("utf-8"))
|
||
sys.stderr.buffer.flush()
|
||
print_flush("n_text:{} n_binary:{}".format(n_text, n_binary))
|
||
|
||
# temporarily disabling unicode tests until future PR which fixes unicode write character count
|
||
# n_text = sys.stderr.write("🚀")
|
||
# sys.stderr.flush()
|
||
# n_binary = sys.stderr.buffer.write("🚀".encode("utf-8"))
|
||
# sys.stderr.buffer.flush()
|
||
# print_flush("")
|
||
# print_flush("n_text:{} n_binary:{}".format(n_text, n_binary))
|
||
# print_flush("")
|