Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 39 additions & 37 deletions tests/unit/test_cli_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import click
from click.testing import CliRunner

from unittest import mock
from planet.cli import cli

LOGGER = logging.getLogger(__name__)
Expand All @@ -28,28 +29,34 @@ def debug_input():
return ['debug', ' debug ', 'debu', 45]


def test_cli_orders_quiet():
@pytest.mark.parametrize("option,quiet", [("", False), ("--quiet", True)])
def test_cli_orders_quiet(option, quiet):
"""Check that --quiet is passed in context to subcommands."""

# dummy command so we can invoke cli
@click.command()
@click.pass_context
def test(ctx):
assert ctx.obj['QUIET'] is quiet

cli.main.add_command(test)

runner = CliRunner()
runner.invoke(cli.main, args=[option, 'test'], catch_exceptions=False)

# Valid and invalid inputs for the "quiet" flag
valid_quiet_inputs = ['--quiet', ' --quiet', ' --quiet ']
invalid_quiet_inputs = ['--quiet ', '-q', '--not_a_valid_input', 123]

# Test the valid quiet inputs
for quiet_input in valid_quiet_inputs:
valid_result = runner.invoke(cli.main, args=[quiet_input, 'orders'])
assert not valid_result.exception
assert valid_result.exit_code == 0
# Test the invalid quiet inputs
for quiet_input in invalid_quiet_inputs:
invalid_result = runner.invoke(cli.main, args=[quiet_input, 'orders'])
assert invalid_result.exception
assert invalid_result.exit_code != 0
@pytest.mark.parametrize("verbosity,log_level",
[("", logging.WARNING),
("--verbosity=info", logging.INFO),
("--verbosity=debug", logging.DEBUG)])
@mock.patch('planet.cli.cli.logging.basicConfig')
def test_cli_info_verbosity(mock_config, verbosity, log_level):
"""Check that main command configures logging with the proper level."""

def configtest(stream, level, format):
assert level == log_level

def test_cli_info_verbosity(monkeypatch):
log_level = None
mock_config.side_effect = configtest

# dummy command so we can invoke cli
@click.command()
Expand All @@ -58,27 +65,22 @@ def test():

cli.main.add_command(test)

def configtest(stream, level, format):
nonlocal log_level
log_level = level
runner = CliRunner()
runner.invoke(cli.main, args=[verbosity, 'test'], catch_exceptions=False)

monkeypatch.setattr(cli.logging, 'basicConfig', configtest)

def test_cli_invalid_verbosity():
"""Get a BadParameter error for invalid --verbosity."""

# dummy command so we can invoke cli
@click.command()
def test():
pass

cli.main.add_command(test)

runner = CliRunner()
result = runner.invoke(cli.main, args=['test'])
assert result.exit_code == 0
assert log_level == logging.WARNING

def paramaterized_tests(debug_input):
runner = CliRunner()
result = runner.invoke(cli.main,
args=['--verbosity', debug_input, 'orders'])
# Testing to ensure command was run succesfully and
# \log_level set to debug
if debug_input not in ['debug', ' debug ']:
assert result.exit_code == 2
else:
assert result.exit_code == 0
assert log_level == logging.DEBUG

paramaterized_tests(debug_input)
result = runner.invoke(cli.main,
args=["--verbosity=nothing", 'test'],
catch_exceptions=False)
assert result.exit_code == 2