def detect():
    # On some versions of Twisted, must import twisted.trial.unittest first or
    # this import always fails.
    namedAny("twisted.trial.unittest")
    try:
        from twisted.trial._dist.workerreporter import WorkerReporter
    except ImportError:
        return False

    from unittest import TestCase
    from twisted.protocols.amp import AMP
    from twisted.python.failure import Failure

    case = TestCase("run")
    reporter = WorkerReporter(AMP())
    failure = Failure(Exception(u"\N{SNOWMAN}".encode("utf-8")))
    try:
        reporter.addFailure(case, failure)
    except UnicodeDecodeError:
        return True
    return False
Exemplo n.º 2
0
def detect():
    try:
        from twisted.trial._dist.workerreporter import WorkerReporter
    except ImportError:
        return False

    from unittest import TestCase
    from twisted.protocols.amp import AMP
    from twisted.python.failure import Failure

    case = TestCase("run")
    reporter = WorkerReporter(AMP())
    failure = Failure(Exception(u"\N{SNOWMAN}".encode("utf-8")))
    try:
        reporter.addFailure(case, failure)
    except UnicodeDecodeError:
        return True
    return False
Exemplo n.º 3
0
 def __init__(self, forceGarbageCollection=False):
     self._loader = TestLoader()
     self._result = WorkerReporter(self)
     self._forceGarbageCollection = forceGarbageCollection
Exemplo n.º 4
0
 def setUp(self):
     self.fakeAMProtocol = FakeAMProtocol()
     self.workerReporter = WorkerReporter(self.fakeAMProtocol)
     self.test = TestCase()
Exemplo n.º 5
0
class WorkerReporterTestCase(TestCase):
    """
    Tests for L{WorkerReporter}.
    """

    def setUp(self):
        self.fakeAMProtocol = FakeAMProtocol()
        self.workerReporter = WorkerReporter(self.fakeAMProtocol)
        self.test = TestCase()


    def test_addSuccess(self):
        """
        L{WorkerReporter.addSuccess} sends a L{managercommands.AddSuccess}
        command.
        """
        self.workerReporter.addSuccess(self.test)
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddSuccess)


    def test_addError(self):
        """
        L{WorkerReporter.addError} sends a L{managercommands.AddError} command.
        """
        self.workerReporter.addError(self.test, Failure(RuntimeError('error')))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddError)


    def test_addErrorTuple(self):
        """
        Adding an error using L{WorkerReporter.addError} as a
        C{sys.exc_info}-style tuple sends an L{managercommands.AddError}
        command.
        """
        self.workerReporter.addError(
            self.test, (RuntimeError, RuntimeError('error'), None))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddError)


    def test_addFailure(self):
        """
        L{WorkerReporter.addFailure} sends a L{managercommands.AddFailure}
        command.
        """
        self.workerReporter.addFailure(self.test,
                                       Failure(RuntimeError('fail')))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddFailure)


    def test_addFailureTuple(self):
        """
        Adding a failure using L{WorkerReporter.addFailure} as a
        C{sys.exc_info}-style tuple sends an L{managercommands.AddFailure}
        message.
        """
        self.workerReporter.addFailure(
            self.test, (RuntimeError, RuntimeError('fail'), None))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddFailure)


    def test_addSkip(self):
        """
        L{WorkerReporter.addSkip} sends a L{managercommands.AddSkip} command.
        """
        self.workerReporter.addSkip(self.test, 'reason')
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddSkip)


    def test_addExpectedFailure(self):
        """
        L{WorkerReporter.addExpectedFailure} sends a
        L{managercommands.AddExpectedFailure} command.
        protocol.
        """
        self.workerReporter.addExpectedFailure(
            self.test, Failure(RuntimeError('error')), Todo('todo'))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddExpectedFailure)


    def test_addUnexpectedSuccess(self):
        """
        L{WorkerReporter.addUnexpectedSuccess} sends a
        L{managercommands.AddUnexpectedSuccess} command.
        """
        self.workerReporter.addUnexpectedSuccess(self.test, Todo('todo'))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddUnexpectedSuccess)
Exemplo n.º 6
0
 def setUp(self):
     self.fakeAMProtocol = FakeAMProtocol()
     self.workerReporter = WorkerReporter(self.fakeAMProtocol)
     self.test = TestCase()
