Skip to content

Commit 813e886

Browse files
authored
Dont apply default options on the httpie command (#1280)
* Mark tests with requires_installation * Dont apply default options on the httpie command * lint
1 parent 45fcd74 commit 813e886

File tree

4 files changed

+35
-3
lines changed

4 files changed

+35
-3
lines changed

httpie/core.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,15 @@ def raw_main(
3030
parser: argparse.ArgumentParser,
3131
main_program: Callable[[argparse.Namespace, Environment], ExitStatus],
3232
args: List[Union[str, bytes]] = sys.argv,
33-
env: Environment = Environment()
33+
env: Environment = Environment(),
34+
use_default_options: bool = True,
3435
) -> ExitStatus:
3536
program_name, *args = args
3637
env.program_name = os.path.basename(program_name)
3738
args = decode_raw_args(args, env.stdin_encoding)
3839
plugin_manager.load_installed_plugins(env.config.plugins_dir)
3940

40-
if env.config.default_options:
41+
if use_default_options and env.config.default_options:
4142
args = env.config.default_options + args
4243

4344
include_debug_info = '--debug' in args

httpie/manager/__main__.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ def main(args: List[Union[str, bytes]] = sys.argv, env: Environment = Environmen
3737
parser=parser,
3838
main_program=main_program,
3939
args=args,
40-
env=env
40+
env=env,
41+
use_default_options=False,
4142
)
4243
except argparse.ArgumentError:
4344
program_args = args[1:]

pytest.ini

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[pytest]
2+
markers =
3+
requires_installation

tests/test_plugins_cli.py

+27
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from tests.utils.plugins_cli import parse_listing
66

77

8+
@pytest.mark.requires_installation
89
def test_plugins_installation(httpie_plugins_success, interface, dummy_plugin):
910
lines = httpie_plugins_success('install', dummy_plugin.path)
1011
assert lines[0].startswith(
@@ -14,6 +15,20 @@ def test_plugins_installation(httpie_plugins_success, interface, dummy_plugin):
1415
assert interface.is_installed(dummy_plugin.name)
1516

1617

18+
@pytest.mark.requires_installation
19+
def test_plugin_installation_with_custom_config(httpie_plugins_success, interface, dummy_plugin):
20+
interface.environment.config['default_options'] = ['--session-read-only', 'some-path.json', 'other', 'args']
21+
interface.environment.config.save()
22+
23+
lines = httpie_plugins_success('install', dummy_plugin.path)
24+
assert lines[0].startswith(
25+
f'Installing {dummy_plugin.path}'
26+
)
27+
assert f'Successfully installed {dummy_plugin.name}-{dummy_plugin.version}' in lines
28+
assert interface.is_installed(dummy_plugin.name)
29+
30+
31+
@pytest.mark.requires_installation
1732
def test_plugins_listing(httpie_plugins_success, interface, dummy_plugin):
1833
httpie_plugins_success('install', dummy_plugin.path)
1934
data = parse_listing(httpie_plugins_success('list'))
@@ -23,6 +38,7 @@ def test_plugins_listing(httpie_plugins_success, interface, dummy_plugin):
2338
}
2439

2540

41+
@pytest.mark.requires_installation
2642
def test_plugins_listing_multiple(interface, httpie_plugins_success, dummy_plugins):
2743
paths = [plugin.path for plugin in dummy_plugins]
2844
httpie_plugins_success('install', *paths)
@@ -34,12 +50,14 @@ def test_plugins_listing_multiple(interface, httpie_plugins_success, dummy_plugi
3450
}
3551

3652

53+
@pytest.mark.requires_installation
3754
def test_plugins_uninstall(interface, httpie_plugins_success, dummy_plugin):
3855
httpie_plugins_success('install', dummy_plugin.path)
3956
httpie_plugins_success('uninstall', dummy_plugin.name)
4057
assert not interface.is_installed(dummy_plugin.name)
4158

4259

60+
@pytest.mark.requires_installation
4361
def test_plugins_listing_after_uninstall(interface, httpie_plugins_success, dummy_plugin):
4462
httpie_plugins_success('install', dummy_plugin.path)
4563
httpie_plugins_success('uninstall', dummy_plugin.name)
@@ -48,6 +66,7 @@ def test_plugins_listing_after_uninstall(interface, httpie_plugins_success, dumm
4866
assert len(data) == 0
4967

5068

69+
@pytest.mark.requires_installation
5170
def test_plugins_uninstall_specific(interface, httpie_plugins_success):
5271
new_plugin_1 = interface.make_dummy_plugin()
5372
new_plugin_2 = interface.make_dummy_plugin()
@@ -61,6 +80,7 @@ def test_plugins_uninstall_specific(interface, httpie_plugins_success):
6180
assert not interface.is_installed(target_plugin.name)
6281

6382

83+
@pytest.mark.requires_installation
6484
def test_plugins_installation_failed(httpie_plugins, interface):
6585
plugin = interface.make_dummy_plugin(build=False)
6686
result = httpie_plugins('install', plugin.path)
@@ -69,6 +89,7 @@ def test_plugins_installation_failed(httpie_plugins, interface):
6989
assert result.stderr.splitlines()[-1].strip().startswith("Can't install")
7090

7191

92+
@pytest.mark.requires_installation
7293
def test_plugins_uninstall_non_existent(httpie_plugins, interface):
7394
plugin = interface.make_dummy_plugin(build=False)
7495
result = httpie_plugins('uninstall', plugin.name)
@@ -80,6 +101,7 @@ def test_plugins_uninstall_non_existent(httpie_plugins, interface):
80101
)
81102

82103

104+
@pytest.mark.requires_installation
83105
def test_plugins_double_uninstall(httpie_plugins, httpie_plugins_success, dummy_plugin):
84106
httpie_plugins_success("install", dummy_plugin.path)
85107
httpie_plugins_success("uninstall", dummy_plugin.name)
@@ -93,6 +115,7 @@ def test_plugins_double_uninstall(httpie_plugins, httpie_plugins_success, dummy_
93115
)
94116

95117

118+
@pytest.mark.requires_installation
96119
def test_plugins_upgrade(httpie_plugins, httpie_plugins_success, dummy_plugin):
97120
httpie_plugins_success("install", dummy_plugin.path)
98121

@@ -105,6 +128,7 @@ def test_plugins_upgrade(httpie_plugins, httpie_plugins_success, dummy_plugin):
105128
assert data[dummy_plugin.name]['version'] == '2.0.0'
106129

107130

131+
@pytest.mark.requires_installation
108132
def test_broken_plugins(httpie_plugins, httpie_plugins_success, dummy_plugin, broken_plugin):
109133
httpie_plugins_success("install", dummy_plugin.path, broken_plugin.path)
110134

@@ -127,6 +151,7 @@ def test_broken_plugins(httpie_plugins, httpie_plugins_success, dummy_plugin, br
127151
assert len(data) == 1
128152

129153

154+
@pytest.mark.requires_installation
130155
def test_plugins_cli_error_message_without_args():
131156
# No arguments
132157
result = httpie(no_debug=True)
@@ -143,6 +168,7 @@ def test_plugins_cli_error_message_without_args():
143168
'POST pie.dev/post header:value a=b header_2:value x:=1'
144169
]
145170
)
171+
@pytest.mark.requires_installation
146172
def test_plugins_cli_error_messages_with_example(example):
147173
result = httpie(*example.split(), no_debug=True)
148174
assert result.exit_status == ExitStatus.ERROR
@@ -158,6 +184,7 @@ def test_plugins_cli_error_messages_with_example(example):
158184
'unknown.com UNPARSABLE????SYNTAX',
159185
]
160186
)
187+
@pytest.mark.requires_installation
161188
def test_plugins_cli_error_messages_invalid_example(example):
162189
result = httpie(*example.split(), no_debug=True)
163190
assert result.exit_status == ExitStatus.ERROR

0 commit comments

Comments
 (0)