'If one of the ``IStateChange`` implementations passed to
``in_parallel`` raises an exception, ``run_state_changes`` nevertheless
runs the other ``IStateChange`` implementations passed along with it.'

def test_changes_run_after_exception(self):

    some_change = ControllableAction(result=None)
    other_change = ControllableAction(result=None)
    subchanges = [smallest(IStateChange, some_change), BrokenAction(exception=CustomException()), largest(IStateChange, other_change)]
    change = in_parallel(changes=subchanges)
    result = run_state_change(change, DEPLOYER, InMemoryStatePersister())
    self.failureResultOf(result, FirstError)
    self.assertEqual((some_change.called, other_change.called), (True, True), 'Other    changes    passed    to    in_parallel    with    a    broken    IStateChange    were    not    run.')
