def test_eventsource(): es = _EventSource() # fire when empty should succeed es.fire(42) handler1 = MagicMock() handler2 = MagicMock() es += handler1 es.fire(99, my_kwarg='blah') handler1.assert_called_with(99, my_kwarg='blah') es += handler2 es.fire(123, foo='bar') handler1.assert_called_with(123, foo='bar') handler2.assert_called_with(123, foo='bar') es -= handler2 handler1.reset_mock() handler2.reset_mock() es.fire(123, foo='bar') handler1.assert_called_with(123, foo='bar') handler2.assert_not_called() es -= handler1 handler1.reset_mock() es.fire('blah', kwarg=None) handler1.assert_not_called() handler2.assert_not_called() es -= handler1 # should succeed silently handler_bang = MagicMock(side_effect=Exception('bang')) es += handler_bang with pytest.raises(Exception) as ex: es.fire(123) assert 'bang' in str(ex.value) handler_bang.assert_called_with(123) with pytest.raises(ValueError): es += 42
def reset_collections_loader_state(metapath_finder=None): _AnsibleCollectionFinder._remove() nuke_module_prefix('ansible_collections') nuke_module_prefix('ansible.modules') nuke_module_prefix('ansible.plugins') # FIXME: better to move this someplace else that gets cleaned up automatically? _AnsibleCollectionLoader._redirected_package_map = {} AnsibleCollectionConfig._default_collection = None AnsibleCollectionConfig._on_collection_load = _EventSource() if metapath_finder: metapath_finder._install()