Skip to main content
Glama

Voice Mode

by mbailey
test_dependencies.py•7.29 kB
"""Tests for dependency management system.""" import pytest from unittest.mock import Mock, patch, MagicMock from voice_mode.utils.dependencies.cache import DependencyCache from voice_mode.utils.dependencies.checker import detect_platform, check_dependency from voice_mode.utils.dependencies.package_managers import ( BrewManager, AptManager, DnfManager, get_package_manager ) class TestDependencyCache: """Test dependency caching behavior.""" def test_cache_stores_present_packages(self): """Test that cache stores packages that are installed.""" cache = DependencyCache() # Present package gets cached cache.set("ffmpeg", True) assert cache.get("ffmpeg") is True def test_cache_does_not_store_missing_packages(self): """Test that cache doesn't store missing packages.""" cache = DependencyCache() # Missing package doesn't get cached cache.set("missing-pkg", False) assert cache.get("missing-pkg") is None def test_cache_clear(self): """Test cache clearing.""" cache = DependencyCache() cache.set("ffmpeg", True) assert cache.get("ffmpeg") is True cache.clear() assert cache.get("ffmpeg") is None class TestPlatformDetection: """Test platform detection logic.""" @patch('platform.system') def test_detect_darwin(self, mock_system): """Test macOS detection.""" mock_system.return_value = 'Darwin' assert detect_platform() == 'darwin' @patch('platform.system') @patch('os.path.exists') def test_detect_debian(self, mock_exists, mock_system): """Test Debian/Ubuntu detection.""" mock_system.return_value = 'Linux' def exists_side_effect(path): if path == '/etc/debian_version': return True return False mock_exists.side_effect = exists_side_effect # Mock /proc/version to not contain WSL with patch('builtins.open', create=True) as mock_open: mock_open.return_value.__enter__.return_value.read.return_value = 'Linux version 5.0' assert detect_platform() == 'debian' @patch('platform.system') @patch('os.path.exists') def test_detect_fedora(self, mock_exists, mock_system): """Test Fedora detection.""" mock_system.return_value = 'Linux' def exists_side_effect(path): if path == '/etc/fedora-release': return True return False mock_exists.side_effect = exists_side_effect # Mock /proc/version to not contain WSL with patch('builtins.open', create=True) as mock_open: mock_open.return_value.__enter__.return_value.read.return_value = 'Linux version 5.0' assert detect_platform() == 'fedora' class TestPackageManagers: """Test package manager implementations.""" @patch('shutil.which') def test_brew_manager_available(self, mock_which): """Test Brew manager detection.""" mock_which.return_value = '/usr/local/bin/brew' manager = BrewManager() assert manager.check_available() is True @patch('shutil.which') def test_brew_manager_not_available(self, mock_which): """Test Brew manager when not installed.""" mock_which.return_value = None manager = BrewManager() assert manager.check_available() is False @patch('subprocess.run') def test_brew_check_package_installed(self, mock_run): """Test checking if package is installed via Brew.""" mock_run.return_value = Mock(returncode=0) manager = BrewManager() assert manager.check_package("ffmpeg") is True @patch('subprocess.run') def test_brew_check_package_not_installed(self, mock_run): """Test checking if package is not installed via Brew.""" mock_run.return_value = Mock(returncode=1) manager = BrewManager() assert manager.check_package("ffmpeg") is False @patch('shutil.which') def test_apt_manager_available(self, mock_which): """Test APT manager detection.""" mock_which.return_value = '/usr/bin/apt-get' manager = AptManager() assert manager.check_available() is True @patch('subprocess.run') def test_apt_check_package_installed(self, mock_run): """Test checking if package is installed via APT.""" mock_run.return_value = Mock(returncode=0, stdout='ii ffmpeg') manager = AptManager() assert manager.check_package("ffmpeg") is True @patch('shutil.which') def test_dnf_manager_available(self, mock_which): """Test DNF manager detection.""" mock_which.return_value = '/usr/bin/dnf' manager = DnfManager() assert manager.check_available() is True @patch('subprocess.run') def test_dnf_check_package_installed(self, mock_run): """Test checking if package is installed via DNF.""" mock_run.return_value = Mock(returncode=0) manager = DnfManager() assert manager.check_package("ffmpeg") is True class TestPackageManagerSelection: """Test automatic package manager selection.""" @patch('voice_mode.utils.dependencies.package_managers.BrewManager.check_available') def test_get_package_manager_brew(self, mock_brew): """Test getting Brew manager when available.""" mock_brew.return_value = True manager = get_package_manager() assert isinstance(manager, BrewManager) @patch('voice_mode.utils.dependencies.package_managers.BrewManager.check_available') @patch('voice_mode.utils.dependencies.package_managers.DnfManager.check_available') def test_get_package_manager_dnf(self, mock_dnf, mock_brew): """Test getting DNF manager when Brew not available.""" mock_brew.return_value = False mock_dnf.return_value = True manager = get_package_manager() assert isinstance(manager, DnfManager) @patch('voice_mode.utils.dependencies.package_managers.BrewManager.check_available') @patch('voice_mode.utils.dependencies.package_managers.DnfManager.check_available') @patch('voice_mode.utils.dependencies.package_managers.AptManager.check_available') def test_get_package_manager_apt(self, mock_apt, mock_dnf, mock_brew): """Test getting APT manager when others not available.""" mock_brew.return_value = False mock_dnf.return_value = False mock_apt.return_value = True manager = get_package_manager() assert isinstance(manager, AptManager) @patch('voice_mode.utils.dependencies.package_managers.BrewManager.check_available') @patch('voice_mode.utils.dependencies.package_managers.DnfManager.check_available') @patch('voice_mode.utils.dependencies.package_managers.AptManager.check_available') def test_get_package_manager_none_available(self, mock_apt, mock_dnf, mock_brew): """Test error when no package manager is available.""" mock_brew.return_value = False mock_dnf.return_value = False mock_apt.return_value = False with pytest.raises(RuntimeError, match="No supported package manager found"): get_package_manager()

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