From 4831a72319499f68be901abc7158c6890a9219da Mon Sep 17 00:00:00 2001 From: Kevin Lacaille Date: Mon, 2 May 2022 13:49:17 -0400 Subject: [PATCH 1/2] Refactored quiet and verbosity tests. --- tests/unit/test_cli_main.py | 73 ++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 37 deletions(-) diff --git a/tests/unit/test_cli_main.py b/tests/unit/test_cli_main.py index 8a90ab4e8..881472bfc 100644 --- a/tests/unit/test_cli_main.py +++ b/tests/unit/test_cli_main.py @@ -18,6 +18,7 @@ import click from click.testing import CliRunner +from unittest import mock from planet.cli import cli LOGGER = logging.getLogger(__name__) @@ -28,28 +29,32 @@ 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): + + # 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): + 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() @@ -58,27 +63,21 @@ 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(): + + # 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 From 5e433363710231859343ab58086c834ee1e9ce77 Mon Sep 17 00:00:00 2001 From: Sean Gillies Date: Mon, 2 May 2022 12:11:25 -0600 Subject: [PATCH 2/2] Add test function docstrings --- tests/unit/test_cli_main.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/unit/test_cli_main.py b/tests/unit/test_cli_main.py index 881472bfc..ea0380f71 100644 --- a/tests/unit/test_cli_main.py +++ b/tests/unit/test_cli_main.py @@ -31,6 +31,7 @@ def debug_input(): @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() @@ -50,6 +51,7 @@ def test(ctx): ("--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 @@ -68,6 +70,7 @@ def test(): def test_cli_invalid_verbosity(): + """Get a BadParameter error for invalid --verbosity.""" # dummy command so we can invoke cli @click.command()