aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_utils.py
diff options
context:
space:
mode:
authorSimon Sawicki <37424085+Grub4K@users.noreply.github.com>2022-10-09 03:31:37 +0200
committerGitHub <noreply@github.com>2022-10-09 07:01:37 +0530
commit7b0127e1e11186bcbb80a18b1b530d864a5dbada (patch)
tree6fe4dad7c3a043249291c428fdc8cf47567d8280 /test/test_utils.py
parentf99bbfc9838d98d81027dddb18ace0af66acdf6d (diff)
downloadhypervideo-pre-7b0127e1e11186bcbb80a18b1b530d864a5dbada.tar.lz
hypervideo-pre-7b0127e1e11186bcbb80a18b1b530d864a5dbada.tar.xz
hypervideo-pre-7b0127e1e11186bcbb80a18b1b530d864a5dbada.zip
[utils] `traverse_obj`: Allow `re.Match` objects (#5174)
Authored by: Grub4K
Diffstat (limited to 'test/test_utils.py')
-rw-r--r--test/test_utils.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/test_utils.py b/test/test_utils.py
index 6f3f6cb91..90085a9c0 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -2,6 +2,7 @@
# Allow direct execution
import os
+import re
import sys
import unittest
@@ -2080,6 +2081,25 @@ Line 1
with self.assertRaises(TypeError, msg='too many params should result in error'):
traverse_obj(_IS_USER_INPUT_DATA, ('range8', ':::'), is_user_input=True)
+ # Test re.Match as input obj
+ mobj = re.fullmatch(r'0(12)(?P<group>3)(4)?', '0123')
+ self.assertEqual(traverse_obj(mobj, ...), [x for x in mobj.groups() if x is not None],
+ msg='`...` on a `re.Match` should give its `groups()`')
+ self.assertEqual(traverse_obj(mobj, lambda k, _: k in (0, 2)), ['0123', '3'],
+ msg='function on a `re.Match` should give groupno, value starting at 0')
+ self.assertEqual(traverse_obj(mobj, 'group'), '3',
+ msg='str key on a `re.Match` should give group with that name')
+ self.assertEqual(traverse_obj(mobj, 2), '3',
+ msg='int key on a `re.Match` should give group with that name')
+ self.assertEqual(traverse_obj(mobj, 'gRoUp', casesense=False), '3',
+ msg='str key on a `re.Match` should respect casesense')
+ self.assertEqual(traverse_obj(mobj, 'fail'), None,
+ msg='failing str key on a `re.Match` should return `default`')
+ self.assertEqual(traverse_obj(mobj, 'gRoUpS', casesense=False), None,
+ msg='failing str key on a `re.Match` should return `default`')
+ self.assertEqual(traverse_obj(mobj, 8), None,
+ msg='failing int key on a `re.Match` should return `default`')
+
if __name__ == '__main__':
unittest.main()