mirror of
https://github.com/zhinianboke/xianyu-auto-reply.git
synced 2025-08-02 12:37:35 +08:00
150 lines
5.4 KiB
Python
150 lines
5.4 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
测试 .gitignore 规则是否正确
|
||
验证 static/lib/ 目录不被忽略,而其他 lib/ 目录被忽略
|
||
"""
|
||
|
||
import os
|
||
import subprocess
|
||
import tempfile
|
||
|
||
def test_gitignore_rules():
|
||
"""测试 .gitignore 规则"""
|
||
print("🧪 测试 .gitignore 规则")
|
||
print("=" * 50)
|
||
|
||
# 检查文件是否存在
|
||
static_lib_files = [
|
||
"static/lib/bootstrap/bootstrap.min.css",
|
||
"static/lib/bootstrap/bootstrap.bundle.min.js",
|
||
"static/lib/bootstrap-icons/bootstrap-icons.css",
|
||
"static/lib/bootstrap-icons/fonts/bootstrap-icons.woff",
|
||
"static/lib/bootstrap-icons/fonts/bootstrap-icons.woff2"
|
||
]
|
||
|
||
print("\n1️⃣ 检查静态文件是否存在...")
|
||
all_exist = True
|
||
for file_path in static_lib_files:
|
||
if os.path.exists(file_path):
|
||
size = os.path.getsize(file_path)
|
||
print(f" ✅ {file_path} ({size:,} bytes)")
|
||
else:
|
||
print(f" ❌ {file_path} (不存在)")
|
||
all_exist = False
|
||
|
||
if all_exist:
|
||
print(" 🎉 所有静态文件都存在!")
|
||
else:
|
||
print(" ⚠️ 部分静态文件缺失")
|
||
|
||
# 检查 .gitignore 内容
|
||
print("\n2️⃣ 检查 .gitignore 规则...")
|
||
try:
|
||
with open('.gitignore', 'r', encoding='utf-8') as f:
|
||
gitignore_content = f.read()
|
||
|
||
if 'lib/' in gitignore_content and '!static/lib/' in gitignore_content:
|
||
print(" ✅ .gitignore 规则正确配置")
|
||
print(" 📝 规则说明:")
|
||
print(" - lib/ : 忽略所有 lib 目录")
|
||
print(" - !static/lib/ : 但不忽略 static/lib 目录")
|
||
else:
|
||
print(" ❌ .gitignore 规则配置不正确")
|
||
|
||
except Exception as e:
|
||
print(f" ❌ 读取 .gitignore 失败: {e}")
|
||
|
||
# 模拟测试(创建临时文件)
|
||
print("\n3️⃣ 模拟测试 gitignore 行为...")
|
||
|
||
# 创建测试目录和文件
|
||
test_dirs = [
|
||
"lib/test_file.txt", # 应该被忽略
|
||
"static/lib/test_file.txt", # 不应该被忽略
|
||
"some_other_lib/test_file.txt" # 不应该被忽略
|
||
]
|
||
|
||
created_files = []
|
||
try:
|
||
for test_path in test_dirs:
|
||
os.makedirs(os.path.dirname(test_path), exist_ok=True)
|
||
with open(test_path, 'w') as f:
|
||
f.write("test content")
|
||
created_files.append(test_path)
|
||
print(f" 📁 创建测试文件: {test_path}")
|
||
|
||
print("\n 📋 根据 .gitignore 规则预期:")
|
||
print(" - lib/test_file.txt : 应该被忽略")
|
||
print(" - static/lib/test_file.txt : 不应该被忽略")
|
||
print(" - some_other_lib/test_file.txt : 不应该被忽略")
|
||
|
||
except Exception as e:
|
||
print(f" ❌ 创建测试文件失败: {e}")
|
||
|
||
finally:
|
||
# 清理测试文件
|
||
print("\n4️⃣ 清理测试文件...")
|
||
for file_path in created_files:
|
||
try:
|
||
if os.path.exists(file_path):
|
||
os.remove(file_path)
|
||
print(f" 🗑️ 删除: {file_path}")
|
||
except Exception as e:
|
||
print(f" ⚠️ 删除失败: {file_path} - {e}")
|
||
|
||
# 清理空目录
|
||
test_cleanup_dirs = ["lib", "some_other_lib"]
|
||
for dir_path in test_cleanup_dirs:
|
||
try:
|
||
if os.path.exists(dir_path) and not os.listdir(dir_path):
|
||
os.rmdir(dir_path)
|
||
print(f" 🗑️ 删除空目录: {dir_path}")
|
||
except Exception as e:
|
||
print(f" ⚠️ 删除目录失败: {dir_path} - {e}")
|
||
|
||
print("\n" + "=" * 50)
|
||
print("🎯 总结:")
|
||
print("✅ static/lib/ 目录下的静态文件现在不会被 Git 忽略")
|
||
print("✅ 其他 lib/ 目录仍然会被正常忽略")
|
||
print("✅ 本地 CDN 资源可以正常提交到版本控制")
|
||
|
||
def check_file_sizes():
|
||
"""检查静态文件大小"""
|
||
print("\n\n📊 静态文件大小统计")
|
||
print("=" * 50)
|
||
|
||
files_info = [
|
||
("Bootstrap CSS", "static/lib/bootstrap/bootstrap.min.css"),
|
||
("Bootstrap JS", "static/lib/bootstrap/bootstrap.bundle.min.js"),
|
||
("Bootstrap Icons CSS", "static/lib/bootstrap-icons/bootstrap-icons.css"),
|
||
("Bootstrap Icons WOFF2", "static/lib/bootstrap-icons/fonts/bootstrap-icons.woff2"),
|
||
("Bootstrap Icons WOFF", "static/lib/bootstrap-icons/fonts/bootstrap-icons.woff")
|
||
]
|
||
|
||
total_size = 0
|
||
for name, path in files_info:
|
||
if os.path.exists(path):
|
||
size = os.path.getsize(path)
|
||
total_size += size
|
||
print(f"📄 {name:<25} : {size:>8,} bytes ({size/1024:.1f} KB)")
|
||
else:
|
||
print(f"❌ {name:<25} : 文件不存在")
|
||
|
||
print("-" * 50)
|
||
print(f"📦 总大小 : {total_size:>8,} bytes ({total_size/1024:.1f} KB)")
|
||
|
||
if total_size > 0:
|
||
print(f"\n💡 优势:")
|
||
print(f" - 不再依赖 CDN,提升中国大陆访问速度")
|
||
print(f" - 离线可用,提高系统稳定性")
|
||
print(f" - 版本固定,避免 CDN 更新导致的兼容性问题")
|
||
|
||
if __name__ == "__main__":
|
||
try:
|
||
test_gitignore_rules()
|
||
check_file_sizes()
|
||
except Exception as e:
|
||
print(f"❌ 测试过程中发生错误: {e}")
|
||
import traceback
|
||
traceback.print_exc()
|