from pathlib import Path from lightrag.api.runtime_validation import ( RuntimeEnvironment, validate_runtime_target, validate_runtime_target_from_env_file, ) def test_validate_runtime_target_skips_when_not_declared() -> None: is_valid, error_message = validate_runtime_target(None) assert is_valid is True assert error_message is None def test_validate_runtime_target_accepts_host_on_host() -> None: is_valid, error_message = validate_runtime_target( "host", RuntimeEnvironment( in_container=False, in_docker=False, in_kubernetes=False, ), ) assert is_valid is True assert error_message is None def test_validate_runtime_target_rejects_host_in_container() -> None: is_valid, error_message = validate_runtime_target( "host", RuntimeEnvironment( in_container=True, in_docker=True, in_kubernetes=False, ), ) assert is_valid is False assert "\n" in error_message assert "Configuration error in .env" in error_message assert "LIGHTRAG_RUNTIME_TARGET=host" in error_message assert "This value from .env" in error_message assert "Docker" in error_message def test_validate_runtime_target_accepts_compose_and_docker_in_container() -> None: runtime_environment = RuntimeEnvironment( in_container=True, in_docker=False, in_kubernetes=True, ) for runtime_target in ("compose", "docker"): is_valid, error_message = validate_runtime_target( runtime_target, runtime_environment, ) assert is_valid is True assert error_message is None def test_validate_runtime_target_rejects_container_target_on_host() -> None: is_valid, error_message = validate_runtime_target( "docker", RuntimeEnvironment( in_container=False, in_docker=False, in_kubernetes=False, ), ) assert is_valid is False assert "\n" in error_message assert "Configuration error in .env" in error_message assert "LIGHTRAG_RUNTIME_TARGET=docker" in error_message assert "This value from .env" in error_message assert "Docker or Kubernetes" in error_message def test_validate_runtime_target_rejects_invalid_value() -> None: is_valid, error_message = validate_runtime_target( "invalid", RuntimeEnvironment(in_container=False, in_docker=False, in_kubernetes=False), ) assert is_valid is False assert "\n" in error_message assert "Configuration error in .env" in error_message assert "must be 'host' or 'compose'" in error_message def test_validate_runtime_target_from_env_file_uses_raw_env_value( tmp_path: Path, ) -> None: env_file = tmp_path / ".env" env_file.write_text("LIGHTRAG_RUNTIME_TARGET=compose\n", encoding="utf-8") is_valid, error_message = validate_runtime_target_from_env_file( env_file, RuntimeEnvironment( in_container=True, in_docker=True, in_kubernetes=False, ), ) assert is_valid is True assert error_message is None