All checks were successful
Publish Python Package to Gitea / publish (push) Successful in 18s
Co-authored-by: Cursor <cursoragent@cursor.com>
87 lines
3.0 KiB
Python
87 lines
3.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""RpaVideoSession 路径与 no-op 行为。"""
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import tempfile
|
|
import unittest
|
|
|
|
from jiangchang_skill_core import config
|
|
from jiangchang_skill_core.rpa.video_session import RpaVideoSession
|
|
|
|
|
|
class TestRpaVideoSession(unittest.TestCase):
|
|
def setUp(self) -> None:
|
|
config.reset_cache()
|
|
|
|
def test_disabled_is_noop(self) -> None:
|
|
old = os.environ.pop("OPENCLAW_RECORD_VIDEO", None)
|
|
try:
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
config.reset_cache()
|
|
session = RpaVideoSession(
|
|
skill_slug="receive-order",
|
|
skill_data_dir=tmp,
|
|
batch_id="batch_test",
|
|
)
|
|
self.assertFalse(session.enabled)
|
|
self.assertIsNone(session.record_video_dir)
|
|
self.assertIsNone(session.output_video_path)
|
|
finally:
|
|
if old is not None:
|
|
os.environ["OPENCLAW_RECORD_VIDEO"] = old
|
|
config.reset_cache()
|
|
|
|
def test_enabled_paths(self) -> None:
|
|
os.environ["OPENCLAW_RECORD_VIDEO"] = "1"
|
|
try:
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
config.reset_cache()
|
|
session = RpaVideoSession(
|
|
skill_slug="receive-order",
|
|
skill_data_dir=tmp,
|
|
batch_id="exmail_20260602_120000",
|
|
title="接收订单",
|
|
)
|
|
self.assertTrue(session.enabled)
|
|
self.assertTrue(
|
|
session.record_video_dir.replace("\\", "/").endswith(
|
|
"/rpa-artifacts/exmail_20260602_120000/raw-video"
|
|
)
|
|
)
|
|
self.assertTrue(
|
|
session._planned_output.replace("\\", "/").startswith(
|
|
tmp.replace("\\", "/") + "/videos/"
|
|
)
|
|
)
|
|
self.assertNotIn(
|
|
"rpa-artifacts",
|
|
session._planned_output.replace("\\", "/").split("/videos/")[-1],
|
|
)
|
|
finally:
|
|
os.environ.pop("OPENCLAW_RECORD_VIDEO", None)
|
|
config.reset_cache()
|
|
|
|
def test_finalize_missing_webm_only_warning(self) -> None:
|
|
os.environ["OPENCLAW_RECORD_VIDEO"] = "1"
|
|
try:
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
config.reset_cache()
|
|
session = RpaVideoSession(
|
|
skill_slug="receive-order",
|
|
skill_data_dir=tmp,
|
|
batch_id="batch_warn",
|
|
)
|
|
import asyncio
|
|
|
|
asyncio.run(session.finalize())
|
|
self.assertIn("no_playwright_raw_video", session.warnings)
|
|
self.assertIsNone(session.output_video_path)
|
|
finally:
|
|
os.environ.pop("OPENCLAW_RECORD_VIDEO", None)
|
|
config.reset_cache()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|