circuitpython/tests/io/file_stdio2.py
stephanelsmith db06041d59 extmod/vfs_posix_file: Implement sys.std*.buffer objects.
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>
2023-09-01 17:39:38 +10:00

66 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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("")