1
0
mirror of https://github.com/httpie/cli.git synced 2025-01-07 23:01:53 +02:00

Fixed --form file upload mixed with redirected stdin error handling.

Close #840
This commit is contained in:
Jakub Roztocil 2020-01-23 15:54:43 +01:00
parent 6e9cd139a6
commit e6bad645ed
5 changed files with 31 additions and 2 deletions

View File

@ -6,6 +6,11 @@ This document records all notable changes to `HTTPie <https://httpie.org>`_.
This project adheres to `Semantic Versioning <https://semver.org/>`_.
`2.1.0-dev`_ (unreleased)
-------------------------
* Fixed ``--form`` file upload mixed with redirected ``stdin`` error handling.
`2.0.0`_ (2020-01-12)
-------------------------
* Removed Python 2.7 support (`EOL Jan 2020 <https://www.python.org/doc/sunset-python-2/>`_).

View File

@ -3,6 +3,6 @@ HTTPie - a CLI, cURL-like tool for humans.
"""
__version__ = '2.0.0'
__version__ = '2.1.0-dev'
__author__ = 'Jakub Roztocil'
__licence__ = 'BSD'

View File

@ -246,7 +246,8 @@ class HTTPieArgumentParser(argparse.ArgumentParser):
if self.args.data:
self.error('Request body (from stdin or a file) and request '
'data (key=value) cannot be mixed. Pass '
'--ignore-stdin to let key/value take priority.')
'--ignore-stdin to let key/value take priority. '
'See https://httpie.org/doc#scripting for details.')
self.args.data = getattr(fd, 'buffer', fd).read()
def _guess_method(self):

View File

@ -98,6 +98,27 @@ def test_POST_file(httpbin_both):
assert FILE_CONTENT in r
def test_form_POST_file_redirected_stdin(httpbin):
"""
<https://github.com/jakubroztocil/httpie/issues/840>
"""
with open(FILE_PATH) as f:
r = http(
'--form',
'POST',
httpbin + '/post',
'file@' + FILE_PATH,
tolerate_error_exit_status=True,
env=MockEnvironment(
stdin=f,
stdin_isatty=False,
),
)
assert r.exit_status == ExitStatus.ERROR
assert 'cannot be mixed' in r.stderr
def test_headers(httpbin_both):
r = http('GET', httpbin_both + '/headers', 'Foo:bar')
assert HTTP_OK in r

View File

@ -3,6 +3,7 @@ import os
import pytest
from httpie.cli.exceptions import ParseError
from httpie.status import ExitStatus
from utils import MockEnvironment, http, HTTP_OK
from fixtures import FILE_PATH_ARG, FILE_PATH, FILE_CONTENT
@ -77,4 +78,5 @@ class TestRequestBodyFromFilePath:
env=env,
tolerate_error_exit_status=True,
)
assert r.exit_status == ExitStatus.ERROR
assert 'cannot be mixed' in r.stderr