forked from extern/httpie-cli
Added tests for --quiet flag
This commit is contained in:
parent
a4a1e8d43b
commit
4bd2e622a5
@ -24,7 +24,7 @@ from httpie.cli.constants import (
|
|||||||
)
|
)
|
||||||
from httpie.cli.exceptions import ParseError
|
from httpie.cli.exceptions import ParseError
|
||||||
from httpie.cli.requestitems import RequestItems
|
from httpie.cli.requestitems import RequestItems
|
||||||
from httpie.context import Environment
|
from httpie.context import Environment, DEVNULL_PATH
|
||||||
from httpie.plugins.registry import plugin_manager
|
from httpie.plugins.registry import plugin_manager
|
||||||
from httpie.utils import ExplicitNullAuth, get_content_type
|
from httpie.utils import ExplicitNullAuth, get_content_type
|
||||||
|
|
||||||
@ -135,16 +135,11 @@ class HTTPieArgumentParser(argparse.ArgumentParser):
|
|||||||
Modify `env.stdout` and `env.stdout_isatty` based on args, if needed.
|
Modify `env.stdout` and `env.stdout_isatty` based on args, if needed.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if self.args.quiet:
|
|
||||||
self.env.stdout = self.env.devnull
|
|
||||||
self.env.stdout_isatty = self.env.devnull_isatty
|
|
||||||
self.env.stderr = self.env.devnull
|
|
||||||
self.env.stderr_isatty = self.env.devnull_isatty
|
|
||||||
|
|
||||||
self.args.output_file_specified = bool(self.args.output_file)
|
self.args.output_file_specified = bool(self.args.output_file)
|
||||||
if self.args.download:
|
if self.args.download:
|
||||||
# FIXME: Come up with a cleaner solution.
|
# FIXME: Come up with a cleaner solution.
|
||||||
if not self.args.output_file and not self.env.stdout_isatty and not self.args.quiet:
|
if not self.args.output_file and not self.env.stdout_isatty:
|
||||||
# Use stdout as the download output file.
|
# Use stdout as the download output file.
|
||||||
self.args.output_file = self.env.stdout
|
self.args.output_file = self.env.stdout
|
||||||
# With `--download`, we write everything that would normally go to
|
# With `--download`, we write everything that would normally go to
|
||||||
@ -169,6 +164,11 @@ class HTTPieArgumentParser(argparse.ArgumentParser):
|
|||||||
self.env.stdout = self.args.output_file
|
self.env.stdout = self.args.output_file
|
||||||
self.env.stdout_isatty = False
|
self.env.stdout_isatty = False
|
||||||
|
|
||||||
|
if self.args.quiet:
|
||||||
|
self.env.devnull = open(DEVNULL_PATH, 'w')
|
||||||
|
self.env.stdout = self.env.devnull
|
||||||
|
self.env.stderr = self.env.devnull
|
||||||
|
|
||||||
def _process_auth(self):
|
def _process_auth(self):
|
||||||
# TODO: refactor & simplify this method.
|
# TODO: refactor & simplify this method.
|
||||||
self.args.auth_plugin = None
|
self.args.auth_plugin = None
|
||||||
|
@ -14,6 +14,8 @@ from httpie.config import DEFAULT_CONFIG_DIR, Config, ConfigFileError
|
|||||||
|
|
||||||
from httpie.utils import repr_dict
|
from httpie.utils import repr_dict
|
||||||
|
|
||||||
|
DEVNULL_PATH = os.devnull
|
||||||
|
|
||||||
|
|
||||||
class Environment:
|
class Environment:
|
||||||
"""
|
"""
|
||||||
@ -35,8 +37,8 @@ class Environment:
|
|||||||
stdout_encoding: str = None
|
stdout_encoding: str = None
|
||||||
stderr: IO = sys.stderr
|
stderr: IO = sys.stderr
|
||||||
stderr_isatty: bool = stderr.isatty()
|
stderr_isatty: bool = stderr.isatty()
|
||||||
devnull: IO = open(os.devnull, "w")
|
devnull: IO = None
|
||||||
devnull_isatty: bool = devnull.isatty()
|
devnull_isatty: bool = False
|
||||||
colors = 256
|
colors = 256
|
||||||
program_name: str = 'http'
|
program_name: str = 'http'
|
||||||
if not is_windows:
|
if not is_windows:
|
||||||
@ -48,7 +50,7 @@ class Environment:
|
|||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
# noinspection PyUnresolvedReferences
|
# noinspection PyUnresolvedReferences
|
||||||
import colorama.initialisex
|
import colorama.initialise
|
||||||
stdout = colorama.initialise.wrap_stream(
|
stdout = colorama.initialise.wrap_stream(
|
||||||
stdout, convert=None, strip=None,
|
stdout, convert=None, strip=None,
|
||||||
autoreset=True, wrap=True
|
autoreset=True, wrap=True
|
||||||
|
@ -189,3 +189,11 @@ class TestDownloads:
|
|||||||
assert os.listdir('.') == [expected_filename]
|
assert os.listdir('.') == [expected_filename]
|
||||||
finally:
|
finally:
|
||||||
os.chdir(orig_cwd)
|
os.chdir(orig_cwd)
|
||||||
|
|
||||||
|
def test_download_quietflag(self, httpbin_both, httpbin):
|
||||||
|
robots_txt = '/robots.txt'
|
||||||
|
body = urlopen(httpbin + robots_txt).read().decode()
|
||||||
|
env = MockEnvironment(stdin_isatty=True, stdout_isatty=False)
|
||||||
|
r = http('--quiet', '--download', httpbin_both.url + robots_txt, env=env)
|
||||||
|
assert r.stderr == ''
|
||||||
|
assert body == r
|
||||||
|
@ -32,6 +32,15 @@ def test_output_option(httpbin, stdout_isatty):
|
|||||||
assert actual_body == expected_body
|
assert actual_body == expected_body
|
||||||
|
|
||||||
|
|
||||||
|
class TestQuietFlag:
|
||||||
|
def test_quiet(self, httpbin):
|
||||||
|
r = http('--quiet', 'GET', httpbin.url + '/get')
|
||||||
|
# check stdin
|
||||||
|
assert r.stderr == ''
|
||||||
|
# Check stdout
|
||||||
|
assert str(r) == ''
|
||||||
|
|
||||||
|
|
||||||
class TestVerboseFlag:
|
class TestVerboseFlag:
|
||||||
def test_verbose(self, httpbin):
|
def test_verbose(self, httpbin):
|
||||||
r = http('--verbose',
|
r = http('--verbose',
|
||||||
|
Loading…
Reference in New Issue
Block a user