File: test_rawinput.py

package info (click to toggle)
pypy3 7.3.11%2Bdfsg-2%2Bdeb12u3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 201,024 kB
  • sloc: python: 1,950,308; ansic: 517,580; sh: 21,417; asm: 14,419; cpp: 4,263; makefile: 4,228; objc: 761; xml: 530; exp: 499; javascript: 314; pascal: 244; lisp: 45; csh: 11; awk: 4
file content (53 lines) | stat: -rw-r--r-- 1,897 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from __future__ import print_function


class AppTestRawInput():

    def test_input_and_raw_input(self):
        import sys, io
        flushed = [False]
        class CheckFlushed(io.StringIO):
            def flush(self):
                flushed[0] = True
                super().flush()
        for prompt, expected in [("def:", "abc/def:/ghi\n"),
                                 ("", "abc//ghi\n"),
                                 (42, "abc/42/ghi\n"),
                                 (None, "abc/None/ghi\n"),
                                 (Ellipsis, "abc//ghi\n")]:
            for inputfn, inputtext, gottext in [
                    (input, "foo\nbar\n", "foo")]:
                save = sys.stdin, sys.stdout, sys.stderr
                try:
                    sys.stdin = io.StringIO(inputtext)
                    out = sys.stdout = io.StringIO()
                    # Ensure that input flushes stderr
                    flushed = [False]
                    err = sys.stderr = CheckFlushed()
                    sys.stderr.write('foo')
                    print("abc", end='')
                    out.write('/')
                    if prompt is Ellipsis:
                        got = inputfn()
                    else:
                        got = inputfn(prompt)
                    out.write('/')
                    print("ghi")
                finally:
                    sys.stdin, sys.stdout, sys.stderr = save
                assert out.getvalue() == expected
                assert flushed[0]
                assert got == gottext

    def test_bad_fileno(self):
        import io
        import sys
        class BadFileno(io.StringIO):
            def fileno(self):
                1 / 0
        stdin, sys.stdin = sys.stdin, BadFileno('foo')
        try:
            result = input()
        finally:
            sys.stdin = stdin
        assert result == 'foo'