File: test_rawinput.py

package info (click to toggle)
pypy3 7.0.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 111,848 kB
  • sloc: python: 1,291,746; ansic: 74,281; asm: 5,187; cpp: 3,017; sh: 2,533; makefile: 544; xml: 243; lisp: 45; csh: 21; awk: 4
file content (53 lines) | stat: -rw-r--r-- 1,897 bytes parent folder | download | duplicates (6)
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'