##// END OF EJS Templates
fallback on lsof if otool not found in libedit detection...
fallback on lsof if otool not found in libedit detection This is necessary for Macs without XCode. It also prevents a crash in the unlikely event that neither is found. lsof detection is vulnerable to false positives if other (non-readline) modules are linked against libedit, but this is also unlikely. closes gh-524

File last commit:

r3291:6aff23d2
r3937:f1278cba
Show More
test_process.py
98 lines | 3.2 KiB | text/x-python | PythonLexer
Brian Granger
Adding test_platutils.py.
r1976 # encoding: utf-8
"""
Tests for platutils.py
"""
#-----------------------------------------------------------------------------
# Copyright (C) 2008-2009 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
import sys
Fernando Perez
Fully refactored subprocess handling on all platforms....
r2908 from unittest import TestCase
Brian Granger
Adding test_platutils.py.
r1976
import nose.tools as nt
Fernando Perez
Fully refactored subprocess handling on all platforms....
r2908 from IPython.utils.process import (find_cmd, FindCmdError, arg_split,
system, getoutput, getoutputerror)
Brian Granger
Adding test_platutils.py.
r1976 from IPython.testing import decorators as dec
Fernando Perez
Fully refactored subprocess handling on all platforms....
r2908 from IPython.testing import tools as tt
Brian Granger
Adding test_platutils.py.
r1976
#-----------------------------------------------------------------------------
# Tests
#-----------------------------------------------------------------------------
def test_find_cmd_python():
"""Make sure we find sys.exectable for python."""
nt.assert_equals(find_cmd('python'), sys.executable)
Fernando Perez
More win32 fixes and refinements to test suite.
r2453
Brian Granger
Adding test_platutils.py.
r1976 @dec.skip_win32
Fernando Perez
More win32 fixes and refinements to test suite.
r2453 def test_find_cmd_ls():
Brian Granger
Adding test_platutils.py.
r1976 """Make sure we can find the full path to ls."""
path = find_cmd('ls')
nt.assert_true(path.endswith('ls'))
Fernando Perez
More win32 fixes and refinements to test suite.
r2453
def has_pywin32():
try:
import win32api
except ImportError:
return False
return True
@dec.onlyif(has_pywin32, "This test requires win32api to run")
def test_find_cmd_pythonw():
Brian Granger
Adding test_platutils.py.
r1976 """Try to find pythonw on Windows."""
path = find_cmd('pythonw')
nt.assert_true(path.endswith('pythonw.exe'))
Fernando Perez
More win32 fixes and refinements to test suite.
r2453
@dec.onlyif(lambda : sys.platform != 'win32' or has_pywin32(),
"This test runs on posix or in win32 with win32api installed")
Brian Granger
Adding test_platutils.py.
r1976 def test_find_cmd_fail():
"""Make sure that FindCmdError is raised if we can't find the cmd."""
nt.assert_raises(FindCmdError,find_cmd,'asdfasdf')
Administrator
Added platutils.get_long_path_name to expand paths with "~" on win32....
r1986
Fernando Perez
More win32 fixes and refinements to test suite.
r2453
Fernando Perez
Work around a bug in Python's shlex module with unicode input....
r2650 def test_arg_split():
"""Ensure that argument lines are correctly split like in a shell."""
tests = [['hi', ['hi']],
[u'hi', [u'hi']],
Robert Kern
BUG: when given unicode inputs, arg_split should return unicode outputs. Always use utf-8 to encode the string instead of relying on sys.stdin.encoding, which may not be able to accept the full range of Unicode characters. When given unicode strings, arg_split is probably not receiving input from a terminal.
r3291 ['hello there', ['hello', 'there']],
[u'h\N{LATIN SMALL LETTER A WITH CARON}llo', [u'h\N{LATIN SMALL LETTER A WITH CARON}llo']],
['something "with quotes"', ['something', '"with quotes"']],
Fernando Perez
Work around a bug in Python's shlex module with unicode input....
r2650 ]
for argstr, argv in tests:
nt.assert_equal(arg_split(argstr), argv)
Fernando Perez
Fully refactored subprocess handling on all platforms....
r2908
class SubProcessTestCase(TestCase, tt.TempFileMixin):
def setUp(self):
"""Make a valid python temp file."""
lines = ["from __future__ import print_function",
"import sys",
"print('on stdout', end='', file=sys.stdout)",
"print('on stderr', end='', file=sys.stderr)",
"sys.stdout.flush()",
"sys.stderr.flush()"]
self.mktmp('\n'.join(lines))
def test_system(self):
system('python "%s"' % self.fname)
def test_getoutput(self):
out = getoutput('python "%s"' % self.fname)
self.assertEquals(out, 'on stdout')
def test_getoutput(self):
out, err = getoutputerror('python "%s"' % self.fname)
self.assertEquals(out, 'on stdout')
self.assertEquals(err, 'on stderr')