You've already forked httpie-cli
mirror of
https://github.com/httpie/cli.git
synced 2025-08-10 22:42:05 +02:00
Add httpie cli plugins
in favor of the new cli namespace. (#1320)
* Add `httpie cli plugins` in favor of the new cli namespace. * Separate each task to individual modules. * Move httpie.manager.plugins to httpie.manager.tasks.plugins Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
This commit is contained in:
@@ -5,8 +5,9 @@ from tests.utils.plugins_cli import parse_listing
|
||||
|
||||
|
||||
@pytest.mark.requires_installation
|
||||
def test_plugins_installation(httpie_plugins_success, interface, dummy_plugin):
|
||||
lines = httpie_plugins_success('install', dummy_plugin.path)
|
||||
@pytest.mark.parametrize('cli_mode', [True, False])
|
||||
def test_plugins_installation(httpie_plugins_success, interface, dummy_plugin, cli_mode):
|
||||
lines = httpie_plugins_success('install', dummy_plugin.path, cli_mode=cli_mode)
|
||||
assert lines[0].startswith(
|
||||
f'Installing {dummy_plugin.path}'
|
||||
)
|
||||
@@ -28,8 +29,9 @@ def test_plugin_installation_with_custom_config(httpie_plugins_success, interfac
|
||||
|
||||
|
||||
@pytest.mark.requires_installation
|
||||
def test_plugins_listing(httpie_plugins_success, interface, dummy_plugin):
|
||||
httpie_plugins_success('install', dummy_plugin.path)
|
||||
@pytest.mark.parametrize('cli_mode', [True, False])
|
||||
def test_plugins_listing(httpie_plugins_success, interface, dummy_plugin, cli_mode):
|
||||
httpie_plugins_success('install', dummy_plugin.path, cli_mode=cli_mode)
|
||||
data = parse_listing(httpie_plugins_success('list'))
|
||||
|
||||
assert data == {
|
||||
@@ -50,9 +52,10 @@ def test_plugins_listing_multiple(interface, httpie_plugins_success, dummy_plugi
|
||||
|
||||
|
||||
@pytest.mark.requires_installation
|
||||
def test_plugins_uninstall(interface, httpie_plugins_success, dummy_plugin):
|
||||
httpie_plugins_success('install', dummy_plugin.path)
|
||||
httpie_plugins_success('uninstall', dummy_plugin.name)
|
||||
@pytest.mark.parametrize('cli_mode', [True, False])
|
||||
def test_plugins_uninstall(interface, httpie_plugins_success, dummy_plugin, cli_mode):
|
||||
httpie_plugins_success('install', dummy_plugin.path, cli_mode=cli_mode)
|
||||
httpie_plugins_success('uninstall', dummy_plugin.name, cli_mode=cli_mode)
|
||||
assert not interface.is_installed(dummy_plugin.name)
|
||||
|
||||
|
||||
|
@@ -208,12 +208,17 @@ def httpie_plugins(interface):
|
||||
from tests.utils import httpie
|
||||
from httpie.plugins.registry import plugin_manager
|
||||
|
||||
def runner(*args):
|
||||
def runner(*args, cli_mode: bool = True):
|
||||
args = list(args)
|
||||
if cli_mode:
|
||||
args.insert(0, 'cli')
|
||||
args.insert(cli_mode, 'plugins')
|
||||
|
||||
# Prevent installed plugins from showing up.
|
||||
original_plugins = plugin_manager.copy()
|
||||
clean_sys_path = set(sys.path).difference(site.getsitepackages())
|
||||
with patch('sys.path', list(clean_sys_path)):
|
||||
response = httpie('plugins', *args, env=interface.environment)
|
||||
response = httpie(*args, env=interface.environment)
|
||||
plugin_manager.clear()
|
||||
plugin_manager.extend(original_plugins)
|
||||
return response
|
||||
@@ -223,8 +228,8 @@ def httpie_plugins(interface):
|
||||
|
||||
@pytest.fixture
|
||||
def httpie_plugins_success(httpie_plugins):
|
||||
def runner(*args):
|
||||
response = httpie_plugins(*args)
|
||||
def runner(*args, cli_mode: bool = True):
|
||||
response = httpie_plugins(*args, cli_mode=True)
|
||||
assert response.exit_status == ExitStatus.SUCCESS
|
||||
return response.splitlines()
|
||||
return runner
|
||||
|
Reference in New Issue
Block a user