mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-06-14 18:39:54 +08:00
- 抽离 driver release 打包脚本,避免内联脚本删掉已生成 manifest - 修复 release-assets 场景下 tools 相对路径错误,统一通过仓库根脚本打包 - manifest 改为按源码和目标平台重算 revision,不再执行跨平台 driver 二进制 - 补充 driver release 打包与 manifest 生成回归测试
59 lines
2.2 KiB
Python
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()
|