Spaces:
Runtime error
Runtime error
# 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 | |
from IPython.testing import decorators as dec | |
from IPython.testing import tools as tt | |
#----------------------------------------------------------------------------- | |
# Tests | |
#----------------------------------------------------------------------------- | |
def test_full_path_posix(): | |
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"] | |
def test_full_path_win32(): | |
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"] | |
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) | |
assert nerr == nerr1 | |
assert nfail == nfail1 | |
def test_temp_pyfile(): | |
src = 'pass\n' | |
fname = tt.temp_pyfile(src) | |
assert os.path.isfile(fname) | |
with open(fname, encoding="utf-8") as fh2: | |
src2 = fh2.read() | |
assert 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) | |