140 lines
3.7 KiB
Python
140 lines
3.7 KiB
Python
#!/usr/bin/env python3
|
||
"""测试Windows兼容性修改"""
|
||
|
||
import os
|
||
import sys
|
||
from pathlib import Path
|
||
|
||
def test_path_operations():
|
||
"""测试路径操作"""
|
||
print("=== 测试路径操作 ===")
|
||
|
||
# 测试Path对象
|
||
base_dir = Path(__file__).resolve().parent
|
||
print(f"Base directory: {base_dir}")
|
||
print(f"Base directory exists: {base_dir.exists()}")
|
||
|
||
# 测试路径拼接
|
||
test_path = base_dir / "test_file.txt"
|
||
print(f"Test path: {test_path}")
|
||
print(f"Test path is absolute: {test_path.is_absolute()}")
|
||
|
||
# 测试路径解析
|
||
print(f"Parent: {test_path.parent}")
|
||
print(f"Name: {test_path.name}")
|
||
|
||
return True
|
||
|
||
def test_file_operations():
|
||
"""测试文件操作"""
|
||
print("\n=== 测试文件操作 ===")
|
||
|
||
base_dir = Path(__file__).resolve().parent
|
||
test_file = base_dir / "test_windows_compat.txt"
|
||
|
||
try:
|
||
# 测试写入(UTF-8编码)
|
||
with open(test_file, "w", encoding="utf-8") as f:
|
||
f.write("测试Windows兼容性\n")
|
||
f.write("Test Windows compatibility\n")
|
||
f.write("中文字符测试\n")
|
||
print(f"文件写入成功: {test_file}")
|
||
|
||
# 测试读取
|
||
with open(test_file, "r", encoding="utf-8") as f:
|
||
content = f.read()
|
||
print(f"文件读取成功,内容长度: {len(content)}")
|
||
|
||
# 清理
|
||
test_file.unlink()
|
||
print("测试文件已清理")
|
||
|
||
return True
|
||
except Exception as e:
|
||
print(f"文件操作失败: {e}")
|
||
return False
|
||
|
||
def test_imports():
|
||
"""测试导入"""
|
||
print("\n=== 测试导入 ===")
|
||
|
||
modules_to_test = [
|
||
"json",
|
||
"csv",
|
||
"gzip",
|
||
"os",
|
||
"sys",
|
||
"pathlib",
|
||
"argparse",
|
||
"subprocess",
|
||
]
|
||
|
||
all_success = True
|
||
for module_name in modules_to_test:
|
||
try:
|
||
__import__(module_name)
|
||
print(f"✓ {module_name} 导入成功")
|
||
except ImportError as e:
|
||
print(f"✗ {module_name} 导入失败: {e}")
|
||
all_success = False
|
||
|
||
return all_success
|
||
|
||
def test_path_resolution():
|
||
"""测试路径解析"""
|
||
print("\n=== 测试路径解析 ===")
|
||
|
||
# 测试相对路径解析
|
||
rel_path = Path("./test/../example")
|
||
abs_path = rel_path.resolve()
|
||
print(f"相对路径: {rel_path}")
|
||
print(f"解析后绝对路径: {abs_path}")
|
||
|
||
# 测试路径拼接
|
||
path1 = Path("C:/Users/test")
|
||
path2 = Path("documents/file.txt")
|
||
combined = path1 / path2
|
||
print(f"路径拼接: {combined}")
|
||
|
||
return True
|
||
|
||
def main():
|
||
print("开始Windows兼容性测试...")
|
||
print(f"Python版本: {sys.version}")
|
||
print(f"操作系统: {os.name}")
|
||
print(f"当前目录: {os.getcwd()}")
|
||
|
||
tests = [
|
||
("路径操作", test_path_operations),
|
||
("文件操作", test_file_operations),
|
||
("模块导入", test_imports),
|
||
("路径解析", test_path_resolution),
|
||
]
|
||
|
||
results = []
|
||
for test_name, test_func in tests:
|
||
try:
|
||
success = test_func()
|
||
results.append((test_name, success))
|
||
except Exception as e:
|
||
print(f"{test_name} 测试异常: {e}")
|
||
results.append((test_name, False))
|
||
|
||
print("\n=== 测试结果汇总 ===")
|
||
all_passed = True
|
||
for test_name, success in results:
|
||
status = "✓ 通过" if success else "✗ 失败"
|
||
print(f"{test_name}: {status}")
|
||
if not success:
|
||
all_passed = False
|
||
|
||
if all_passed:
|
||
print("\n所有测试通过!代码应该可以在Windows上正常运行。")
|
||
else:
|
||
print("\n部分测试失败,需要进一步检查。")
|
||
|
||
return all_passed
|
||
|
||
if __name__ == "__main__":
|
||
success = main()
|
||
sys.exit(0 if success else 1) |