fix capture group
This commit is contained in:
@@ -21,6 +21,7 @@ from ffx.file_properties import FileProperties # noqa: E402
|
||||
from ffx.model.pattern import Pattern # noqa: E402
|
||||
from ffx.pattern_controller import ( # noqa: E402
|
||||
DuplicatePatternMatchError,
|
||||
InvalidPatternCaptureGroupError,
|
||||
InvalidPatternSchemaError,
|
||||
PatternController,
|
||||
)
|
||||
@@ -144,7 +145,7 @@ class PatternManagementTests(unittest.TestCase):
|
||||
|
||||
def test_match_filename_raises_for_duplicate_matches_in_same_show(self):
|
||||
self.save_pattern(1, r"^same_(s[0-9]+e[0-9]+)\.mkv$")
|
||||
self.save_pattern(1, r"^same_.*$")
|
||||
self.save_pattern(1, r"^same_(.*)$")
|
||||
|
||||
with self.assertRaises(DuplicatePatternMatchError) as caught:
|
||||
self.pattern_controller.matchFilename("same_s01e01.mkv")
|
||||
@@ -154,7 +155,7 @@ class PatternManagementTests(unittest.TestCase):
|
||||
|
||||
def test_match_filename_raises_for_duplicate_matches_across_shows(self):
|
||||
self.save_pattern(1, r"^cross_(s[0-9]+e[0-9]+)\.mkv$")
|
||||
self.save_pattern(2, r"^cross_.*$")
|
||||
self.save_pattern(2, r"^cross_(.*)$")
|
||||
|
||||
with self.assertRaises(DuplicatePatternMatchError) as caught:
|
||||
self.pattern_controller.matchFilename("cross_s01e01.mkv")
|
||||
@@ -181,6 +182,48 @@ class PatternManagementTests(unittest.TestCase):
|
||||
match = self.pattern_controller.matchFilename("after_s01e01.mkv")
|
||||
self.assertEqual(pattern_id, match["pattern"].getId())
|
||||
|
||||
def test_save_pattern_schema_rejects_pattern_without_capture_group(self):
|
||||
self.add_show(1, "No Capture Pattern Show")
|
||||
|
||||
with self.assertRaises(InvalidPatternCaptureGroupError) as caught:
|
||||
self.pattern_controller.savePatternSchema(
|
||||
{
|
||||
"show_id": 1,
|
||||
"pattern": r"^nocapture_s[0-9]+e[0-9]+\.mkv$",
|
||||
},
|
||||
trackDescriptors=[make_track_descriptor(0)],
|
||||
)
|
||||
|
||||
self.assertIn("capture group", str(caught.exception))
|
||||
|
||||
def test_update_pattern_rejects_pattern_without_capture_group(self):
|
||||
pattern_id = self.save_pattern(1, r"^valid_(s[0-9]+e[0-9]+)\.mkv$")
|
||||
|
||||
with self.assertRaises(InvalidPatternCaptureGroupError):
|
||||
self.pattern_controller.updatePattern(
|
||||
pattern_id,
|
||||
{
|
||||
"show_id": 1,
|
||||
"pattern": r"^invalid_s[0-9]+e[0-9]+\.mkv$",
|
||||
"quality": 0,
|
||||
"notes": "",
|
||||
},
|
||||
)
|
||||
|
||||
match = self.pattern_controller.matchFilename("valid_s01e01.mkv")
|
||||
self.assertEqual(pattern_id, match["pattern"].getId())
|
||||
|
||||
def test_match_filename_raises_specific_error_for_legacy_pattern_without_capture_group(self):
|
||||
pattern_id = self.insert_trackless_pattern_row(
|
||||
1,
|
||||
r"^legacy_s[0-9]+e[0-9]+\.mkv$",
|
||||
)
|
||||
|
||||
with self.assertRaises(InvalidPatternCaptureGroupError) as caught:
|
||||
self.pattern_controller.matchFilename("legacy_s01e01.mkv")
|
||||
|
||||
self.assertEqual(pattern_id, caught.exception.pattern_id)
|
||||
|
||||
def test_save_pattern_schema_rejects_zero_track_patterns(self):
|
||||
self.add_show(1, "Empty Pattern Show")
|
||||
|
||||
@@ -276,7 +319,7 @@ class PatternManagementTests(unittest.TestCase):
|
||||
|
||||
def test_file_properties_skips_pattern_matching_when_disabled(self):
|
||||
self.save_pattern(1, r"^nopattern_(s[0-9]+e[0-9]+)\.mkv$")
|
||||
self.save_pattern(2, r"^nopattern_.*$")
|
||||
self.save_pattern(2, r"^nopattern_(.*)$")
|
||||
|
||||
no_pattern_context = dict(self.context)
|
||||
no_pattern_context["use_pattern"] = False
|
||||
|
||||
Reference in New Issue
Block a user