##// END OF EJS Templates
Fix the right inputhook...
Fix the right inputhook Interactive shell and debugger have similar code. The fix was applied to the wrong one, not sure how test were passing.

File last commit:

r25113:3ac47845
r25325:bcc84fb0
Show More
test_tools.py
135 lines | 4.1 KiB | text/x-python | PythonLexer
# encoding: utf-8
"""
Tests for testing.tools
"""
#-----------------------------------------------------------------------------
# Copyright (C) 2008-2011 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 os
import unittest
import nose.tools as nt
from IPython.testing import decorators as dec
from IPython.testing import tools as tt
#-----------------------------------------------------------------------------
# Tests
#-----------------------------------------------------------------------------
@dec.skip_win32
def test_full_path_posix():
spath = '/foo/bar.py'
result = tt.full_path(spath,['a.txt','b.txt'])
nt.assert_equal(result, ['/foo/a.txt', '/foo/b.txt'])
spath = '/foo'
result = tt.full_path(spath,['a.txt','b.txt'])
nt.assert_equal(result, ['/a.txt', '/b.txt'])
result = tt.full_path(spath,'a.txt')
nt.assert_equal(result, ['/a.txt'])
@dec.skip_if_not_win32
def test_full_path_win32():
spath = 'c:\\foo\\bar.py'
result = tt.full_path(spath,['a.txt','b.txt'])
nt.assert_equal(result, ['c:\\foo\\a.txt', 'c:\\foo\\b.txt'])
spath = 'c:\\foo'
result = tt.full_path(spath,['a.txt','b.txt'])
nt.assert_equal(result, ['c:\\a.txt', 'c:\\b.txt'])
result = tt.full_path(spath,'a.txt')
nt.assert_equal(result, ['c:\\a.txt'])
def test_parser():
err = ("FAILED (errors=1)", 1, 0)
fail = ("FAILED (failures=1)", 0, 1)
both = ("FAILED (errors=1, failures=1)", 1, 1)
for txt, nerr, nfail in [err, fail, both]:
nerr1, nfail1 = tt.parse_test_output(txt)
nt.assert_equal(nerr, nerr1)
nt.assert_equal(nfail, nfail1)
def test_temp_pyfile():
src = 'pass\n'
fname = tt.temp_pyfile(src)
assert os.path.isfile(fname)
with open(fname) as fh2:
src2 = fh2.read()
nt.assert_equal(src2, src)
class TestAssertPrints(unittest.TestCase):
def test_passing(self):
with tt.AssertPrints("abc"):
print("abcd")
print("def")
print(b"ghi")
def test_failing(self):
def func():
with tt.AssertPrints("abc"):
print("acd")
print("def")
print(b"ghi")
self.assertRaises(AssertionError, func)
class Test_ipexec_validate(tt.TempFileMixin):
def test_main_path(self):
"""Test with only stdout results.
"""
self.mktmp("print('A')\n"
"print('B')\n"
)
out = "A\nB"
tt.ipexec_validate(self.fname, out)
def test_main_path2(self):
"""Test with only stdout results, expecting windows line endings.
"""
self.mktmp("print('A')\n"
"print('B')\n"
)
out = "A\r\nB"
tt.ipexec_validate(self.fname, out)
def test_exception_path(self):
"""Test exception path in exception_validate.
"""
self.mktmp("import sys\n"
"print('A')\n"
"print('B')\n"
"print('C', file=sys.stderr)\n"
"print('D', file=sys.stderr)\n"
)
out = "A\nB"
tt.ipexec_validate(self.fname, expected_out=out, expected_err="C\nD")
def test_exception_path2(self):
"""Test exception path in exception_validate, expecting windows line endings.
"""
self.mktmp("import sys\n"
"print('A')\n"
"print('B')\n"
"print('C', file=sys.stderr)\n"
"print('D', file=sys.stderr)\n"
)
out = "A\r\nB"
tt.ipexec_validate(self.fname, expected_out=out, expected_err="C\r\nD")
def tearDown(self):
# tear down correctly the mixin,
# unittest.TestCase.tearDown does nothing
tt.TempFileMixin.tearDown(self)