fix(test): 修复tts_segment_synthesis单测mock路径,适配audio_merger下沉run_ffmpeg
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1529h15m59s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1529h15m59s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1529h16m0s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1529h16m0s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1529h16m2s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1529h16m1s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1529h16m2s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1529h16m3s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1529h47m42s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1529h47m41s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1529h47m40s

This commit is contained in:
CI Bot
2026-07-14 22:10:36 +08:00
parent 4f808d4f8a
commit abfb83e2c3
+18 -12
View File
@@ -107,10 +107,11 @@ class TestAudioMerger:
finally:
os.unlink(path)
@patch("packages.application.tts_job.audio_merger.subprocess.run")
def test_ffmpeg_called_correctly(self, mock_run: MagicMock) -> None:
"""多文件调用 FFmpeg concat。"""
mock_run.return_value = MagicMock(returncode=0)
@patch("packages.application.tts_job.audio_merger.run_ffmpeg")
def test_ffmpeg_called_correctly(self, mock_run_ffmpeg: MagicMock) -> None:
"""多文件调用 FFmpeg concat(通过 run_ffmpeg 统一入口)。"""
# run_ffmpeg 成功返回 (stdout, stderr)
mock_run_ffmpeg.return_value = ("", "")
# 创建临时文件
paths = []
@@ -130,20 +131,24 @@ class TestAudioMerger:
except (FileNotFoundError, OSError):
pass # Expected since we're mocking
# 验证 FFmpeg 被调用
mock_run.assert_called_once()
cmd = mock_run.call_args[0][0]
assert cmd[0] == "ffmpeg"
# 验证 run_ffmpeg 被调用
mock_run_ffmpeg.assert_called_once()
cmd = mock_run_ffmpeg.call_args[0][0]
from shared.ffmpeg_utils import FFMPEG_BIN
assert cmd[0] == FFMPEG_BIN
assert "-f" in cmd
assert "concat" in cmd
finally:
for p in paths:
os.unlink(p)
@patch("packages.application.tts_job.audio_merger.subprocess.run")
def test_ffmpeg_failure_raises(self, mock_run: MagicMock) -> None:
"""FFmpeg 失败抛出 AudioMergeError。"""
mock_run.return_value = MagicMock(returncode=1, stderr="error details")
@patch("packages.application.tts_job.audio_merger.run_ffmpeg")
def test_ffmpeg_failure_raises(self, mock_run_ffmpeg: MagicMock) -> None:
"""FFmpeg 失败抛出 AudioMergeError(通过 run_ffmpeg 抛出 CalledProcessError)。"""
from subprocess import CalledProcessError
mock_run_ffmpeg.side_effect = CalledProcessError(returncode=1, cmd=["ffmpeg"], stderr="error details")
paths = []
for i in range(2):
@@ -155,6 +160,7 @@ class TestAudioMerger:
merger = AudioMerger()
with pytest.raises(AudioMergeError, match="FFmpeg 合并失败"):
merger.merge(paths)
mock_run_ffmpeg.assert_called_once()
finally:
for p in paths:
os.unlink(p)