Files
MyGoNavi/tools/package-driver-release-assets.test.py
Syngnat ea53430d70 🐛 fix(ci): 修复驱动总包打包与 manifest 生成失败
- 抽离 driver release 打包脚本,避免内联脚本删掉已生成 manifest
- 修复 release-assets 场景下 tools 相对路径错误,统一通过仓库根脚本打包
- manifest 改为按源码和目标平台重算 revision,不再执行跨平台 driver 二进制
- 补充 driver release 打包与 manifest 生成回归测试
2026-06-05 16:53:01 +08:00

59 lines
2.2 KiB
Python

#!/usr/bin/env python3
import json
import subprocess
import tempfile
import unittest
import zipfile
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
SCRIPT = ROOT / "tools" / "package-driver-release-assets.py"
class PackageDriverReleaseAssetsTest(unittest.TestCase):
def test_packages_bundle_and_standalone_assets(self):
with tempfile.TemporaryDirectory(prefix="gonavi-driver-assets-test-") as tmp:
tmpdir = Path(tmp)
drivers_dir = tmpdir / "drivers"
output_dir = tmpdir / "driver-release-assets"
(drivers_dir / "Windows").mkdir(parents=True)
(drivers_dir / "MacOS").mkdir(parents=True)
windows_asset = drivers_dir / "Windows" / "clickhouse-driver-agent-windows-amd64.exe"
darwin_asset = drivers_dir / "MacOS" / "clickhouse-driver-agent-darwin-arm64"
windows_asset.write_bytes(b"windows-asset")
darwin_asset.write_bytes(b"darwin-asset")
proc = subprocess.run(
["python3", str(SCRIPT), str(drivers_dir), str(output_dir)],
cwd=ROOT,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
check=True,
)
self.assertIn("created GoNavi-DriverAgents.zip", proc.stdout)
self.assertTrue((output_dir / "GoNavi-DriverAgents.zip").is_file())
self.assertTrue((output_dir / windows_asset.name).is_file())
self.assertTrue((output_dir / darwin_asset.name).is_file())
index = json.loads((output_dir / "GoNavi-DriverAgents-Index.json").read_text(encoding="utf-8"))
self.assertEqual(index["assets"][windows_asset.name], len(b"windows-asset"))
self.assertEqual(index["assets"][darwin_asset.name], len(b"darwin-asset"))
with zipfile.ZipFile(output_dir / "GoNavi-DriverAgents.zip") as zf:
self.assertEqual(
sorted(zf.namelist()),
[
"MacOS/clickhouse-driver-agent-darwin-arm64",
"Windows/clickhouse-driver-agent-windows-amd64.exe",
],
)
if __name__ == "__main__":
unittest.main()