Files
gitlab-instance-0a899031_sh/d2ypp2/tests/test_youtube_runtime.py
root f1145e3a36 s
2026-05-18 05:39:26 +00:00

85 lines
3.1 KiB
Python

from __future__ import annotations
import unittest
from src.youtube_runtime import normalize_youtube_video_save_type, resolve_live_video_encoder
class YoutubeRuntimeTests(unittest.TestCase):
def test_youtube_process_defaults_ts_setting_to_push_mode(self) -> None:
self.assertEqual(normalize_youtube_video_save_type("ts", "youtube"), "YOUTUBE")
self.assertEqual(normalize_youtube_video_save_type("", "youtube2__lane1"), "YOUTUBE")
def test_explicit_local_record_format_is_preserved(self) -> None:
self.assertEqual(normalize_youtube_video_save_type("mp4", "youtube"), "MP4")
self.assertEqual(normalize_youtube_video_save_type("mkv", "douyin_youtube"), "MKV")
def test_non_youtube_process_falls_back_to_ts(self) -> None:
self.assertEqual(normalize_youtube_video_save_type("ts", "tiktok"), "TS")
self.assertEqual(normalize_youtube_video_save_type("unknown", "tiktok"), "TS")
def test_push_defaults_restore_full_profile(self) -> None:
from pathlib import Path
from tempfile import TemporaryDirectory
from douyin_youtube_ffplay import _load_youtube_push_settings
with TemporaryDirectory() as tmp:
cfg = Path(tmp) / "youtube.ini"
cfg.write_text("[youtube]\nkey = abc\n", encoding="utf-8")
settings = _load_youtube_push_settings(str(cfg))
self.assertEqual(settings["b_v"], "4000k")
self.assertEqual(settings["maxrate"], "4500k")
self.assertEqual(settings["bufsize"], "8000k")
self.assertFalse(settings["fast_audio"])
def test_arm_falls_back_from_vaapi_to_v4l2m2m(self) -> None:
enc, note = resolve_live_video_encoder(
"h264_vaapi",
"h264_v4l2m2m\nh264_vaapi\n",
"aarch64",
has_mpp_service=False,
has_render_node=True,
has_v4l2_device=True,
)
self.assertEqual(enc, "h264_v4l2m2m")
self.assertIn("fallback", note)
def test_arm_auto_selects_v4l2m2m_when_env_missing(self) -> None:
enc, note = resolve_live_video_encoder(
"",
"h264_v4l2m2m\n",
"aarch64",
has_mpp_service=False,
has_render_node=False,
has_v4l2_device=True,
)
self.assertEqual(enc, "h264_v4l2m2m")
self.assertEqual(note, "")
def test_x86_requires_render_node_for_vaapi(self) -> None:
enc, note = resolve_live_video_encoder(
"h264_vaapi",
"h264_vaapi\n",
"x86_64",
has_mpp_service=False,
has_render_node=False,
)
self.assertEqual(enc, "")
self.assertIn("renderD", note)
def test_arm_rejects_v4l2m2m_without_video_nodes(self) -> None:
enc, note = resolve_live_video_encoder(
"h264_v4l2m2m",
"h264_v4l2m2m\n",
"aarch64",
has_mpp_service=False,
has_render_node=False,
has_v4l2_device=False,
)
self.assertEqual(enc, "")
self.assertIn("/dev/video", note)
if __name__ == "__main__":
unittest.main()