##// END OF EJS Templates
FileLink: accept path-like objects (#11059)...
FileLink: accept path-like objects (#11059) Accept path-like objects by converting them to strings using `os.fsdecode`. From the Python 3 [glossary][1]: > `os.fsdecode()` and `os.fsencode()` can be used to guarantee a `str` > or `bytes` result N.B. `os.fsdecode` accepts path-like objects starting with Python 3.6, so users of older versions still can't use FileLink with path-like objects. [1]: https://docs.python.org/3/glossary.html#term-path-like-object

File last commit:

r23294:7e3493b7
r24227:707258ee
Show More
test_editorhooks.py
34 lines | 941 B | text/x-python | PythonLexer
"""Test installing editor hooks"""
import sys
from unittest import mock
import nose.tools as nt
from IPython import get_ipython
from IPython.lib import editorhooks
def test_install_editor():
called = []
def fake_popen(*args, **kwargs):
called.append({
'args': args,
'kwargs': kwargs,
})
return mock.MagicMock(**{'wait.return_value': 0})
editorhooks.install_editor('foo -l {line} -f {filename}', wait=False)
with mock.patch('subprocess.Popen', fake_popen):
get_ipython().hooks.editor('the file', 64)
nt.assert_equal(len(called), 1)
args = called[0]['args']
kwargs = called[0]['kwargs']
nt.assert_equal(kwargs, {'shell': True})
if sys.platform.startswith('win'):
expected = ['foo', '-l', '64', '-f', 'the file']
else:
expected = "foo -l 64 -f 'the file'"
cmd = args[0]
nt.assert_equal(cmd, expected)