##// END OF EJS Templates
Adding test for safe_execfile call with non-ascii path
Jörgen Stenarson -
Show More
@@ -2257,8 +2257,12 b' class InteractiveShell(SingletonConfigurable, Magic):'
2257 2257 exit_ignore : bool (False)
2258 2258 If True, then silence SystemExit for non-zero status (it is always
2259 2259 silenced for zero status, as it is so common).
2260 raise_exceptions : bool (False)
2261 If True raise exceptions everywhere. Meant for testing.
2262
2260 2263 """
2261 2264 kw.setdefault('exit_ignore', False)
2265 kw.setdefault('raise_exceptions', False)
2262 2266
2263 2267 fname = os.path.abspath(os.path.expanduser(fname))
2264 2268
@@ -2288,9 +2292,13 b' class InteractiveShell(SingletonConfigurable, Magic):'
2288 2292 # 0
2289 2293 # For other exit status, we show the exception unless
2290 2294 # explicitly silenced, but only in short form.
2295 if kw['raise_exceptions']:
2296 raise
2291 2297 if status.code not in (0, None) and not kw['exit_ignore']:
2292 2298 self.showtraceback(exception_only=True)
2293 2299 except:
2300 if kw['raise_exceptions']:
2301 raise
2294 2302 self.showtraceback()
2295 2303
2296 2304 def safe_execfile_ipy(self, fname):
@@ -1,3 +1,4 b''
1 # -*- coding: utf-8 -*-
1 2 """Tests for the key interactiveshell module.
2 3
3 4 Historically the main classes in interactiveshell have been under-tested. This
@@ -19,7 +20,11 b' Authors'
19 20 # Imports
20 21 #-----------------------------------------------------------------------------
21 22 # stdlib
23 import os
24 import shutil
25 import tempfile
22 26 import unittest
27 from os.path import join
23 28 from StringIO import StringIO
24 29
25 30 from IPython.testing import decorators as dec
@@ -193,3 +198,25 b' class InteractiveShellTestCase(unittest.TestCase):'
193 198 assert name not in ip.user_ns_hidden, name
194 199 assert ip.user_ns['b'] == 12
195 200 ip.reset()
201
202 class TestSafeExecfileNonAsciiPath(unittest.TestCase):
203
204 def setUp(self):
205 self.BASETESTDIR = tempfile.mkdtemp()
206 self.TESTDIR = join(self.BASETESTDIR, u"åäö")
207 os.mkdir(self.TESTDIR)
208 with open(join(self.TESTDIR, u"åäötestscript.py"), "w") as sfile:
209 sfile.write("pass\n")
210 self.oldpath = os.getcwdu()
211 os.chdir(self.TESTDIR)
212 self.fname = u"åäötestscript.py"
213
214
215 def tearDown(self):
216 os.chdir(self.oldpath)
217 shutil.rmtree(self.BASETESTDIR)
218
219 def test_1(self):
220 """Test safe_execfile with non-ascii path
221 """
222 _ip.shell.safe_execfile(self.fname, raise_exceptions=True)
@@ -153,7 +153,7 b' else:'
153 153 return s.format(u='u')
154 154
155 155 if sys.platform == 'win32':
156 def execfile(fname, glob, loc=None):
156 def execfile(fname, glob=None, loc=None):
157 157 loc = loc if (loc is not None) else glob
158 158 scripttext = __builtin__.open(fname).read()
159 159 #compile converts unicode filename to str assuming
@@ -164,7 +164,7 b' else:'
164 164 filename = fname
165 165 exec compile(scripttext, filename, 'exec') in glob, loc
166 166 else:
167 def execfile(fname, glob, loc=None):
167 def execfile(fname, glob=None, loc=None):
168 168 if isinstance(fname, unicode):
169 169 filename = fname.encode(sys.getfilesystemencoding())
170 170 else:
General Comments 0
You need to be logged in to leave comments. Login now