mirror of
https://github.com/PyCQA/flake8.git
synced 2026-04-07 21:44:18 +00:00
Mock 2.0 is using pbr which is hostile to environments without network access. It's not required on Python 3.5+ so I made it possible to use `unittest.mock` on this version. Updated tox.ini to reflect this. Tested with 2.7.11, 3.3.6, 3.4.5, and 3.5.2 on macOS 10.12.1 with tox and pyenv.
53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
"""Tests for flake8.plugins.manager.PluginManager."""
|
|
try:
|
|
import mock
|
|
except ImportError:
|
|
from unittest import mock
|
|
|
|
from flake8.plugins import manager
|
|
|
|
|
|
def create_entry_point_mock(name):
|
|
"""Create a mocked EntryPoint."""
|
|
ep = mock.Mock(spec=['name'])
|
|
ep.name = name
|
|
return ep
|
|
|
|
|
|
@mock.patch('pkg_resources.iter_entry_points')
|
|
def test_calls_pkg_resources_on_instantiation(iter_entry_points):
|
|
"""Verify that we call iter_entry_points when we create a manager."""
|
|
iter_entry_points.return_value = []
|
|
manager.PluginManager(namespace='testing.pkg_resources')
|
|
|
|
iter_entry_points.assert_called_once_with('testing.pkg_resources')
|
|
|
|
|
|
@mock.patch('pkg_resources.iter_entry_points')
|
|
def test_calls_pkg_resources_creates_plugins_automaticaly(iter_entry_points):
|
|
"""Verify that we create Plugins on instantiation."""
|
|
iter_entry_points.return_value = [
|
|
create_entry_point_mock('T100'),
|
|
create_entry_point_mock('T200'),
|
|
]
|
|
plugin_mgr = manager.PluginManager(namespace='testing.pkg_resources')
|
|
|
|
iter_entry_points.assert_called_once_with('testing.pkg_resources')
|
|
assert 'T100' in plugin_mgr.plugins
|
|
assert 'T200' in plugin_mgr.plugins
|
|
assert isinstance(plugin_mgr.plugins['T100'], manager.Plugin)
|
|
assert isinstance(plugin_mgr.plugins['T200'], manager.Plugin)
|
|
|
|
|
|
@mock.patch('pkg_resources.iter_entry_points')
|
|
def test_handles_mapping_functions_across_plugins(iter_entry_points):
|
|
"""Verify we can use the PluginManager call functions on all plugins."""
|
|
entry_point_mocks = [
|
|
create_entry_point_mock('T100'),
|
|
create_entry_point_mock('T200'),
|
|
]
|
|
iter_entry_points.return_value = entry_point_mocks
|
|
plugin_mgr = manager.PluginManager(namespace='testing.pkg_resources')
|
|
plugins = [plugin_mgr.plugins[name] for name in plugin_mgr.names]
|
|
|
|
assert list(plugin_mgr.map(lambda x: x)) == plugins
|