mirror of
https://github.com/httpie/cli.git
synced 2025-08-10 01:37:36 +02:00
HTTPie v4
This commit is contained in:
@ -9,7 +9,7 @@ import warnings
|
||||
from urllib.request import urlopen
|
||||
|
||||
import pytest
|
||||
import requests
|
||||
import niquests
|
||||
import responses
|
||||
|
||||
from httpie.cli.argtypes import (
|
||||
@ -97,18 +97,22 @@ class TestQuietFlag:
|
||||
(['-q'], 1),
|
||||
(['-qq'], 0),
|
||||
])
|
||||
# Might fail on Windows due to interference from other warnings.
|
||||
@pytest.mark.xfail
|
||||
def test_quiet_on_python_warnings(self, test_patch, httpbin, flags, expected_warnings):
|
||||
def warn_and_run(*args, **kwargs):
|
||||
warnings.warn('warning!!')
|
||||
return ExitStatus.SUCCESS
|
||||
|
||||
test_patch.side_effect = warn_and_run
|
||||
with pytest.warns(None) as record:
|
||||
http(*flags, httpbin + '/get')
|
||||
|
||||
assert len(record) == expected_warnings
|
||||
if expected_warnings == 0:
|
||||
with warnings.catch_warnings():
|
||||
warnings.simplefilter("error")
|
||||
http(*flags, httpbin + '/get')
|
||||
else:
|
||||
with pytest.warns(Warning) as record:
|
||||
http(*flags, httpbin + '/get')
|
||||
|
||||
assert len(record) >= expected_warnings
|
||||
|
||||
def test_double_quiet_on_error(self, httpbin):
|
||||
r = http(
|
||||
@ -116,7 +120,7 @@ class TestQuietFlag:
|
||||
tolerate_error_exit_status=True,
|
||||
)
|
||||
assert not r
|
||||
assert 'Couldn’t resolve the given hostname' in r.stderr
|
||||
assert 'Couldn’t resolve the given hostname' in r.stderr or 'Name or service not known' in r.stderr
|
||||
|
||||
@pytest.mark.parametrize('quiet_flags', QUIET_SCENARIOS)
|
||||
@mock.patch('httpie.cli.argtypes.AuthCredentials._getpass',
|
||||
@ -160,7 +164,7 @@ class TestQuietFlag:
|
||||
output_path = Path('output.txt')
|
||||
env = MockEnvironment()
|
||||
orig_cwd = os.getcwd()
|
||||
output = requests.get(url).text
|
||||
output = niquests.get(url).text
|
||||
extra_args = ['--download'] if with_download else []
|
||||
os.chdir(tmp_path)
|
||||
try:
|
||||
@ -214,7 +218,7 @@ class TestVerboseFlag:
|
||||
def test_verbose_implies_all(self, httpbin):
|
||||
r = http('--verbose', '--follow', httpbin + '/redirect/1')
|
||||
assert 'GET /redirect/1 HTTP/1.1' in r
|
||||
assert 'HTTP/1.1 302 FOUND' in r
|
||||
assert 'HTTP/1.1 302 Found' in r
|
||||
assert 'GET /get HTTP/1.1' in r
|
||||
assert HTTP_OK in r
|
||||
|
||||
@ -281,8 +285,14 @@ def test_ensure_status_code_is_shown_on_all_themes(http_server, style, msg):
|
||||
http_server + '/status/msg',
|
||||
'--raw', msg, env=env)
|
||||
|
||||
# Custom reason phrase are most likely to disappear,
|
||||
# due to HTTP/2+ protocols. urllib3.future replace them anyway in HTTP/1.1
|
||||
# for uniformity across protocols.
|
||||
if 'CUSTOM' in msg:
|
||||
msg = ' OK'
|
||||
|
||||
# Trailing space is stripped away.
|
||||
assert 'HTTP/1.0 200' + msg.rstrip() in strip_colors(r)
|
||||
assert 'HTTP/1.1 200' + msg.rstrip() in strip_colors(r)
|
||||
|
||||
|
||||
class TestPrettyOptions:
|
||||
|
Reference in New Issue
Block a user