# -*- 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 __future__ import division, absolute_import from twisted.trial.unittest import ( SynchronousTestCase, TestCase, SkipTest, FailTest) class SkippingMixin(object): def test_skip1(self): raise SkipTest('skip1') def test_skip2(self): raise RuntimeError("I should not get raised") test_skip2.skip = 'skip2' def test_skip3(self): self.fail('I should not fail') test_skip3.skip = 'skip3' class SynchronousSkipping(SkippingMixin, SynchronousTestCase): pass class AsynchronousSkipping(SkippingMixin, TestCase): pass class SkippingSetUpMixin(object): 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(object): def test_1(self): raise SkipTest() class SynchronousDeprecatedReasonlessSkip( DeprecatedReasonlessSkipMixin, SynchronousTestCase): pass class AsynchronousDeprecatedReasonlessSkip( DeprecatedReasonlessSkipMixin, TestCase): pass class SkippedClassMixin(object): 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' 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(object): def test_todo1(self): self.fail("deliberate failure") test_todo1.todo = "todo1" def test_todo2(self): raise RuntimeError("deliberate error") test_todo2.todo = "todo2" def test_todo3(self): """unexpected success""" test_todo3.todo = 'todo3' class SynchronousTodo(TodoMixin, SynchronousTestCase): pass class AsynchronousTodo(TodoMixin, TestCase): pass class SetUpTodoMixin(object): def setUp(self): raise RuntimeError("deliberate error") def test_todo1(self): pass test_todo1.todo = "setUp todo1" class SynchronousSetUpTodo(SetUpTodoMixin, SynchronousTestCase): pass class AsynchronousSetUpTodo(SetUpTodoMixin, TestCase): pass class TearDownTodoMixin(object): def tearDown(self): raise RuntimeError("deliberate error") def test_todo1(self): pass test_todo1.todo = "tearDown todo1" class SynchronousTearDownTodo(TearDownTodoMixin, SynchronousTestCase): pass class AsynchronousTearDownTodo(TearDownTodoMixin, TestCase): pass class TodoClassMixin(object): todo = "class" def test_todo1(self): pass test_todo1.todo = "method" def test_todo2(self): pass def test_todo3(self): self.fail("Deliberate Failure") test_todo3.todo = "method" def test_todo4(self): self.fail("Deliberate Failure") class SynchronousTodoClass(TodoClassMixin, SynchronousTestCase): pass class AsynchronousTodoClass(TodoClassMixin, TestCase): pass class StrictTodoMixin(object): def test_todo1(self): raise RuntimeError("expected failure") test_todo1.todo = (RuntimeError, "todo1") def test_todo2(self): raise RuntimeError("expected failure") test_todo2.todo = ((RuntimeError, OSError), "todo2") def test_todo3(self): raise RuntimeError("we had no idea!") test_todo3.todo = (OSError, "todo3") def test_todo4(self): raise RuntimeError("we had no idea!") test_todo4.todo = ((OSError, SyntaxError), "todo4") def test_todo5(self): self.fail("deliberate failure") test_todo5.todo = (FailTest, "todo5") def test_todo6(self): self.fail("deliberate failure") test_todo6.todo = (RuntimeError, "todo6") def test_todo7(self): pass test_todo7.todo = (RuntimeError, "todo7") class SynchronousStrictTodo(StrictTodoMixin, SynchronousTestCase): pass class AsynchronousStrictTodo(StrictTodoMixin, TestCase): pass class AddCleanupMixin(object): 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