##// END OF EJS Templates
move eventful to traitlets
move eventful to traitlets

File last commit:

r13348:e6afea51
r21167:55eb34f5
Show More
test_tools.py
134 lines | 4.2 KiB | text/x-python | PythonLexer
Brian Granger
Adding test_tools.py
r1983 # encoding: utf-8
"""
Tests for testing.tools
"""
#-----------------------------------------------------------------------------
Matthias BUSSONNIER
update copyright to 2011/20xx-2011...
r5390 # Copyright (C) 2008-2011 The IPython Development Team
Brian Granger
Adding test_tools.py
r1983 #
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
Fernando Perez
More win32 test fixes and a new test....
r2451 from __future__ import with_statement
Thomas Kluyver
Convert print statements to print function calls...
r13348 from __future__ import print_function
Brian Granger
Adding test_tools.py
r1983
import os
Thomas Kluyver
Add AssertPrints context manager to check output from tests.
r4901 import unittest
Brian Granger
Adding test_tools.py
r1983
import nose.tools as nt
from IPython.testing import decorators as dec
Fernando Perez
More win32 test fixes and a new test....
r2451 from IPython.testing import tools as tt
Brian Granger
Adding test_tools.py
r1983
#-----------------------------------------------------------------------------
# Tests
#-----------------------------------------------------------------------------
@dec.skip_win32
def test_full_path_posix():
spath = '/foo/bar.py'
Fernando Perez
More win32 test fixes and a new test....
r2451 result = tt.full_path(spath,['a.txt','b.txt'])
Brian Granger
Adding test_tools.py
r1983 nt.assert_equal(result, ['/foo/a.txt', '/foo/b.txt'])
spath = '/foo'
Fernando Perez
More win32 test fixes and a new test....
r2451 result = tt.full_path(spath,['a.txt','b.txt'])
Brian Granger
Adding test_tools.py
r1983 nt.assert_equal(result, ['/a.txt', '/b.txt'])
Fernando Perez
More win32 test fixes and a new test....
r2451 result = tt.full_path(spath,'a.txt')
Brian Granger
Adding test_tools.py
r1983 nt.assert_equal(result, ['/a.txt'])
@dec.skip_if_not_win32
def test_full_path_win32():
spath = 'c:\\foo\\bar.py'
Fernando Perez
More win32 test fixes and a new test....
r2451 result = tt.full_path(spath,['a.txt','b.txt'])
Brian Granger
Adding test_tools.py
r1983 nt.assert_equal(result, ['c:\\foo\\a.txt', 'c:\\foo\\b.txt'])
spath = 'c:\\foo'
Fernando Perez
More win32 test fixes and a new test....
r2451 result = tt.full_path(spath,['a.txt','b.txt'])
Brian Granger
Adding test_tools.py
r1983 nt.assert_equal(result, ['c:\\a.txt', 'c:\\b.txt'])
Fernando Perez
More win32 test fixes and a new test....
r2451 result = tt.full_path(spath,'a.txt')
Fernando Perez
Add test utility for parsing test output from stdout/stderr
r2353 nt.assert_equal(result, ['c:\\a.txt'])
Fernando Perez
More win32 test fixes and a new test....
r2451
Fernando Perez
Add test utility for parsing test output from stdout/stderr
r2353 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]:
Fernando Perez
More win32 test fixes and a new test....
r2451 nerr1, nfail1 = tt.parse_test_output(txt)
Thomas Kluyver
Remove tests for parametric test machinery
r12371 nt.assert_equal(nerr, nerr1)
nt.assert_equal(nfail, nfail1)
Fernando Perez
More win32 test fixes and a new test....
r2451
def test_temp_pyfile():
src = 'pass\n'
fname, fh = tt.temp_pyfile(src)
Thomas Kluyver
Remove tests for parametric test machinery
r12371 assert os.path.isfile(fname)
Fernando Perez
More win32 test fixes and a new test....
r2451 fh.close()
with open(fname) as fh2:
src2 = fh2.read()
Thomas Kluyver
Remove tests for parametric test machinery
r12371 nt.assert_equal(src2, src)
Thomas Kluyver
Add AssertPrints context manager to check output from tests.
r4901
class TestAssertPrints(unittest.TestCase):
def test_passing(self):
with tt.AssertPrints("abc"):
Thomas Kluyver
Convert print statements to print function calls...
r13348 print("abcd")
print("def")
print(b"ghi")
Thomas Kluyver
Add AssertPrints context manager to check output from tests.
r4901
def test_failing(self):
def func():
with tt.AssertPrints("abc"):
Thomas Kluyver
Convert print statements to print function calls...
r13348 print("acd")
print("def")
print(b"ghi")
Thomas Kluyver
Add AssertPrints context manager to check output from tests.
r4901
self.assertRaises(AssertionError, func)
Jörgen Stenarson
Adding tests and another line normalization for stderr.
r8291
class Test_ipexec_validate(unittest.TestCase, 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)
Jörgen Stenarson
Adding tests expecting windows lineendings.
r8293 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)
Jörgen Stenarson
Adding tests and another line normalization for stderr.
r8291 def test_exception_path(self):
"""Test exception path in exception_validate.
"""
self.mktmp("from __future__ import print_function\n"
"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")
Jörgen Stenarson
Adding tests expecting windows lineendings.
r8293
Thomas Kluyver
Remove unused imports in IPython.testing
r11133 def test_exception_path2(self):
Jörgen Stenarson
Adding tests expecting windows lineendings.
r8293 """Test exception path in exception_validate, expecting windows line endings.
"""
self.mktmp("from __future__ import print_function\n"
"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")