Fix pri lang for rename mode

This commit is contained in:
Javanaut
2026-04-12 10:06:01 +02:00
parent 4365e083dc
commit 20bdfc0dd7
5 changed files with 361 additions and 86 deletions

View File

@@ -0,0 +1,125 @@
from __future__ import annotations
import os
from pathlib import Path
import sys
import tempfile
import unittest
from unittest.mock import patch
from click.testing import CliRunner
SRC_ROOT = Path(__file__).resolve().parents[2] / "src"
if str(SRC_ROOT) not in sys.path:
sys.path.insert(0, str(SRC_ROOT))
from ffx import cli # noqa: E402
class _FakeMediaDescriptor:
def getVideoTracks(self):
return []
def getAudioTracks(self):
return []
def getSubtitleTracks(self):
return []
def getAttachmentTracks(self):
return []
class _FakeFileProperties:
def __init__(self, context, source_path):
self.source_path = source_path
def getShowId(self):
return -1
def getSeason(self):
return -1
def getEpisode(self):
return -1
def getMediaDescriptor(self):
return _FakeMediaDescriptor()
def getPattern(self):
return None
class _FakeShiftedSeasonController:
def __init__(self, context):
self.context = context
def shiftSeason(self, show_id, season, episode):
return season, episode
class _FakeFfxController:
def __init__(self, *args, **kwargs):
pass
def runJob(self, *args, **kwargs):
raise AssertionError("runJob should not be called for --rename-only")
class RenameOnlyCliTests(unittest.TestCase):
def setUp(self):
self.tempdir = tempfile.TemporaryDirectory()
self.home_dir = Path(self.tempdir.name) / "home"
self.home_dir.mkdir()
self.database_path = Path(self.tempdir.name) / "test.db"
self.source_dir = Path(self.tempdir.name) / "source"
self.source_dir.mkdir()
self.output_dir = Path(self.tempdir.name) / "output"
self.output_dir.mkdir()
self.source_path = self.source_dir / "episode.mkv"
self.source_bytes = b"rename-only-source"
self.source_path.write_bytes(self.source_bytes)
def tearDown(self):
self.tempdir.cleanup()
def test_rename_only_moves_source_file_into_output_directory(self):
runner = CliRunner()
with (
patch("ffx.file_properties.FileProperties", _FakeFileProperties),
patch("ffx.ffx_controller.FfxController", _FakeFfxController),
patch(
"ffx.shifted_season_controller.ShiftedSeasonController",
_FakeShiftedSeasonController,
),
):
result = runner.invoke(
cli.ffx,
[
"--database-file",
str(self.database_path),
"convert",
"--no-tmdb",
"--no-pattern",
"--rename-only",
"--output-directory",
str(self.output_dir),
str(self.source_path),
],
env={**os.environ, "HOME": str(self.home_dir)},
)
self.assertEqual(0, result.exit_code, result.output)
target_path = self.output_dir / "out_episode.mkv"
self.assertFalse(self.source_path.exists())
self.assertTrue(target_path.exists())
self.assertEqual(self.source_bytes, target_path.read_bytes())
if __name__ == "__main__":
unittest.main()

View File

@@ -0,0 +1,41 @@
from __future__ import annotations
from pathlib import Path
import sys
import unittest
SRC_ROOT = Path(__file__).resolve().parents[2] / "src"
if str(SRC_ROOT) not in sys.path:
sys.path.insert(0, str(SRC_ROOT))
from ffx.iso_language import IsoLanguage # noqa: E402
class IsoLanguageTests(unittest.TestCase):
def test_language_constant_set_covers_iso_639_1_plus_filipino_alias(self):
languages = [language for language in IsoLanguage if language is not IsoLanguage.UNDEFINED]
self.assertEqual(184, len(languages))
self.assertEqual(183, len({language.twoLetter() for language in languages}))
def test_primary_three_letter_code_is_returned_first(self):
self.assertEqual("sqi", IsoLanguage.ALBANIAN.threeLetter())
self.assertEqual("deu", IsoLanguage.GERMAN.threeLetter())
self.assertEqual("cym", IsoLanguage.WELSH.threeLetter())
def test_secondary_three_letter_codes_still_resolve_to_the_same_language(self):
self.assertIs(IsoLanguage.ALBANIAN, IsoLanguage.findThreeLetter("alb"))
self.assertIs(IsoLanguage.GERMAN, IsoLanguage.findThreeLetter("ger"))
self.assertIs(IsoLanguage.WELSH, IsoLanguage.findThreeLetter("wel"))
def test_newly_added_languages_and_media_aliases_resolve(self):
self.assertIs(IsoLanguage.ASSAMESE, IsoLanguage.find("Assamese"))
self.assertIs(IsoLanguage.YORUBA, IsoLanguage.findThreeLetter("yor"))
self.assertIs(IsoLanguage.FILIPINO, IsoLanguage.findThreeLetter("fil"))
if __name__ == "__main__":
unittest.main()