Show More
@@ -318,3 +318,7 b" skip_if_not_osx = skipif(sys.platform != 'darwin'," | |||
|
318 | 318 | skipif_not_numpy = skipif(numpy_not_available,"This test requires numpy") |
|
319 | 319 | |
|
320 | 320 | skipknownfailure = skip('This test is known to fail') |
|
321 | ||
|
322 | # A null 'decorator', useful to make more readable code that needs to pick | |
|
323 | # between different decorators based on OS or other conditions | |
|
324 | null_deco = lambda f: f |
@@ -45,6 +45,7 b' from nose.core import TestProgram' | |||
|
45 | 45 | from IPython.utils import genutils |
|
46 | 46 | from IPython.utils.platutils import find_cmd, FindCmdError |
|
47 | 47 | from . import globalipapp |
|
48 | from . import tools | |
|
48 | 49 | from .plugin.ipdoctest import IPythonDoctest |
|
49 | 50 | |
|
50 | 51 | pjoin = path.join |
@@ -57,6 +58,10 b' pjoin = path.join' | |||
|
57 | 58 | warnings.filterwarnings('ignore', 'the sets module is deprecated', |
|
58 | 59 | DeprecationWarning ) |
|
59 | 60 | |
|
61 | # This one also comes from Twisted | |
|
62 | warnings.filterwarnings('ignore', 'the sha module is deprecated', | |
|
63 | DeprecationWarning) | |
|
64 | ||
|
60 | 65 | #----------------------------------------------------------------------------- |
|
61 | 66 | # Logic for skipping doctests |
|
62 | 67 | #----------------------------------------------------------------------------- |
@@ -102,8 +107,11 b' def make_exclude():' | |||
|
102 | 107 | ipjoin('quarantine'), |
|
103 | 108 | ipjoin('deathrow'), |
|
104 | 109 | ipjoin('testing', 'attic'), |
|
105 | ipjoin('testing', 'tools'), | |
|
110 | # This guy is probably attic material | |
|
106 | 111 | ipjoin('testing', 'mkdoctests'), |
|
112 | # Testing inputhook will need a lot of thought, to figure out | |
|
113 | # how to have tests that don't lock up with the gui event | |
|
114 | # loops in the picture | |
|
107 | 115 | ipjoin('lib', 'inputhook'), |
|
108 | 116 | # Config files aren't really importable stand-alone |
|
109 | 117 | ipjoin('config', 'default'), |
@@ -193,9 +201,9 b' class IPTester(object):' | |||
|
193 | 201 | # path: |
|
194 | 202 | iptest_path = pjoin(genutils.get_ipython_package_dir(), |
|
195 | 203 | 'scripts','iptest') |
|
196 |
self.runner = [ |
|
|
204 | self.runner = tools.cmd2argv(iptest_path) + ['-v'] | |
|
197 | 205 | else: |
|
198 |
self.runner = |
|
|
206 | self.runner = tools.cmd2argv(os.path.abspath(find_cmd('trial'))) | |
|
199 | 207 | if params is None: |
|
200 | 208 | params = [] |
|
201 | 209 | if isinstance(params,str): |
@@ -52,8 +52,6 b" if sys.version[0]=='2':" | |||
|
52 | 52 | else: |
|
53 | 53 | from ._paramtestpy3 import ParametricTestCase |
|
54 | 54 | |
|
55 | from . import globalipapp | |
|
56 | ||
|
57 | 55 | #----------------------------------------------------------------------------- |
|
58 | 56 | # Classes and functions |
|
59 | 57 | #----------------------------------------------------------------------------- |
@@ -83,6 +81,8 b' class IPython2PythonConverter(object):' | |||
|
83 | 81 | |
|
84 | 82 | def __call__(self, ds): |
|
85 | 83 | """Convert IPython prompts to python ones in a string.""" |
|
84 | from . import globalipapp | |
|
85 | ||
|
86 | 86 | pyps1 = '>>> ' |
|
87 | 87 | pyps2 = '... ' |
|
88 | 88 | pyout = '' |
@@ -25,6 +25,7 b' Authors' | |||
|
25 | 25 | #----------------------------------------------------------------------------- |
|
26 | 26 | # Required modules and packages |
|
27 | 27 | #----------------------------------------------------------------------------- |
|
28 | from __future__ import absolute_import | |
|
28 | 29 | |
|
29 | 30 | import os |
|
30 | 31 | import re |
@@ -42,6 +43,8 b' except ImportError:' | |||
|
42 | 43 | |
|
43 | 44 | from IPython.utils import genutils, platutils |
|
44 | 45 | |
|
46 | from . import decorators as dec | |
|
47 | ||
|
45 | 48 | #----------------------------------------------------------------------------- |
|
46 | 49 | # Globals |
|
47 | 50 | #----------------------------------------------------------------------------- |
@@ -62,7 +65,11 b' if has_nose:' | |||
|
62 | 65 | # Functions and classes |
|
63 | 66 | #----------------------------------------------------------------------------- |
|
64 | 67 | |
|
68 | # The docstring for full_path doctests differently on win32 (different path | |
|
69 | # separator) so just skip the doctest there. The example remains informative. | |
|
70 | doctest_deco = dec.skip_doctest if sys.platform == 'win32' else dec.null_deco | |
|
65 | 71 | |
|
72 | @doctest_deco | |
|
66 | 73 | def full_path(startPath,files): |
|
67 | 74 | """Make full paths for all the listed files, based on startPath. |
|
68 | 75 | |
@@ -142,6 +149,40 b' def parse_test_output(txt):' | |||
|
142 | 149 | parse_test_output.__test__ = False |
|
143 | 150 | |
|
144 | 151 | |
|
152 | def cmd2argv(cmd): | |
|
153 | r"""Take the path of a command and return a list (argv-style). | |
|
154 | ||
|
155 | For a given path ``cmd``, this returns [cmd] if cmd's extension is .exe, | |
|
156 | .com or .bat, and ['python', cmd] otherwise. | |
|
157 | ||
|
158 | This is mostly a Windows utility, to deal with the fact that the scripts in | |
|
159 | Windows get wrapped in .exe entry points, so we have to call them | |
|
160 | differently. | |
|
161 | ||
|
162 | Parameters | |
|
163 | ---------- | |
|
164 | cmd : string | |
|
165 | The path of the command. | |
|
166 | ||
|
167 | Returns | |
|
168 | ------- | |
|
169 | argv-style list. | |
|
170 | ||
|
171 | Examples | |
|
172 | -------- | |
|
173 | In [2]: cmd2argv('/usr/bin/ipython') | |
|
174 | Out[2]: ['python', '/usr/bin/ipython'] | |
|
175 | ||
|
176 | In [3]: cmd2argv(r'C:\Python26\Scripts\ipython.exe') | |
|
177 | Out[3]: ['C:\\Python26\\Scripts\\ipython.exe'] | |
|
178 | """ | |
|
179 | ext = os.path.splitext(cmd)[1] | |
|
180 | if ext in ['.exe', '.com', '.bat']: | |
|
181 | return [cmd] | |
|
182 | else: | |
|
183 | return ['python', cmd] | |
|
184 | ||
|
185 | ||
|
145 | 186 | def temp_pyfile(src, ext='.py'): |
|
146 | 187 | """Make a temporary python file, return filename and filehandle. |
|
147 | 188 |
General Comments 0
You need to be logged in to leave comments.
Login now