'run_cell(silent=True) doesn\'t invoke pre/post_run_cell callbacks'

def test_silent_postexec(self):

    pre_explicit = mock.Mock()
    pre_always = mock.Mock()
    post_explicit = mock.Mock()
    post_always = mock.Mock()
    ip.events.register('pre_run_cell', pre_explicit)
    ip.events.register('pre_execute', pre_always)
    ip.events.register('post_run_cell', post_explicit)
    ip.events.register('post_execute', post_always)
    try:
        ip.run_cell('1', silent=True)
        assert pre_always.called
        assert (not pre_explicit.called)
        assert post_always.called
        assert (not post_explicit.called)
        ip.run_cell('1')
        assert pre_explicit.called
        assert post_explicit.called
    finally:
        ip.events.unregister('pre_run_cell', pre_explicit)
        ip.events.unregister('pre_execute', pre_always)
        ip.events.unregister('post_run_cell', post_explicit)
        ip.events.unregister('post_execute', post_always)
