Show More
@@ -72,7 +72,7 b' class ipnsdict(dict):' | |||
|
72 | 72 | def clear(self): |
|
73 | 73 | dict.clear(self) |
|
74 | 74 | self.update(self._savedict) |
|
75 | ||
|
75 | ||
|
76 | 76 | def _checkpoint(self): |
|
77 | 77 | self._savedict.clear() |
|
78 | 78 | self._savedict.update(self) |
@@ -127,17 +127,30 b' def start_ipython():' | |||
|
127 | 127 | _excepthook = sys.excepthook |
|
128 | 128 | _main = sys.modules.get('__main__') |
|
129 | 129 | |
|
130 | # Create custom argv and namespaces for our IPython to be test-friendly | |
|
130 | 131 | argv = tools.default_argv() |
|
132 | user_ns, global_ns = iplib.make_user_namespaces(ipnsdict(), {}) | |
|
131 | 133 | |
|
132 | # Start IPython instance. We customize it to start with minimal frills. | |
|
133 | user_ns,global_ns = iplib.make_user_namespaces(ipnsdict(),{}) | |
|
134 | # Create and initialize our test-friendly IPython instance. | |
|
134 | 135 | ip = ipapp.IPythonApp(argv, user_ns=user_ns, user_global_ns=global_ns) |
|
135 | 136 | ip.initialize() |
|
137 | ||
|
138 | # A few more tweaks needed for playing nicely with doctests... | |
|
139 | ||
|
140 | # These traps are normally only active for interactive use, set them | |
|
141 | # permanently since we'll be mocking interactive sessions. | |
|
136 | 142 | ip.shell.builtin_trap.set() |
|
137 | 143 | |
|
138 | 144 | # Set error printing to stdout so nose can doctest exceptions |
|
139 | 145 | ip.shell.InteractiveTB.out_stream = 'stdout' |
|
140 | 146 | |
|
147 | # Modify the IPython system call with one that uses getoutput, so that we | |
|
148 | # can capture subcommands and print them to Python's stdout, otherwise the | |
|
149 | # doctest machinery would miss them. | |
|
150 | ip.shell.system = xsys | |
|
151 | ||
|
152 | # IPython is ready, now clean up some global state... | |
|
153 | ||
|
141 | 154 | # Deactivate the various python system hooks added by ipython for |
|
142 | 155 | # interactive convenience so we don't confuse the doctest system |
|
143 | 156 | sys.modules['__main__'] = _main |
@@ -146,15 +159,10 b' def start_ipython():' | |||
|
146 | 159 | |
|
147 | 160 | # So that ipython magics and aliases can be doctested (they work by making |
|
148 | 161 | # a call into a global _ip object). Also make the top-level get_ipython |
|
149 | # now return this without calling here again | |
|
162 | # now return this without recursively calling here again. | |
|
150 | 163 | _ip = ip.shell |
|
151 | 164 | get_ipython = _ip.get_ipython |
|
152 | 165 | __builtin__._ip = _ip |
|
153 | 166 | __builtin__.get_ipython = get_ipython |
|
154 | 167 | |
|
155 | # Modify the IPython system call with one that uses getoutput, so that we | |
|
156 | # can capture subcommands and print them to Python's stdout, otherwise the | |
|
157 | # doctest machinery would miss them. | |
|
158 | ip.shell.system = xsys | |
|
159 | ||
|
160 | 168 | return _ip |
General Comments 0
You need to be logged in to leave comments.
Login now