123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- # -*- test-case-name: twisted.trial.test.test_tests -*-
- # Copyright (c) Twisted Matrix Laboratories.
- # See LICENSE for details.
-
- """
- Definitions of test cases with various interesting behaviors, to be used by
- L{twisted.trial.test.test_tests} and other test modules to exercise different
- features of trial's test runner.
-
- See the L{twisted.trial.test.test_tests} module docstring for details about how
- this code is arranged.
- """
-
-
- from twisted.trial.unittest import FailTest, SkipTest, SynchronousTestCase, TestCase
-
-
- class SkippingMixin:
- def test_skip1(self):
- raise SkipTest("skip1")
-
- def test_skip2(self):
- raise RuntimeError("I should not get raised")
-
- test_skip2.skip = "skip2" # type: ignore[attr-defined]
-
- def test_skip3(self):
- self.fail("I should not fail")
-
- test_skip3.skip = "skip3" # type: ignore[attr-defined]
-
-
- class SynchronousSkipping(SkippingMixin, SynchronousTestCase):
- pass
-
-
- class AsynchronousSkipping(SkippingMixin, TestCase):
- pass
-
-
- class SkippingSetUpMixin:
- def setUp(self):
- raise SkipTest("skipSetUp")
-
- def test_1(self):
- pass
-
- def test_2(self):
- pass
-
-
- class SynchronousSkippingSetUp(SkippingSetUpMixin, SynchronousTestCase):
- pass
-
-
- class AsynchronousSkippingSetUp(SkippingSetUpMixin, TestCase):
- pass
-
-
- class DeprecatedReasonlessSkipMixin:
- def test_1(self):
- raise SkipTest()
-
-
- class SynchronousDeprecatedReasonlessSkip(
- DeprecatedReasonlessSkipMixin, SynchronousTestCase
- ):
- pass
-
-
- class AsynchronousDeprecatedReasonlessSkip(DeprecatedReasonlessSkipMixin, TestCase):
- pass
-
-
- class SkippedClassMixin:
- skip = "class"
-
- def setUp(self):
- self.__class__._setUpRan = True
-
- def test_skip1(self):
- raise SkipTest("skip1")
-
- def test_skip2(self):
- raise RuntimeError("Ought to skip me")
-
- test_skip2.skip = "skip2" # type: ignore
-
- def test_skip3(self):
- pass
-
- def test_skip4(self):
- raise RuntimeError("Skip me too")
-
-
- class SynchronousSkippedClass(SkippedClassMixin, SynchronousTestCase):
- pass
-
-
- class AsynchronousSkippedClass(SkippedClassMixin, TestCase):
- pass
-
-
- class TodoMixin:
- def test_todo1(self):
- self.fail("deliberate failure")
-
- test_todo1.todo = "todo1" # type: ignore[attr-defined]
-
- def test_todo2(self):
- raise RuntimeError("deliberate error")
-
- test_todo2.todo = "todo2" # type: ignore[attr-defined]
-
- def test_todo3(self):
- """unexpected success"""
-
- test_todo3.todo = "todo3" # type: ignore[attr-defined]
-
-
- class SynchronousTodo(TodoMixin, SynchronousTestCase):
- pass
-
-
- class AsynchronousTodo(TodoMixin, TestCase):
- pass
-
-
- class SetUpTodoMixin:
- def setUp(self):
- raise RuntimeError("deliberate error")
-
- def test_todo1(self):
- pass
-
- test_todo1.todo = "setUp todo1" # type: ignore[attr-defined]
-
-
- class SynchronousSetUpTodo(SetUpTodoMixin, SynchronousTestCase):
- pass
-
-
- class AsynchronousSetUpTodo(SetUpTodoMixin, TestCase):
- pass
-
-
- class TearDownTodoMixin:
- def tearDown(self):
- raise RuntimeError("deliberate error")
-
- def test_todo1(self):
- pass
-
- test_todo1.todo = "tearDown todo1" # type: ignore[attr-defined]
-
-
- class SynchronousTearDownTodo(TearDownTodoMixin, SynchronousTestCase):
- pass
-
-
- class AsynchronousTearDownTodo(TearDownTodoMixin, TestCase):
- pass
-
-
- class TodoClassMixin:
- todo = "class"
-
- def test_todo1(self):
- pass
-
- test_todo1.todo = "method" # type: ignore[attr-defined]
-
- def test_todo2(self):
- pass
-
- def test_todo3(self):
- self.fail("Deliberate Failure")
-
- test_todo3.todo = "method" # type: ignore[attr-defined]
-
- def test_todo4(self):
- self.fail("Deliberate Failure")
-
-
- class SynchronousTodoClass(TodoClassMixin, SynchronousTestCase):
- pass
-
-
- class AsynchronousTodoClass(TodoClassMixin, TestCase):
- pass
-
-
- class StrictTodoMixin:
- def test_todo1(self):
- raise RuntimeError("expected failure")
-
- test_todo1.todo = (RuntimeError, "todo1") # type: ignore[attr-defined]
-
- def test_todo2(self):
- raise RuntimeError("expected failure")
-
- test_todo2.todo = ((RuntimeError, OSError), "todo2") # type: ignore[attr-defined]
-
- def test_todo3(self):
- raise RuntimeError("we had no idea!")
-
- test_todo3.todo = (OSError, "todo3") # type: ignore[attr-defined]
-
- def test_todo4(self):
- raise RuntimeError("we had no idea!")
-
- test_todo4.todo = ((OSError, SyntaxError), "todo4") # type: ignore[attr-defined]
-
- def test_todo5(self):
- self.fail("deliberate failure")
-
- test_todo5.todo = (FailTest, "todo5") # type: ignore[attr-defined]
-
- def test_todo6(self):
- self.fail("deliberate failure")
-
- test_todo6.todo = (RuntimeError, "todo6") # type: ignore[attr-defined]
-
- def test_todo7(self):
- pass
-
- test_todo7.todo = (RuntimeError, "todo7") # type: ignore[attr-defined]
-
-
- class SynchronousStrictTodo(StrictTodoMixin, SynchronousTestCase):
- pass
-
-
- class AsynchronousStrictTodo(StrictTodoMixin, TestCase):
- pass
-
-
- class AddCleanupMixin:
- def setUp(self):
- self.log = ["setUp"]
-
- def brokenSetUp(self):
- self.log = ["setUp"]
- raise RuntimeError("Deliberate failure")
-
- def skippingSetUp(self):
- self.log = ["setUp"]
- raise SkipTest("Don't do this")
-
- def append(self, thing):
- self.log.append(thing)
-
- def tearDown(self):
- self.log.append("tearDown")
-
- def runTest(self):
- self.log.append("runTest")
-
-
- class SynchronousAddCleanup(AddCleanupMixin, SynchronousTestCase):
- pass
-
-
- class AsynchronousAddCleanup(AddCleanupMixin, TestCase):
- pass
-
-
- class ExpectedFailure(SynchronousTestCase):
- """
- Hold a test that has an expected failure with an exception that has a
- large string representation.
- """
-
- def test_expectedFailureGreaterThan64k(self) -> None:
- """
- Fail, but expectedly.
- """
- raise RuntimeError("x" * (2 ** 16 + 1))
-
- test_expectedFailureGreaterThan64k.todo = "short todo string" # type: ignore[attr-defined]
|