#!/usr/bin/env python3
"""
简化版测试脚本，快速验证改进版脚本的核心功能
"""

import os
import sys
import json
import tempfile
import shutil
from pathlib import Path
from datetime import datetime

# 导入要测试的模块
sys.path.insert(0, str(Path(__file__).parent))
from auto_rename_improved import WukongRenamerImproved

def quick_test():
    """快速测试核心功能"""
    print("🚀 开始快速测试改进版脚本")
    print("=" * 50)

    # 创建临时测试目录
    test_dir = Path(tempfile.mkdtemp(prefix="wukong_quick_test_"))
    original_dir = test_dir / "original_file"
    original_dir.mkdir(parents=True)

    print(f"📁 测试目录: {test_dir}")

    try:
        # 创建测试文件
        test_files = [
            "wukong-1.2.3-linux-amd64.deb",
            "wukong-1.2.3-mac-arm64.dmg",
            "wukong-1.2.3-win-x64-setup.exe",
            "wukong-1.2.3.blockmap",  # 应该被跳过
        ]

        for filename in test_files:
            (original_dir / filename).write_text(f"content of {filename}")

        print(f"📄 创建了 {len(test_files)} 个测试文件")

        # 创建改进版实例
        renamer = WukongRenamerImproved(debug=True)

        # 设置测试路径
        renamer.base_path = test_dir
        renamer.original_folder = original_dir
        renamer.update_file = test_dir / "update.txt"
        renamer.log_file = test_dir / "rename_log.json"

        print("\n🧪 测试版本号提取功能:")
        test_version_cases = [
            ("wukong-1.2.3-linux-amd64.deb", "1.2.3"),
            ("wukong-v2.1.0-beta-mac-arm64.dmg", "2.1.0-beta"),
            ("wukong-latest-win-x64.exe", None),
        ]

        for filename, expected in test_version_cases:
            actual = renamer.extract_version(filename)
            status = "✅" if actual == expected else "❌"
            print(f"  {status} {filename}: 期望 {expected}, 实际 {actual}")

        print("\n🧪 测试平台检测功能:")
        test_platform_cases = [
            ("wukong-1.2.3-linux-amd64.deb", ("linux", "amd64")),
            ("wukong-1.2.3-mac-arm64.dmg", ("mac", "arm64")),
            ("wukong-1.2.3-win-x64-setup.exe", ("win", "x64")),
            ("unknown-file.txt", (None, None)),
        ]

        for filename, expected in test_platform_cases:
            actual = renamer.get_file_platform(filename)
            status = "✅" if actual == expected else "❌"
            print(f"  {status} {filename}: 期望 {expected}, 实际 {actual}")

        print("\n🧪 测试文件处理功能:")
        success = renamer.process_files()
        print(f"  处理结果: {'✅ 成功' if success else '❌ 失败'}")

        # 验证文件移动结果
        print("\n📊 验证处理结果:")

        # 检查版本文件
        update_file = test_dir / "update.txt"
        if update_file.exists():
            with open(update_file, 'r', encoding='utf-8') as f:
                version_info = json.load(f)
            print(f"  ✅ 版本文件已创建: {version_info}")
        else:
            print("  ❌ 版本文件未创建")

        # 检查目录结构
        expected_dirs = [
            test_dir / "linux",
            test_dir / "mac" / "arm64",
            test_dir / "win" / "x64"
        ]

        for target_dir in expected_dirs:
            if target_dir.exists():
                files = list(target_dir.glob("wukong-*"))
                print(f"  ✅ 目录 {target_dir.name}: {len(files)} 个文件")
                for file in files:
                    print(f"    📄 {file.name}")
            else:
                print(f"  ❌ 目录不存在: {target_dir}")

        # 检查日志文件
        log_file = test_dir / "rename_log.json"
        if log_file.exists():
            print(f"  ✅ 日志文件已创建: {log_file}")
        else:
            print("  ❌ 日志文件未创建")

        print(f"\n📋 处理统计:")
        print(f"  成功处理: {renamer.processing_results['success_count']} 个文件")
        print(f"  跳过文件: {renamer.processing_results['skip_count']} 个文件")
        print(f"  错误数量: {len(renamer.processing_results['errors'])} 个")
        print(f"  最新版本: {renamer.processing_results['latest_version']}")

        return success

    except Exception as e:
        print(f"❌ 测试过程中发生异常: {e}")
        import traceback
        traceback.print_exc()
        return False

    finally:
        # 清理测试环境
        try:
            shutil.rmtree(test_dir)
            print(f"\n🧹 测试环境已清理: {test_dir}")
        except Exception as e:
            print(f"⚠️ 清理测试环境失败: {e}")

if __name__ == "__main__":
    success = quick_test()
    print(f"\n{'✨ 测试通过!' if success else '❌ 测试失败!'}")
    exit(0 if success else 1)