"""Unit tests for utils platform detection. Tests cover: - get_platform() function - Docker environment detection - WebSocket plugin runtime mode """ from __future__ import annotations import os import sys from unittest.mock import patch from importlib import import_module def get_platform_module(): """Lazy import to avoid circular import issues.""" return import_module('langbot.pkg.utils.platform') class TestGetPlatform: """Tests for get_platform function.""" def test_returns_docker_when_dockerenv_exists(self): """Test returns 'docker' when /.dockerenv file exists.""" platform_module = get_platform_module() with patch('os.path.exists', return_value=True): with patch.dict(os.environ, {}, clear=True): result = platform_module.get_platform() assert result == 'docker' def test_returns_docker_when_env_var_true(self): """Test returns 'docker' when DOCKER_ENV=true.""" platform_module = get_platform_module() with patch('os.path.exists', return_value=False): with patch.dict(os.environ, {'DOCKER_ENV': 'true'}, clear=True): result = platform_module.get_platform() assert result == 'docker' def test_returns_sys_platform_when_not_docker(self): """Test returns sys.platform when not in Docker.""" platform_module = get_platform_module() with patch('os.path.exists', return_value=False): with patch.dict(os.environ, {'DOCKER_ENV': 'false'}, clear=True): result = platform_module.get_platform() assert result == sys.platform def test_returns_sys_platform_when_no_env_var(self): """Test returns sys.platform when DOCKER_ENV not set.""" platform_module = get_platform_module() with patch('os.path.exists', return_value=False): # Make sure DOCKER_ENV is not set env_copy = os.environ.copy() if 'DOCKER_ENV' in env_copy: del env_copy['DOCKER_ENV'] with patch.dict(os.environ, env_copy, clear=True): result = platform_module.get_platform() assert result == sys.platform def test_standalone_runtime_default_false(self): """Test standalone_runtime defaults to False.""" platform_module = get_platform_module() # Check the module attribute assert platform_module.standalone_runtime is False def test_use_websocket_returns_standalone_runtime(self): """Test use_websocket_to_connect_plugin_runtime returns standalone_runtime.""" platform_module = get_platform_module() result = platform_module.use_websocket_to_connect_plugin_runtime() assert result == platform_module.standalone_runtime def test_standalone_runtime_can_be_modified(self): """Test standalone_runtime can be modified.""" platform_module = get_platform_module() original = platform_module.standalone_runtime # Modify platform_module.standalone_runtime = True assert platform_module.use_websocket_to_connect_plugin_runtime() is True # Restore platform_module.standalone_runtime = original