##// END OF EJS Templates
use dirty event to set autosaved/unsaved changes...
use dirty event to set autosaved/unsaved changes instead of last-saved timestamp

File last commit:

r8293:047f6bd2
r10829:483848a0
Show More
test_tools.py
136 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
Brian Granger
Adding test_tools.py
r1983
import os
import sys
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
@dec.parametric
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)
yield nt.assert_equal(nerr, nerr1)
yield nt.assert_equal(nfail, nfail1)
@dec.parametric
def test_temp_pyfile():
src = 'pass\n'
fname, fh = tt.temp_pyfile(src)
yield nt.assert_true(os.path.isfile(fname))
fh.close()
with open(fname) as fh2:
src2 = fh2.read()
yield 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"):
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)
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
def test_exception_path(self):
"""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")