Exemplo n.º 7
0
class WorkerReporterTests(TestCase):
    """
    Tests for L{WorkerReporter}.
    """
    def setUp(self):
        self.fakeAMProtocol = FakeAMProtocol()
        self.workerReporter = WorkerReporter(self.fakeAMProtocol)
        self.test = TestCase()

    def test_addSuccess(self):
        """
        L{WorkerReporter.addSuccess} sends a L{managercommands.AddSuccess}
        command.
        """
        self.workerReporter.addSuccess(self.test)
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddSuccess)

    def test_addError(self):
        """
        L{WorkerReporter.addError} sends a L{managercommands.AddError} command.
        """
        self.workerReporter.addError(self.test, Failure(RuntimeError("error")))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddError)

    def test_addErrorTuple(self):
        """
        Adding an error using L{WorkerReporter.addError} as a
        C{sys.exc_info}-style tuple sends an L{managercommands.AddError}
        command.
        """
        self.workerReporter.addError(
            self.test, (RuntimeError, RuntimeError("error"), None))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddError)

    def test_addFailure(self):
        """
        L{WorkerReporter.addFailure} sends a L{managercommands.AddFailure}
        command.
        """
        self.workerReporter.addFailure(self.test,
                                       Failure(RuntimeError("fail")))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddFailure)

    def test_addFailureTuple(self):
        """
        Adding a failure using L{WorkerReporter.addFailure} as a
        C{sys.exc_info}-style tuple sends an L{managercommands.AddFailure}
        message.
        """
        self.workerReporter.addFailure(
            self.test, (RuntimeError, RuntimeError("fail"), None))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddFailure)

    def test_addSkip(self):
        """
        L{WorkerReporter.addSkip} sends a L{managercommands.AddSkip} command.
        """
        self.workerReporter.addSkip(self.test, "reason")
        self.assertEqual(self.fakeAMProtocol.lastCall, managercommands.AddSkip)

    def test_addExpectedFailure(self):
        """
        L{WorkerReporter.addExpectedFailure} sends a
        L{managercommands.AddExpectedFailure} command.
        protocol.
        """
        self.workerReporter.addExpectedFailure(self.test,
                                               Failure(RuntimeError("error")),
                                               Todo("todo"))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddExpectedFailure)

    def test_addExpectedFailureNoTodo(self):
        """
        L{WorkerReporter.addExpectedFailure} sends a
        L{managercommands.AddExpectedFailure} command.
        protocol.
        """
        self.workerReporter.addExpectedFailure(self.test,
                                               Failure(RuntimeError("error")))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddExpectedFailure)

    def test_addUnexpectedSuccess(self):
        """
        L{WorkerReporter.addUnexpectedSuccess} sends a
        L{managercommands.AddUnexpectedSuccess} command.
        """
        self.workerReporter.addUnexpectedSuccess(self.test, Todo("todo"))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddUnexpectedSuccess)

    def test_addUnexpectedSuccessNoTodo(self):
        """
        L{WorkerReporter.addUnexpectedSuccess} sends a
        L{managercommands.AddUnexpectedSuccess} command.
        """
        self.workerReporter.addUnexpectedSuccess(self.test)
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddUnexpectedSuccess)
Exemplo n.º 8
0
class WorkerReporterTests(TestCase):
    """
    Tests for L{WorkerReporter}.
    """
    def setUp(self):
        self.fakeAMProtocol = FakeAMProtocol()
        self.workerReporter = WorkerReporter(self.fakeAMProtocol)
        self.test = TestCase()

    def test_addSuccess(self):
        """
        L{WorkerReporter.addSuccess} sends a L{managercommands.AddSuccess}
        command.
        """
        self.workerReporter.addSuccess(self.test)
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddSuccess)

    def test_addError(self):
        """
        L{WorkerReporter.addError} sends a L{managercommands.AddError} command.
        """
        self.workerReporter.addError(self.test, Failure(RuntimeError('error')))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddError)

    def test_addErrorTuple(self):
        """
        Adding an error using L{WorkerReporter.addError} as a
        C{sys.exc_info}-style tuple sends an L{managercommands.AddError}
        command.
        """
        self.workerReporter.addError(
            self.test, (RuntimeError, RuntimeError('error'), None))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddError)

    def test_addFailure(self):
        """
        L{WorkerReporter.addFailure} sends a L{managercommands.AddFailure}
        command.
        """
        self.workerReporter.addFailure(self.test,
                                       Failure(RuntimeError('fail')))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddFailure)

    def test_addFailureTuple(self):
        """
        Adding a failure using L{WorkerReporter.addFailure} as a
        C{sys.exc_info}-style tuple sends an L{managercommands.AddFailure}
        message.
        """
        self.workerReporter.addFailure(
            self.test, (RuntimeError, RuntimeError('fail'), None))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddFailure)

    def test_addFailureNonASCII(self):
        """
        L{WorkerReporter.addFailure} sends a L{managercommands.AddFailure}
        message when called with a L{Failure}, even if it includes encoded
        non-ASCII content.
        """
        content = u"\N{SNOWMAN}".encode("utf-8")
        exception = RuntimeError(content)
        failure = Failure(exception)
        self.workerReporter.addFailure(self.test, failure)
        self.assertEqual(
            self.fakeAMProtocol.lastCall,
            managercommands.AddFailure,
        )
        self.assertEqual(
            content,
            self.fakeAMProtocol.lastArgs["fail"],
        )

    if _PY3:
        test_addFailureNonASCII.skip = (
            "Exceptions only convert to unicode on Python 3")

    def test_addSkip(self):
        """
        L{WorkerReporter.addSkip} sends a L{managercommands.AddSkip} command.
        """
        self.workerReporter.addSkip(self.test, 'reason')
        self.assertEqual(self.fakeAMProtocol.lastCall, managercommands.AddSkip)

    def test_addExpectedFailure(self):
        """
        L{WorkerReporter.addExpectedFailure} sends a
        L{managercommands.AddExpectedFailure} command.
        protocol.
        """
        self.workerReporter.addExpectedFailure(self.test,
                                               Failure(RuntimeError('error')),
                                               Todo('todo'))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddExpectedFailure)

    def test_addExpectedFailureNoTodo(self):
        """
        L{WorkerReporter.addExpectedFailure} sends a
        L{managercommands.AddExpectedFailure} command.
        protocol.
        """
        self.workerReporter.addExpectedFailure(self.test,
                                               Failure(RuntimeError('error')))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddExpectedFailure)

    def test_addUnexpectedSuccess(self):
        """
        L{WorkerReporter.addUnexpectedSuccess} sends a
        L{managercommands.AddUnexpectedSuccess} command.
        """
        self.workerReporter.addUnexpectedSuccess(self.test, Todo('todo'))
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddUnexpectedSuccess)

    def test_addUnexpectedSuccessNoTodo(self):
        """
        L{WorkerReporter.addUnexpectedSuccess} sends a
        L{managercommands.AddUnexpectedSuccess} command.
        """
        self.workerReporter.addUnexpectedSuccess(self.test)
        self.assertEqual(self.fakeAMProtocol.lastCall,
                         managercommands.AddUnexpectedSuccess)