117 lines
3.6 KiB
Python
117 lines
3.6 KiB
Python
"""
|
|
Tests for hyperlink.test.common
|
|
"""
|
|
from typing import Any
|
|
from unittest import TestCase
|
|
from .common import HyperlinkTestCase
|
|
|
|
|
|
class _ExpectedException(Exception):
|
|
"""An exception used to test HyperlinkTestCase.assertRaises."""
|
|
|
|
|
|
class _UnexpectedException(Exception):
|
|
"""An exception used to test HyperlinkTestCase.assertRaises."""
|
|
|
|
|
|
class TestHyperlink(TestCase):
|
|
"""Tests for HyperlinkTestCase"""
|
|
|
|
def setUp(self):
|
|
# type: () -> None
|
|
self.hyperlink_test = HyperlinkTestCase("run")
|
|
|
|
def test_assertRaisesWithCallable(self):
|
|
# type: () -> None
|
|
"""HyperlinkTestCase.assertRaises does not raise an AssertionError
|
|
when given a callable that, when called with the provided
|
|
arguments, raises the expected exception.
|
|
|
|
"""
|
|
called_with = []
|
|
|
|
def raisesExpected(*args, **kwargs):
|
|
# type: (Any, Any) -> None
|
|
called_with.append((args, kwargs))
|
|
raise _ExpectedException
|
|
|
|
self.hyperlink_test.assertRaises(
|
|
_ExpectedException, raisesExpected, 1, keyword=True
|
|
)
|
|
self.assertEqual(called_with, [((1,), {"keyword": True})])
|
|
|
|
def test_assertRaisesWithCallableUnexpectedException(self):
|
|
# type: () -> None
|
|
"""When given a callable that raises an unexpected exception,
|
|
HyperlinkTestCase.assertRaises raises that exception.
|
|
|
|
"""
|
|
|
|
def doesNotRaiseExpected(*args, **kwargs):
|
|
# type: (Any, Any) -> None
|
|
raise _UnexpectedException
|
|
|
|
try:
|
|
self.hyperlink_test.assertRaises(
|
|
_ExpectedException, doesNotRaiseExpected
|
|
)
|
|
except _UnexpectedException:
|
|
pass
|
|
|
|
def test_assertRaisesWithCallableDoesNotRaise(self):
|
|
# type: () -> None
|
|
"""HyperlinkTestCase.assertRaises raises an AssertionError when given
|
|
a callable that, when called, does not raise any exception.
|
|
|
|
"""
|
|
|
|
def doesNotRaise(*args, **kwargs):
|
|
# type: (Any, Any) -> None
|
|
pass
|
|
|
|
try:
|
|
self.hyperlink_test.assertRaises(_ExpectedException, doesNotRaise)
|
|
except AssertionError:
|
|
pass
|
|
|
|
def test_assertRaisesContextManager(self):
|
|
# type: () -> None
|
|
"""HyperlinkTestCase.assertRaises does not raise an AssertionError
|
|
when used as a context manager with a suite that raises the
|
|
expected exception. The context manager stores the exception
|
|
instance under its `exception` instance variable.
|
|
|
|
"""
|
|
with self.hyperlink_test.assertRaises(_ExpectedException) as cm:
|
|
raise _ExpectedException
|
|
|
|
self.assertTrue( # type: ignore[unreachable]
|
|
isinstance(cm.exception, _ExpectedException)
|
|
)
|
|
|
|
def test_assertRaisesContextManagerUnexpectedException(self):
|
|
# type: () -> None
|
|
"""When used as a context manager with a block that raises an
|
|
unexpected exception, HyperlinkTestCase.assertRaises raises
|
|
that unexpected exception.
|
|
|
|
"""
|
|
try:
|
|
with self.hyperlink_test.assertRaises(_ExpectedException):
|
|
raise _UnexpectedException
|
|
except _UnexpectedException:
|
|
pass
|
|
|
|
def test_assertRaisesContextManagerDoesNotRaise(self):
|
|
# type: () -> None
|
|
"""HyperlinkTestcase.assertRaises raises an AssertionError when used
|
|
as a context manager with a block that does not raise any
|
|
exception.
|
|
|
|
"""
|
|
try:
|
|
with self.hyperlink_test.assertRaises(_ExpectedException):
|
|
pass
|
|
except AssertionError:
|
|
pass
|