-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
Expand file tree
/
Copy pathtest_displayhook.py
More file actions
116 lines (81 loc) · 3.49 KB
/
test_displayhook.py
File metadata and controls
116 lines (81 loc) · 3.49 KB
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
import sys
from IPython.testing.tools import AssertPrints, AssertNotPrints
from IPython.core.displayhook import CapturingDisplayHook
from IPython.utils.capture import CapturedIO
def test_output_displayed():
"""Checking to make sure that output is displayed"""
with AssertPrints("2"):
ip.run_cell("1+1", store_history=True)
with AssertPrints("2"):
ip.run_cell("1+1 # comment with a semicolon;", store_history=True)
with AssertPrints("2"):
ip.run_cell("1+1\n#commented_out_function();", store_history=True)
def test_output_quiet():
"""Checking to make sure that output is quiet"""
with AssertNotPrints("2"):
ip.run_cell("1+1;", store_history=True)
with AssertNotPrints("2"):
ip.run_cell("1+1; # comment with a semicolon", store_history=True)
with AssertNotPrints("2"):
ip.run_cell("1+1;\n#commented_out_function()", store_history=True)
def test_underscore_no_overwrite_user():
ip.run_cell("_ = 42", store_history=True)
ip.run_cell("1+1", store_history=True)
with AssertPrints("42"):
ip.run_cell("print(_)", store_history=True)
ip.run_cell("del _", store_history=True)
ip.run_cell("6+6", store_history=True)
with AssertPrints("12"):
ip.run_cell("_", store_history=True)
def test_underscore_no_overwrite_builtins():
ip.run_cell("import gettext ; gettext.install('foo')", store_history=True)
ip.run_cell("3+3", store_history=True)
with AssertPrints("gettext"):
ip.run_cell("print(_)", store_history=True)
ip.run_cell('_ = "userset"', store_history=True)
with AssertPrints("userset"):
ip.run_cell("print(_)", store_history=True)
ip.run_cell("import builtins; del builtins._")
def test_interactivehooks_ast_modes():
"""
Test that ast nodes can be triggered with different modes
"""
saved_mode = ip.ast_node_interactivity
ip.ast_node_interactivity = "last_expr_or_assign"
try:
with AssertPrints("2"):
ip.run_cell("a = 1+1", store_history=True)
with AssertPrints("9"):
ip.run_cell("b = 1+8 # comment with a semicolon;", store_history=False)
with AssertPrints("7"):
ip.run_cell("c = 1+6\n#commented_out_function();", store_history=True)
ip.run_cell("d = 11", store_history=True)
with AssertPrints("12"):
ip.run_cell("d += 1", store_history=True)
with AssertNotPrints("42"):
ip.run_cell("(u,v) = (41+1, 43-1)")
finally:
ip.ast_node_interactivity = saved_mode
def test_interactivehooks_ast_modes_semi_suppress():
"""
Test that ast nodes can be triggered with different modes and suppressed
by semicolon
"""
saved_mode = ip.ast_node_interactivity
ip.ast_node_interactivity = "last_expr_or_assign"
try:
with AssertNotPrints("2"):
ip.run_cell("x = 1+1;", store_history=True)
with AssertNotPrints("7"):
ip.run_cell("y = 1+6; # comment with a semicolon", store_history=True)
with AssertNotPrints("9"):
ip.run_cell("z = 1+8;\n#commented_out_function()", store_history=True)
finally:
ip.ast_node_interactivity = saved_mode
def test_capture_display_hook_format():
"""Tests that the capture display hook conforms to the CapturedIO output format"""
hook = CapturingDisplayHook(ip)
hook({"foo": "bar"})
captured = CapturedIO(sys.stdout, sys.stderr, hook.outputs)
# Should not raise with RichOutput transformation error
captured.outputs