1# Copyright (c) Twisted Matrix Laboratories. 2# See LICENSE for details. 3 4""" 5Tests for L{twisted.trial._dist.workerreporter}. 6""" 7 8from twisted.python.failure import Failure 9from twisted.trial.unittest import TestCase, Todo 10from twisted.trial._dist.workerreporter import WorkerReporter 11from twisted.trial._dist import managercommands 12 13 14class FakeAMProtocol(object): 15 """ 16 A fake C{AMP} implementations to track C{callRemote} calls. 17 """ 18 id = 0 19 lastCall = None 20 21 def callRemote(self, command, **kwargs): 22 self.lastCall = command 23 24 25 26class WorkerReporterTestCase(TestCase): 27 """ 28 Tests for L{WorkerReporter}. 29 """ 30 31 def setUp(self): 32 self.fakeAMProtocol = FakeAMProtocol() 33 self.workerReporter = WorkerReporter(self.fakeAMProtocol) 34 self.test = TestCase() 35 36 37 def test_addSuccess(self): 38 """ 39 L{WorkerReporter.addSuccess} sends a L{managercommands.AddSuccess} 40 command. 41 """ 42 self.workerReporter.addSuccess(self.test) 43 self.assertEqual(self.fakeAMProtocol.lastCall, 44 managercommands.AddSuccess) 45 46 47 def test_addError(self): 48 """ 49 L{WorkerReporter.addError} sends a L{managercommands.AddError} command. 50 """ 51 self.workerReporter.addError(self.test, Failure(RuntimeError('error'))) 52 self.assertEqual(self.fakeAMProtocol.lastCall, 53 managercommands.AddError) 54 55 56 def test_addErrorTuple(self): 57 """ 58 Adding an error using L{WorkerReporter.addError} as a 59 C{sys.exc_info}-style tuple sends an L{managercommands.AddError} 60 command. 61 """ 62 self.workerReporter.addError( 63 self.test, (RuntimeError, RuntimeError('error'), None)) 64 self.assertEqual(self.fakeAMProtocol.lastCall, 65 managercommands.AddError) 66 67 68 def test_addFailure(self): 69 """ 70 L{WorkerReporter.addFailure} sends a L{managercommands.AddFailure} 71 command. 72 """ 73 self.workerReporter.addFailure(self.test, 74 Failure(RuntimeError('fail'))) 75 self.assertEqual(self.fakeAMProtocol.lastCall, 76 managercommands.AddFailure) 77 78 79 def test_addFailureTuple(self): 80 """ 81 Adding a failure using L{WorkerReporter.addFailure} as a 82 C{sys.exc_info}-style tuple sends an L{managercommands.AddFailure} 83 message. 84 """ 85 self.workerReporter.addFailure( 86 self.test, (RuntimeError, RuntimeError('fail'), None)) 87 self.assertEqual(self.fakeAMProtocol.lastCall, 88 managercommands.AddFailure) 89 90 91 def test_addSkip(self): 92 """ 93 L{WorkerReporter.addSkip} sends a L{managercommands.AddSkip} command. 94 """ 95 self.workerReporter.addSkip(self.test, 'reason') 96 self.assertEqual(self.fakeAMProtocol.lastCall, 97 managercommands.AddSkip) 98 99 100 def test_addExpectedFailure(self): 101 """ 102 L{WorkerReporter.addExpectedFailure} sends a 103 L{managercommands.AddExpectedFailure} command. 104 protocol. 105 """ 106 self.workerReporter.addExpectedFailure( 107 self.test, Failure(RuntimeError('error')), Todo('todo')) 108 self.assertEqual(self.fakeAMProtocol.lastCall, 109 managercommands.AddExpectedFailure) 110 111 112 def test_addUnexpectedSuccess(self): 113 """ 114 L{WorkerReporter.addUnexpectedSuccess} sends a 115 L{managercommands.AddUnexpectedSuccess} command. 116 """ 117 self.workerReporter.addUnexpectedSuccess(self.test, Todo('todo')) 118 self.assertEqual(self.fakeAMProtocol.lastCall, 119 managercommands.AddUnexpectedSuccess) 120