Added additional tests for flag and better documentation

This commit is contained in:
Nicolas Beltran 2020-07-14 16:33:07 -05:00 committed by Jakub Roztocil
parent d546081340
commit 7e38f9ccf0
3 changed files with 50 additions and 8 deletions

View File

@ -1156,7 +1156,7 @@ be printed via several options:
``--verbose, -v`` Print the whole HTTP exchange (request and response). ``--verbose, -v`` Print the whole HTTP exchange (request and response).
This option also enables ``--all`` (see below). This option also enables ``--all`` (see below).
``--print, -p`` Selects parts of the HTTP exchange. ``--print, -p`` Selects parts of the HTTP exchange.
``--quiet, -q`` Doesn't print anything. ``--quiet, -q`` Doesn't print anything. Overrides other output flags.
================= ===================================================== ================= =====================================================
``--verbose`` can often be useful for debugging the request and generating ``--verbose`` can often be useful for debugging the request and generating

View File

@ -5,6 +5,7 @@ from urllib.request import urlopen
import pytest import pytest
import mock import mock
import requests
from requests.structures import CaseInsensitiveDict from requests.structures import CaseInsensitiveDict
from httpie.downloads import ( from httpie.downloads import (
@ -190,10 +191,12 @@ class TestDownloads:
finally: finally:
os.chdir(orig_cwd) os.chdir(orig_cwd)
def test_download_quietflag(self, httpbin_both, httpbin): def test_download_with_quiet_flag(self, httpbin_both, httpbin):
robots_txt = '/robots.txt' robots_txt = '/robots.txt'
body = urlopen(httpbin + robots_txt).read().decode() body = requests.get(httpbin + robots_txt).text
env = MockEnvironment(stdin_isatty=True, stdout_isatty=False) env = MockEnvironment(stdin_isatty=True, stdout_isatty=False)
r = http('--quiet', '--download', httpbin_both.url + robots_txt, env=env) r = http('--quiet', '--download', httpbin_both.url + robots_txt, env=env)
assert r.stderr == '' assert r.stderr == ''
assert body == r assert env.devnull == env.stderr
assert env.devnull == env.stdout

View File

@ -1,6 +1,8 @@
import argparse import argparse
import mock
import json import json
import os import os
import io
from tempfile import gettempdir from tempfile import gettempdir
from urllib.request import urlopen from urllib.request import urlopen
@ -33,13 +35,50 @@ def test_output_option(httpbin, stdout_isatty):
class TestQuietFlag: class TestQuietFlag:
def test_quiet(self, httpbin):
r = http('--quiet', 'GET', httpbin.url + '/get') @pytest.mark.parametrize('argument_name', ['--quiet', '-q'])
# check stdin def test_quiet(self, httpbin, argument_name):
env = MockEnvironment(stdin_isatty=True, stdout_isatty=True)
r = http(argument_name, 'GET', httpbin.url + '/get', env=env)
assert env.stdout == env.devnull
assert env.stderr == env.devnull
assert r.stderr == '' assert r.stderr == ''
# Check stdout
assert str(r) == '' assert str(r) == ''
@pytest.mark.parametrize('argument_name', ['--quiet', '-q'])
def test_quiet_correct_message(self, httpbin, argument_name):
sim_devnull = io.BytesIO()
env = MockEnvironment(stdin_isatty=True, stdout_isatty=True)
env.devnull = sim_devnull
r = http(argument_name, 'GET', httpbin.url + '/get', env=env)
assert env.stdout == env.devnull
assert env.stderr == env.devnull
assert r.stderr == ''
assert HTTP_OK in r.devnull.decode()
assert str(r) == ''
@mock.patch('httpie.cli.argtypes.AuthCredentials._getpass',
new=lambda self, prompt:'password')
def test_quiet_password_prompt(self, httpbin):
""" Tests whether httpie still prompts for password when request
requires authetication and only username is provided"""
env = MockEnvironment(stdin_isatty=True, stdout_isatty=True)
env.devnull = io.BytesIO()
r = http('--quiet', '--auth', 'user','GET', httpbin.url + '/basic-auth/user/password', env=env)
assert HTTP_OK in r.devnull.decode()
assert env.stdout == env.devnull
assert env.stderr == env.devnull
assert str(r) == ''
assert r.stderr == ''
@pytest.mark.parametrize('argument_name', ['-h', '-b', '-v', '-p=hH'])
def test_quiet_flag_overrides_other_output_options(self, httpbin, argument_name):
env = MockEnvironment(stdin_isatty=True, stdout_isatty=True)
r = http('--quiet', argument_name, httpbin.url + '/GET', env=env)
assert env.stdout == env.devnull
assert env.stderr == env.devnull
assert str(r) == ''
assert r.stderr == ''
class TestVerboseFlag: class TestVerboseFlag:
def test_verbose(self, httpbin): def test_verbose(self, httpbin):