'When multiple changes passed to ``in_parallel`` fail,
``run_state_changes`` logs those failures.'

@capture_logging(None)
def test_failure_all_logged(self, logger):

    subchanges = [ControllableAction(result=fail(ZeroDivisionError('e1'))), ControllableAction(result=fail(ZeroDivisionError('e2'))), ControllableAction(result=fail(ZeroDivisionError('e3')))]
    change = in_parallel(changes=subchanges)
    result = run_state_change(change, DEPLOYER, InMemoryStatePersister())
    self.failureResultOf(result, FirstError)
    self.assertEqual(len(subchanges), len(logger.flush_tracebacks(ZeroDivisionError)))
