From 11aad79720338f7d10b7877f34f5a02ecd0b9e4c Mon Sep 17 00:00:00 2001 From: Pim van Pelt Date: Sun, 3 Aug 2025 11:50:44 +0200 Subject: [PATCH] Restore behavior where 'kumacli monitor' shows the subcommands --- src/kumacli/cmd/maintenance.py | 5 ++--- src/kumacli/cmd/monitor.py | 3 ++- tests/test_cli_integration.py | 14 ++++++++++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/kumacli/cmd/maintenance.py b/src/kumacli/cmd/maintenance.py index ad81ab0..ae19c95 100644 --- a/src/kumacli/cmd/maintenance.py +++ b/src/kumacli/cmd/maintenance.py @@ -182,6 +182,7 @@ def setup_maintenance_parser(subparsers): maintenance_parser = subparsers.add_parser( "maintenance", help="Maintenance operations" ) + setup_maintenance_parser.parser = maintenance_parser maintenance_subparsers = maintenance_parser.add_subparsers( dest="maintenance_action", help="Maintenance actions" ) @@ -239,9 +240,7 @@ def handle_maintenance_command(args, client): maintenance_commands = MaintenanceCommands(client) if not args.maintenance_action: - print( - "Error: No maintenance action specified. Use --help for usage information." - ) + setup_maintenance_parser.parser.print_help() return False if args.maintenance_action == "list": maintenance_commands.list_maintenances() diff --git a/src/kumacli/cmd/monitor.py b/src/kumacli/cmd/monitor.py index 1e7dc76..2587b0f 100644 --- a/src/kumacli/cmd/monitor.py +++ b/src/kumacli/cmd/monitor.py @@ -162,6 +162,7 @@ class MonitorCommands: def setup_monitor_parser(subparsers): """Setup monitor command parser""" monitor_parser = subparsers.add_parser("monitor", help="Monitor operations") + setup_monitor_parser.parser = monitor_parser monitor_subparsers = monitor_parser.add_subparsers( dest="monitor_action", help="Monitor actions" ) @@ -222,7 +223,7 @@ def handle_monitor_command(args, client): monitor_commands = MonitorCommands(client) if not args.monitor_action: - print("Error: No monitor action specified. Use --help for usage information.") + setup_monitor_parser.parser.print_help() return False if args.monitor_action == "list": monitor_commands.list_monitors( diff --git a/tests/test_cli_integration.py b/tests/test_cli_integration.py index 6bc6940..6ed5b24 100644 --- a/tests/test_cli_integration.py +++ b/tests/test_cli_integration.py @@ -50,13 +50,16 @@ class TestCLIIntegration: mock_args = Mock() mock_args.monitor_action = None + # Setup parser reference to simulate having called setup_monitor_parser + mock_parser = Mock() + setup_monitor_parser.parser = mock_parser + # Execute result = handle_monitor_command(mock_args, mock_client) # Verify assert result is False - captured = capsys.readouterr() - assert "Error: No monitor action specified" in captured.out + mock_parser.print_help.assert_called_once() def test_maintenance_help_message(self, mock_client, capsys): """Test maintenance command shows help when no action specified""" @@ -64,13 +67,16 @@ class TestCLIIntegration: mock_args = Mock() mock_args.maintenance_action = None + # Setup parser reference to simulate having called setup_maintenance_parser + mock_parser = Mock() + setup_maintenance_parser.parser = mock_parser + # Execute result = handle_maintenance_command(mock_args, mock_client) # Verify assert result is False - captured = capsys.readouterr() - assert "Error: No maintenance action specified" in captured.out + mock_parser.print_help.assert_called_once() def test_monitor_command_with_full_args(self, mock_client): """Test monitor command with complete argument structure"""