"""
Virtualenv隔离引擎简单测试

快速验证Virtualenv引擎的基本功能
"""

import sys
import tempfile
from pathlib import Path

# 添加项目根目录到Python路径
current_dir = Path(__file__).parent
sys.path.insert(0, str(current_dir))


def test_basic_functionality():
    """测试基本功能"""
    print("开始测试Virtualenv引擎基本功能...")

    try:
        # 导入模块
        from ptest.isolation.virtualenv_engine import (
            VirtualenvIsolationEngine,
            VirtualenvEnvironment,
        )
        from ptest.isolation.enums import EnvironmentStatus

        print("✓ 成功导入模块")

        # 创建引擎
        engine = VirtualenvIsolationEngine({})
        print("✓ 成功创建引擎")

        # 创建临时目录
        temp_dir = Path(tempfile.mkdtemp())
        print(f"✓ 创建临时目录: {temp_dir}")

        try:
            # 创建环境
            env_id = "test_env"
            env = VirtualenvEnvironment(env_id, temp_dir, engine, {})
            print("✓ 成功创建VirtualenvEnvironment")

            # 由于系统限制，跳过虚拟环境创建，测试其他功能
            print("⚠ 跳过虚拟环境创建（系统限制）")

            # 测试引擎配置
            config = env.config
            print(f"✓ 环境配置: {len(config)} 项")

            # 测试端口分配
            port = env.allocate_port()
            print(f"✓ 端口分配: {port}")

            # 测试端口释放
            released = env.release_port(port)
            print(f"✓ 端口释放: {released}")

            # 模拟环境状态
            env.status = EnvironmentStatus.ACTIVE
            status = env.get_status()
            print(f"✓ 环境状态: {status.get('status')}")

        finally:
            # 清理临时目录
            import shutil

            shutil.rmtree(temp_dir, ignore_errors=True)
            print("✓ 清理临时目录")

        print("✓ 基本功能测试完成")
        return True

    except Exception as e:
        print(f"✗ 测试失败: {e}")
        import traceback

        traceback.print_exc()
        return False


def test_engine_methods():
    """测试引擎方法"""
    print("\n开始测试引擎方法...")

    try:
        from ptest.isolation.virtualenv_engine import VirtualenvIsolationEngine

        # 创建引擎
        engine = VirtualenvIsolationEngine({})

        # 测试支持的功能
        features = engine.get_supported_features()
        print(f"✓ 支持的功能: {features}")

        # 测试引擎信息
        info = engine.get_engine_info()
        print(f"✓ 引擎类型: {info.get('engine_type')}")
        print(f"✓ 支持功能数: {len(info.get('supported_features', []))}")

        print("✓ 引擎方法测试完成")
        return True

    except Exception as e:
        print(f"✗ 引擎方法测试失败: {e}")
        return False


if __name__ == "__main__":
    print("=" * 50)
    print("Virtualenv隔离引擎测试")
    print("=" * 50)

    success1 = test_basic_functionality()
    success2 = test_engine_methods()

    print("\n" + "=" * 50)
    if success1 and success2:
        print("✓ 所有测试通过!")
        sys.exit(0)
    else:
        print("✗ 部分测试失败")
        sys.exit(1)
