fix: unify task workspace directory resolution

This commit is contained in:
theshy
2026-04-14 16:44:31 +08:00
parent d5d9693581
commit 055474360e
11 changed files with 192 additions and 56 deletions

View File

@ -50,22 +50,71 @@ class BiliupCliAdapterTests(unittest.TestCase):
class BiliupCliPublishProviderTests(unittest.TestCase):
def test_publish_uses_source_path_parent_when_task_title_differs(self) -> None:
adapter = _FakeBiliupAdapter()
provider = BiliupCliPublishProvider(adapter=adapter)
with tempfile.TemporaryDirectory() as tmpdir:
root = Path(tmpdir)
work_dir = root / "task-id-dir"
work_dir.mkdir(parents=True, exist_ok=True)
task = Task(
id="task-id",
source_type="bilibili_url",
source_path=str(work_dir / "task-id.mp4"),
title="display-title",
status="split_done",
created_at=utc_now_iso(),
updated_at=utc_now_iso(),
)
(work_dir / "songs.txt").write_text("00:00:00 Test Song - Tester\n", encoding="utf-8")
(work_dir / "songs.json").write_text(json.dumps({"songs": [{"title": "Test Song"}]}), encoding="utf-8")
upload_config = root / "upload_config.json"
upload_config.write_text("{}", encoding="utf-8")
clip_path = work_dir / "clip-1.mp4"
clip_path.write_text("fake", encoding="utf-8")
clip = Artifact(
id=None,
task_id=task.id,
artifact_type="clip_video",
path=str(clip_path),
metadata_json="{}",
created_at=utc_now_iso(),
)
record = provider.publish(
task,
[clip],
{
"session_dir": str(root),
"upload_config_file": str(upload_config),
"biliup_path": "runtime/biliup",
"cookie_file": "runtime/cookies.json",
"retry_count": 1,
"command_timeout_seconds": 123,
},
)
self.assertEqual(record.bvid, "BV1TEST12345")
self.assertEqual(adapter.optional_calls[0]["log_path"], work_dir / "publish.log")
self.assertTrue((work_dir / "bvid.txt").exists())
self.assertTrue((work_dir / "upload_done.flag").exists())
def test_publish_passes_timeout_and_log_path(self) -> None:
adapter = _FakeBiliupAdapter()
provider = BiliupCliPublishProvider(adapter=adapter)
with tempfile.TemporaryDirectory() as tmpdir:
root = Path(tmpdir)
work_dir = root / "task-1"
work_dir.mkdir(parents=True, exist_ok=True)
task = Task(
id="task-1",
source_type="local_file",
source_path=str(root / "source.mp4"),
source_path=str(work_dir / "source.mp4"),
title="task-1",
status="split_done",
created_at=utc_now_iso(),
updated_at=utc_now_iso(),
)
work_dir = root / task.title
work_dir.mkdir(parents=True, exist_ok=True)
(work_dir / "songs.txt").write_text("00:00:00 Test Song - Tester\n", encoding="utf-8")
(work_dir / "songs.json").write_text(json.dumps({"songs": [{"title": "Test Song"}]}), encoding="utf-8")
upload_config = root / "upload_config.json"
@ -117,17 +166,17 @@ class BiliupCliPublishProviderTests(unittest.TestCase):
provider = BiliupCliPublishProvider(adapter=adapter)
with tempfile.TemporaryDirectory() as tmpdir:
root = Path(tmpdir)
work_dir = root / "task-1"
work_dir.mkdir(parents=True, exist_ok=True)
task = Task(
id="task-1",
source_type="local_file",
source_path=str(root / "source.mp4"),
source_path=str(work_dir / "source.mp4"),
title="task-1",
status="split_done",
created_at=utc_now_iso(),
updated_at=utc_now_iso(),
)
work_dir = root / task.title
work_dir.mkdir(parents=True, exist_ok=True)
(work_dir / "songs.txt").write_text("00:00:00 Test Song - Tester\n", encoding="utf-8")
(work_dir / "songs.json").write_text(json.dumps({"songs": [{"title": "Test Song"}]}), encoding="utf-8")
(work_dir / "bvid.txt").write_text("BVOLD1234567", encoding="utf-8")
@ -165,17 +214,17 @@ class BiliupCliPublishProviderTests(unittest.TestCase):
provider = BiliupCliPublishProvider(adapter=adapter)
with tempfile.TemporaryDirectory() as tmpdir:
root = Path(tmpdir)
work_dir = root / "task-1"
work_dir.mkdir(parents=True, exist_ok=True)
task = Task(
id="task-1",
source_type="local_file",
source_path=str(root / "source.mp4"),
source_path=str(work_dir / "source.mp4"),
title="task-1",
status="split_done",
created_at=utc_now_iso(),
updated_at=utc_now_iso(),
)
work_dir = root / task.title
work_dir.mkdir(parents=True, exist_ok=True)
(work_dir / "songs.txt").write_text("00:00:00 Test Song - Tester\n", encoding="utf-8")
(work_dir / "songs.json").write_text(json.dumps({"songs": [{"title": "Test Song"}]}), encoding="utf-8")
(work_dir / "bvid.txt").write_text("BV1RESUME1234", encoding="utf-8")
@ -225,17 +274,17 @@ class BiliupCliPublishProviderTests(unittest.TestCase):
provider = BiliupCliPublishProvider(adapter=adapter)
with tempfile.TemporaryDirectory() as tmpdir:
root = Path(tmpdir)
work_dir = root / "task-1"
work_dir.mkdir(parents=True, exist_ok=True)
task = Task(
id="task-1",
source_type="local_file",
source_path=str(root / "source.mp4"),
source_path=str(work_dir / "source.mp4"),
title="task-1",
status="split_done",
created_at=utc_now_iso(),
updated_at=utc_now_iso(),
)
work_dir = root / task.title
work_dir.mkdir(parents=True, exist_ok=True)
(work_dir / "songs.txt").write_text("00:00:00 Test Song - Tester\n", encoding="utf-8")
(work_dir / "songs.json").write_text(json.dumps({"songs": [{"title": "Test Song"}]}), encoding="utf-8")
(work_dir / "bvid.txt").write_text("BV1RESUME1234", encoding="utf-8")