Files
TrueGrowth/vendor/social-auto-upload/tests/test_bilibili_runtime.py
Jammy 52636c91ae
Some checks failed
CI / main (push) Has been cancelled
CI / release-e2e (push) Has been cancelled
Track bundled vendor runtime sources
2026-07-07 10:05:50 +08:00

63 lines
3.1 KiB
Python

import unittest
from pathlib import Path
from unittest.mock import Mock, patch
from uploader.bilibili_uploader.runtime import (
build_biliup_runtime_path,
ensure_biliup_binary,
run_biliup_command,
)
class BiliupRuntimeTests(unittest.TestCase):
def test_build_biliup_runtime_path_returns_platform_path(self):
path = build_biliup_runtime_path("Windows")
self.assertTrue(str(path).endswith("biliup.exe"))
@patch("uploader.bilibili_uploader.runtime.fetch_latest_release")
def test_ensure_biliup_binary_downloads_when_missing(self, mock_release):
mock_release.return_value = {
"tag_name": "v1.0.0",
"asset_url": "https://example.invalid/biliup.exe",
"asset_name": "biliup.exe",
}
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:
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):
mock_release.return_value = {
"tag_name": "v1.0.0",
"asset_url": "https://example.invalid/biliup.exe",
"asset_name": "biliup.exe",
}
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:
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")
def test_run_biliup_command_returns_completed_process(self, mock_ensure_binary, mock_run):
mock_ensure_binary.return_value = build_biliup_runtime_path("Windows")
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)