feat: finalize bilibili cli workflow

This commit is contained in:
home-dev-pookz
2026-03-25 04:29:35 +08:00
parent 03953df4ec
commit 0778e29a04
21 changed files with 99 additions and 1348 deletions
+16 -2
View File
@@ -1,4 +1,5 @@
import unittest
from pathlib import Path
from unittest.mock import Mock, patch
from uploader.bilibili_uploader.runtime import (
@@ -23,8 +24,10 @@ class BiliupRuntimeTests(unittest.TestCase):
with patch("uploader.bilibili_uploader.runtime.read_local_biliup_version", return_value=None):
with patch("pathlib.Path.exists", return_value=False):
with patch("uploader.bilibili_uploader.runtime.download_biliup_asset") as mock_download:
ensure_biliup_binary(force_check=True)
with patch("uploader.bilibili_uploader.runtime.write_local_biliup_version") as mock_write_version:
ensure_biliup_binary(force_check=True)
mock_download.assert_called_once()
mock_write_version.assert_called_once_with("v1.0.0")
@patch("uploader.bilibili_uploader.runtime.fetch_latest_release")
def test_ensure_biliup_binary_reuses_local_when_up_to_date(self, mock_release):
@@ -36,8 +39,10 @@ class BiliupRuntimeTests(unittest.TestCase):
with patch("uploader.bilibili_uploader.runtime.read_local_biliup_version", return_value="v1.0.0"):
with patch("pathlib.Path.exists", return_value=True):
with patch("uploader.bilibili_uploader.runtime.download_biliup_asset") as mock_download:
ensure_biliup_binary(force_check=True)
with patch("uploader.bilibili_uploader.runtime.write_local_biliup_version") as mock_write_version:
ensure_biliup_binary(force_check=True)
mock_download.assert_not_called()
mock_write_version.assert_not_called()
@patch("uploader.bilibili_uploader.runtime.subprocess.run")
@patch("uploader.bilibili_uploader.runtime.ensure_biliup_binary")
@@ -46,3 +51,12 @@ class BiliupRuntimeTests(unittest.TestCase):
mock_run.return_value = Mock(returncode=0, stdout="ok", stderr="")
result = run_biliup_command(["login"])
self.assertEqual(result.returncode, 0)
@patch("uploader.bilibili_uploader.runtime.subprocess.run")
@patch("uploader.bilibili_uploader.runtime.ensure_biliup_binary")
def test_run_biliup_command_login_uses_interactive_stdio(self, mock_ensure_binary, mock_run):
mock_ensure_binary.return_value = Path("C:/mock/biliup.exe")
mock_run.return_value = Mock(returncode=0, stdout="", stderr="")
run_biliup_command(["login"], interactive=True)
_, kwargs = mock_run.call_args
self.assertNotIn("capture_output", kwargs)
+7
View File
@@ -36,3 +36,10 @@ class BilibiliCliTests(unittest.TestCase):
with patch("sau_cli.check_bilibili_account", new=AsyncMock(return_value=True)):
code = asyncio.run(sau_cli.dispatch(args))
self.assertEqual(code, 0)
def test_login_bilibili_account_returns_friendly_message_without_terminal(self):
with patch("sau_cli.has_interactive_terminal", return_value=False):
result = asyncio.run(sau_cli.login_bilibili_account("creator"))
self.assertFalse(result["success"])
self.assertIn("local interactive terminal", result["message"].lower())
self.assertIn("qrcode.png", result["message"].lower())