summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/io/file_stdio.py1
-rw-r--r--tests/io/file_stdio2.py65
2 files changed, 66 insertions, 0 deletions
diff --git a/tests/io/file_stdio.py b/tests/io/file_stdio.py
index cbdb07016..d714bffd4 100644
--- a/tests/io/file_stdio.py
+++ b/tests/io/file_stdio.py
@@ -2,3 +2,4 @@ import sys
print(sys.stdin.fileno())
print(sys.stdout.fileno())
+print(sys.stderr.fileno())
diff --git a/tests/io/file_stdio2.py b/tests/io/file_stdio2.py
new file mode 100644
index 000000000..5b8a5a769
--- /dev/null
+++ b/tests/io/file_stdio2.py
@@ -0,0 +1,65 @@
+# 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("")