mirror of
https://github.com/httpie/cli.git
synced 2025-03-13 06:18:33 +01:00
Merge 301f3162c8
into 5b604c37c6
This commit is contained in:
commit
c2a6da3bdf
@ -258,6 +258,9 @@ def compress_request(
|
||||
body_bytes = request.body.encode()
|
||||
elif hasattr(request.body, 'read'):
|
||||
body_bytes = request.body.read()
|
||||
# The body is consumed now, so if we don't end up compressing we should
|
||||
# use the bytes we just read
|
||||
request.body = body_bytes
|
||||
else:
|
||||
body_bytes = request.body
|
||||
deflated_data = deflater.compress(body_bytes)
|
||||
|
2
tests/fixtures/__init__.py
vendored
2
tests/fixtures/__init__.py
vendored
@ -22,6 +22,7 @@ FILE_PATH = FIXTURES_ROOT / 'test.txt'
|
||||
JSON_FILE_PATH = FIXTURES_ROOT / 'test.json'
|
||||
JSON_WITH_DUPE_KEYS_FILE_PATH = FIXTURES_ROOT / 'test_with_dupe_keys.json'
|
||||
BIN_FILE_PATH = FIXTURES_ROOT / 'test.bin'
|
||||
TINY_FILE_PATH = FIXTURES_ROOT / 'test_tiny.txt'
|
||||
|
||||
XML_FILES_PATH = FIXTURES_ROOT / 'xmldata'
|
||||
XML_FILES_VALID = list((XML_FILES_PATH / 'valid').glob('*_raw.xml'))
|
||||
@ -39,6 +40,7 @@ SESSION_VARIABLES = {
|
||||
FILE_PATH_ARG = patharg(FILE_PATH)
|
||||
BIN_FILE_PATH_ARG = patharg(BIN_FILE_PATH)
|
||||
JSON_FILE_PATH_ARG = patharg(JSON_FILE_PATH)
|
||||
TINY_FILE_PATH_ARG = patharg(TINY_FILE_PATH)
|
||||
|
||||
# Strip because we don't want new lines in the data so that we can
|
||||
# easily count occurrences also when embedded in JSON (where the new
|
||||
|
1
tests/fixtures/test_tiny.txt
vendored
Normal file
1
tests/fixtures/test_tiny.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
test
|
@ -11,7 +11,7 @@ our zlib-encoded request data.
|
||||
import base64
|
||||
import zlib
|
||||
|
||||
from .fixtures import FILE_PATH, FILE_CONTENT
|
||||
from .fixtures import FILE_PATH, FILE_CONTENT, TINY_FILE_PATH_ARG
|
||||
from httpie.status import ExitStatus
|
||||
from .utils import StdinBytesIO, http, HTTP_OK, MockEnvironment
|
||||
|
||||
@ -138,3 +138,16 @@ def test_compress_file(httpbin_both):
|
||||
'multipart/form-data; boundary=')
|
||||
assert r.json['files'] == {}
|
||||
assert FILE_CONTENT not in r
|
||||
|
||||
|
||||
def test_compress_skip_negative_ratio_file_upload(httpbin):
|
||||
"""Reading the upload body but not compressing it doesn't cause a hang."""
|
||||
r = http(
|
||||
'--compress',
|
||||
'PUT',
|
||||
httpbin + '/put',
|
||||
f'@{TINY_FILE_PATH_ARG}',
|
||||
)
|
||||
assert HTTP_OK in r
|
||||
assert 'Content-Encoding' not in r.json['headers']
|
||||
assert r.json['data'].strip() == 'test'
|
||||
|
Loading…
Reference in New Issue
Block a user