FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
bpython/bpython/test/test_interpreter.py at master · niloct/bpython · GitHub
niloct
/
bpython
Public
forked from
bpython/bpython
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
1
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
bpython
/
bpython
/
test
/
test_interpreter.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
121 lines (98 loc) · 3.36 KB
Breadcrumbs
bpython
/
bpython
/
test
/
test_interpreter.py
Copy path
File metadata and controls
121 lines (98 loc) · 3.36 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import
sys
import
re
from
curtsies
.
fmtfuncs
import
bold
,
green
,
magenta
,
cyan
,
red
,
plain
from
bpython
.
curtsiesfrontend
import
interpreter
from
bpython
.
test
import
mock
,
unittest
pypy
=
"PyPy"
in
sys
.
version
def
remove_ansi
(
s
):
return
re
.
sub
(
r"(\x9B|\x1B\[)[0-?]*[ -\/]*[@-~]"
.
encode
(
"ascii"
),
b""
,
s
)
class
TestInterpreter
(
unittest
.
TestCase
):
def
interp_errlog
(
self
):
i
=
interpreter
.
Interp
()
a
=
[]
i
.
write
=
a
.
append
return
i
,
a
def
err_lineno
(
self
,
a
):
strings
=
[
x
.
__unicode__
()
for
x
in
a
]
for
line
in
reversed
(
strings
):
clean_line
=
remove_ansi
(
line
)
m
=
re
.
search
(
r"line (\d+)[,]"
,
clean_line
)
if
m
:
return
int
(
m
.
group
(
1
))
return
None
def
test_syntaxerror
(
self
):
i
,
a
=
self
.
interp_errlog
()
i
.
runsource
(
"1.1.1.1"
)
if
sys
.
version_info
[:
2
]
>=
(
3
,
8
):
expected
=
(
" File "
+
green
(
'"<input>"'
)
+
", line "
+
bold
(
magenta
(
"1"
))
+
"
\n
1.1.1.1
\n
^
\n
"
+
bold
(
red
(
"SyntaxError"
))
+
": "
+
cyan
(
"invalid syntax"
)
+
"
\n
"
)
elif
pypy
:
expected
=
(
" File "
+
green
(
'"<input>"'
)
+
", line "
+
bold
(
magenta
(
"1"
))
+
"
\n
1.1.1.1
\n
^
\n
"
+
bold
(
red
(
"SyntaxError"
))
+
": "
+
cyan
(
"invalid syntax"
)
+
"
\n
"
)
else
:
expected
=
(
" File "
+
green
(
'"<input>"'
)
+
", line "
+
bold
(
magenta
(
"1"
))
+
"
\n
1.1.1.1
\n
^
\n
"
+
bold
(
red
(
"SyntaxError"
))
+
": "
+
cyan
(
"invalid syntax"
)
+
"
\n
"
)
self
.
assertMultiLineEqual
(
str
(
plain
(
""
).
join
(
a
)),
str
(
expected
))
self
.
assertEqual
(
plain
(
""
).
join
(
a
),
expected
)
def
test_traceback
(
self
):
i
,
a
=
self
.
interp_errlog
()
def
f
():
return
1
/
0
def
gfunc
():
return
f
()
i
.
runsource
(
"gfunc()"
)
global_not_found
=
"name 'gfunc' is not defined"
expected
=
(
"Traceback (most recent call last):
\n
File "
+
green
(
'"<input>"'
)
+
", line "
+
bold
(
magenta
(
"1"
))
+
", in "
+
cyan
(
"<module>"
)
+
"
\n
gfunc()
\n
"
+
bold
(
red
(
"NameError"
))
+
": "
+
cyan
(
global_not_found
)
+
"
\n
"
)
self
.
assertMultiLineEqual
(
str
(
plain
(
""
).
join
(
a
)),
str
(
expected
))
self
.
assertEqual
(
plain
(
""
).
join
(
a
),
expected
)
def
test_runsource_bytes_over_128_syntax_error_py3
(
self
):
i
=
interpreter
.
Interp
(
encoding
=
b"latin-1"
)
i
.
showsyntaxerror
=
mock
.
Mock
(
return_value
=
None
)
i
.
runsource
(
"a = b'
\xfe
'"
)
i
.
showsyntaxerror
.
assert_called_with
(
mock
.
ANY
)
def
test_getsource_works_on_interactively_defined_functions
(
self
):
source
=
"def foo(x):
\n
return x + 1
\n
"
i
=
interpreter
.
Interp
()
i
.
runsource
(
source
)
import
inspect
inspected_source
=
inspect
.
getsource
(
i
.
locals
[
"foo"
])
self
.
assertEqual
(
inspected_source
,
source
)
Back
|
FazBrowse Home
|
New Git URL