fix: restore platform kit version to 1.0.9
All checks were successful
Publish Python Package to Gitea / publish (push) Successful in 25s

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-03 19:44:30 +08:00
parent eba90fb8b9
commit aab0207aec
5 changed files with 234 additions and 23 deletions

View File

@@ -2,6 +2,7 @@
"""media_assets 共享媒体资源解析测试。"""
from __future__ import annotations
import json
import platform
import zipfile
from pathlib import Path
@@ -25,6 +26,37 @@ def _make_complete_assets(root: Path, *, with_ffmpeg: bool = True, with_ffprobe:
(bin_dir / ma._tool_filename("ffprobe")).write_bytes(b"ffprobe")
def _sample_manifest() -> dict:
bin_key = ma._platform_bin_key()
return {
"name": "media-assets",
"version": "0.2.0",
"directories": {"music": "music", "fonts": "fonts", "watermark": "watermark"},
"tools": {
"ffmpeg": {
bin_key: {
"package": "ffmpeg-release-essentials",
"archive_type": "zip",
"urls": [{"name": "test", "url": "https://example.test/ffmpeg.zip"}],
"archive_paths": {
"ffmpeg": "*/bin/ffmpeg.exe",
"ffprobe": "*/bin/ffprobe.exe",
},
}
}
},
}
def _install_tools_from_manifest(root: Path, warnings: list[str]) -> bool:
bin_key = ma._platform_bin_key()
bin_dir = root / "bin" / bin_key
bin_dir.mkdir(parents=True, exist_ok=True)
(bin_dir / ma._tool_filename("ffmpeg")).write_bytes(b"ffmpeg")
(bin_dir / ma._tool_filename("ffprobe")).write_bytes(b"ffprobe")
return True
def test_media_assets_root_env_priority(tmp_path: Path) -> None:
custom = tmp_path / "custom-media"
custom.mkdir()
@@ -100,20 +132,13 @@ def test_pick_background_music_stable_first(tmp_path: Path, monkeypatch: pytest.
def _build_archive_zip(dest: Path, inner_name: str) -> None:
manifest = _sample_manifest()
with zipfile.ZipFile(dest, "w") as zf:
zf.writestr(f"{inner_name}/README.md", "# media-assets\n")
zf.writestr(f"{inner_name}/manifest.json", json.dumps(manifest, ensure_ascii=False))
zf.writestr(f"{inner_name}/music/.keep", "")
zf.writestr(f"{inner_name}/fonts/.keep", "")
zf.writestr(f"{inner_name}/watermark/.keep", "")
bin_key = ma._platform_bin_key()
zf.writestr(
f"{inner_name}/bin/{bin_key}/{ma._tool_filename('ffmpeg')}",
b"ffmpeg",
)
zf.writestr(
f"{inner_name}/bin/{bin_key}/{ma._tool_filename('ffprobe')}",
b"ffprobe",
)
def test_zip_wrapper_layout_detected(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None:
@@ -129,6 +154,7 @@ def test_zip_wrapper_layout_detected(tmp_path: Path, monkeypatch: pytest.MonkeyP
monkeypatch.setattr(ma, "_download_zip", _fake_download)
monkeypatch.setattr(ma, "_find_git_executable", lambda: None)
monkeypatch.setattr(ma, "_try_download_ffmpeg_tools", _install_tools_from_manifest)
status = ma.ensure_media_assets(env={"JIANGCHANG_DATA_ROOT": str(data_root)})
assert target.is_dir()
@@ -185,3 +211,23 @@ def test_windows_default_data_root() -> None:
with patch.dict("os.environ", {}, clear=True):
root = ma.resolve_media_assets_root()
assert root == Path(r"D:\jiangchang-data") / "shared" / "media-assets"
def test_manifest_ffmpeg_download(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None:
root = tmp_path / "data" / "shared" / "media-assets"
(root / "music").mkdir(parents=True)
(root / "fonts").mkdir(parents=True)
(root / "watermark").mkdir(parents=True)
(root / "manifest.json").write_text(
json.dumps(_sample_manifest(), ensure_ascii=False),
encoding="utf-8",
)
monkeypatch.setattr(ma, "_try_download_via_zip", lambda *a, **k: False)
monkeypatch.setattr(ma, "_try_download_via_git", lambda *a, **k: False)
monkeypatch.setattr(ma, "_try_download_ffmpeg_tools", _install_tools_from_manifest)
status = ma.ensure_media_assets(env={"JIANGCHANG_DATA_ROOT": str(tmp_path / "data")})
assert status.ready is True
assert status.ffmpeg_path is not None
assert status.ffprobe_path is not None