Skip to main content
Glama

Voice Mode

by mbailey
test_whisper_model_cli.py4.94 kB
"""Tests for Whisper model management CLI commands.""" import pytest from click.testing import CliRunner from unittest.mock import patch, MagicMock from voice_mode.cli import voice_mode_main_cli class TestWhisperModelsCLI: """Test whisper models listing command.""" def test_whisper_models_command(self): """Test that whisper models command runs successfully.""" runner = CliRunner() # The command is now 'whisper model --all' not 'whisper models' result = runner.invoke(voice_mode_main_cli, ['whisper', 'model', '--all']) assert result.exit_code == 0 assert 'Available Whisper Models' in result.output or 'Whisper Models' in result.output class TestWhisperModelActiveCLI: """Test whisper model active command.""" def test_show_active_model(self): """Test showing the currently active model.""" runner = CliRunner() # Command is now just 'whisper model' without 'active' result = runner.invoke(voice_mode_main_cli, ['whisper', 'model']) assert result.exit_code == 0 or result.exit_code == 1 # May fail if no models installed assert 'Active' in result.output or 'model' in result.output.lower() def test_set_active_model(self): """Test setting a new active model.""" runner = CliRunner() # Command is now 'whisper model <model>' not 'whisper model active <model>' # With --no-install to avoid actually installing with patch('voice_mode.tools.whisper.models.is_whisper_model_installed') as mock_installed: mock_installed.return_value = True result = runner.invoke(voice_mode_main_cli, ['whisper', 'model', 'small', '--no-install']) assert result.exit_code == 0 assert "small" in result.output.lower() def test_set_active_model_not_installed(self): """Test setting an active model that's not installed.""" runner = CliRunner() # With --no-install, setting a non-installed model should fail with patch('voice_mode.tools.whisper.models.is_whisper_model_installed') as mock_installed: mock_installed.return_value = False result = runner.invoke(voice_mode_main_cli, ['whisper', 'model', 'small', '--no-install']) # Should fail with exit code 1 assert result.exit_code == 1 assert "not installed" in result.output.lower() or "not available" in result.output.lower() class TestWhisperModelInstallCLI: """Test whisper model install command.""" @pytest.mark.skip(reason="Test needs refactoring after services directory removal") def test_install_default_model(self): """Test installing the default model.""" runner = CliRunner() with patch('asyncio.run') as mock_run: mock_run.return_value = '{"success": true, "results": [{"model": "large-v2"}]}' result = runner.invoke(voice_mode_main_cli, ['whisper', 'model', 'install']) assert result.exit_code == 0 assert '✅ Model download completed!' in result.output @pytest.mark.skip(reason="Test needs refactoring after services directory removal") def test_install_specific_model(self): """Test installing a specific model.""" runner = CliRunner() with patch('asyncio.run') as mock_run: mock_run.return_value = '{"success": true, "results": [{"model": "small"}]}' result = runner.invoke(voice_mode_main_cli, ['whisper', 'model', 'install', 'small']) assert result.exit_code == 0 assert '✅ Model download completed!' in result.output @pytest.mark.skip(reason="Test needs refactoring after services directory removal") def test_install_invalid_model(self): """Test installing an invalid model name.""" runner = CliRunner() with patch('asyncio.run') as mock_run: mock_run.return_value = '{"success": false, "error": "Invalid model: invalid-model"}' result = runner.invoke(voice_mode_main_cli, ['whisper', 'model', 'install', 'invalid-model']) # Should still exit 0 but show error message assert result.exit_code == 0 assert '❌ Download failed' in result.output class TestWhisperModelRemoveCLI: """Test whisper model remove command.""" @pytest.mark.skip(reason="Remove command has been removed from CLI") def test_remove_model_with_confirmation(self): """Test removing a model with confirmation.""" pass @pytest.mark.skip(reason="Remove command has been removed from CLI") def test_remove_model_not_installed(self): """Test removing a model that's not installed.""" pass @pytest.mark.skip(reason="Remove command has been removed from CLI") def test_remove_invalid_model(self): """Test removing an invalid model name.""" pass

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mbailey/voicemode'

If you have feedback or need assistance with the MCP directory API, please join our Discord server