mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-29 03:56:43 +08:00
fix: clean successful plugin rollback backups
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
"""插件安装成功后的临时回滚备份生命周期测试。"""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from app.adapters.external.market import PluginHelper
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_successful_install_flows_remove_transient_backups(
|
||||
monkeypatch,
|
||||
tmp_path: Path,
|
||||
) -> None:
|
||||
"""同步与异步安装成功后都必须删除临时回滚副本。"""
|
||||
helper = PluginHelper()
|
||||
sync_backup = tmp_path / "sync-backup"
|
||||
async_backup = tmp_path / "async-backup"
|
||||
sync_backup.mkdir()
|
||||
async_backup.mkdir()
|
||||
|
||||
monkeypatch.setattr(
|
||||
helper,
|
||||
"_PluginHelper__backup_plugin",
|
||||
lambda _pid: str(sync_backup),
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
helper,
|
||||
"_PluginHelper__remove_old_plugin",
|
||||
lambda _pid: None,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
helper,
|
||||
"_PluginHelper__install_dependencies_if_required",
|
||||
lambda _pid: (False, False, "不存在依赖"),
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
helper,
|
||||
"refresh_persistent_plugin_backup",
|
||||
lambda _pid: True,
|
||||
)
|
||||
|
||||
sync_result = helper._PluginHelper__install_flow_sync(
|
||||
"DemoPlugin",
|
||||
False,
|
||||
lambda: (True, ""),
|
||||
)
|
||||
|
||||
async def backup_plugin(_pid: str) -> str:
|
||||
"""返回异步路径的临时回滚副本。"""
|
||||
return str(async_backup)
|
||||
|
||||
async def remove_plugin(_pid: str) -> None:
|
||||
"""隔离测试中的真实插件目录删除。"""
|
||||
|
||||
async def install_dependencies(_pid: str) -> tuple[bool, bool, str]:
|
||||
"""表示测试插件没有额外依赖。"""
|
||||
return False, False, "不存在依赖"
|
||||
|
||||
async def prepare_content() -> tuple[bool, str]:
|
||||
"""表示异步内容准备成功。"""
|
||||
return True, ""
|
||||
|
||||
monkeypatch.setattr(
|
||||
helper,
|
||||
"_PluginHelper__async_backup_plugin",
|
||||
backup_plugin,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
helper,
|
||||
"_PluginHelper__async_remove_old_plugin",
|
||||
remove_plugin,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
helper,
|
||||
"_PluginHelper__async_install_dependencies_if_required",
|
||||
install_dependencies,
|
||||
)
|
||||
|
||||
async_result = await helper._PluginHelper__install_flow_async(
|
||||
"DemoPlugin",
|
||||
False,
|
||||
prepare_content,
|
||||
)
|
||||
|
||||
assert sync_result == async_result == (True, "")
|
||||
assert not sync_backup.exists()
|
||||
assert not async_backup.exists()
|
||||
Reference in New Issue
Block a user