test_tools.py
133 lines
| 4.0 KiB
| text/x-python
|
PythonLexer
Brian Granger
|
r1983 | # encoding: utf-8 | ||
""" | ||||
Tests for testing.tools | ||||
""" | ||||
#----------------------------------------------------------------------------- | ||||
Matthias BUSSONNIER
|
r5390 | # Copyright (C) 2008-2011 The IPython Development Team | ||
Brian Granger
|
r1983 | # | ||
# 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 | ||||
Thomas Kluyver
|
r4901 | import unittest | ||
Brian Granger
|
r1983 | |||
from IPython.testing import decorators as dec | ||||
Fernando Perez
|
r2451 | from IPython.testing import tools as tt | ||
Brian Granger
|
r1983 | |||
#----------------------------------------------------------------------------- | ||||
# Tests | ||||
#----------------------------------------------------------------------------- | ||||
@dec.skip_win32 | ||||
def test_full_path_posix(): | ||||
Samuel Gaist
|
r26885 | spath = "/foo/bar.py" | ||
result = tt.full_path(spath, ["a.txt", "b.txt"]) | ||||
assert result, ["/foo/a.txt" == "/foo/b.txt"] | ||||
spath = "/foo" | ||||
result = tt.full_path(spath, ["a.txt", "b.txt"]) | ||||
assert result, ["/a.txt" == "/b.txt"] | ||||
result = tt.full_path(spath, "a.txt") | ||||
assert result == ["/a.txt"] | ||||
Brian Granger
|
r1983 | |||
@dec.skip_if_not_win32 | ||||
def test_full_path_win32(): | ||||
Samuel Gaist
|
r26885 | spath = "c:\\foo\\bar.py" | ||
result = tt.full_path(spath, ["a.txt", "b.txt"]) | ||||
assert result, ["c:\\foo\\a.txt" == "c:\\foo\\b.txt"] | ||||
spath = "c:\\foo" | ||||
result = tt.full_path(spath, ["a.txt", "b.txt"]) | ||||
assert result, ["c:\\a.txt" == "c:\\b.txt"] | ||||
result = tt.full_path(spath, "a.txt") | ||||
assert result == ["c:\\a.txt"] | ||||
Fernando Perez
|
r2353 | |||
Fernando Perez
|
r2451 | |||
Fernando Perez
|
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
|
r2451 | nerr1, nfail1 = tt.parse_test_output(txt) | ||
Samuel Gaist
|
r26885 | assert nerr == nerr1 | ||
assert nfail == nfail1 | ||||
Thomas Kluyver
|
r12371 | |||
Fernando Perez
|
r2451 | |||
def test_temp_pyfile(): | ||||
src = 'pass\n' | ||||
Matthias Bussonnier
|
r25106 | fname = tt.temp_pyfile(src) | ||
Thomas Kluyver
|
r12371 | assert os.path.isfile(fname) | ||
Fernando Perez
|
r2451 | with open(fname) as fh2: | ||
src2 = fh2.read() | ||||
Samuel Gaist
|
r26885 | assert src2 == src | ||
Thomas Kluyver
|
r4901 | |||
class TestAssertPrints(unittest.TestCase): | ||||
def test_passing(self): | ||||
with tt.AssertPrints("abc"): | ||||
Thomas Kluyver
|
r13348 | print("abcd") | ||
print("def") | ||||
print(b"ghi") | ||||
Thomas Kluyver
|
r4901 | |||
def test_failing(self): | ||||
def func(): | ||||
with tt.AssertPrints("abc"): | ||||
Thomas Kluyver
|
r13348 | print("acd") | ||
print("def") | ||||
print(b"ghi") | ||||
Thomas Kluyver
|
r4901 | |||
self.assertRaises(AssertionError, func) | ||||
Jörgen Stenarson
|
r8291 | |||
Matthias Bussonnier
|
r25113 | class Test_ipexec_validate(tt.TempFileMixin): | ||
Jörgen Stenarson
|
r8291 | 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
|
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
|
r8291 | def test_exception_path(self): | ||
"""Test exception path in exception_validate. | ||||
""" | ||||
Paul Ivanov
|
r22963 | self.mktmp("import sys\n" | ||
Jörgen Stenarson
|
r8291 | "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
|
r8293 | |||
Thomas Kluyver
|
r11133 | def test_exception_path2(self): | ||
Jörgen Stenarson
|
r8293 | """Test exception path in exception_validate, expecting windows line endings. | ||
""" | ||||
Paul Ivanov
|
r22963 | self.mktmp("import sys\n" | ||
Jörgen Stenarson
|
r8293 | "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") | ||||
Matthias Bussonnier
|
r22361 | |||
def tearDown(self): | ||||
# tear down correctly the mixin, | ||||
# unittest.TestCase.tearDown does nothing | ||||
tt.TempFileMixin.tearDown(self) | ||||