Skip to content

Commit b3c6948

Browse files
gpsheadclaude
andcommitted
Extract do_test_match_getitem helper to preserve git blame
Refactor test_match_getitem to use a helper method instead of a for loop, keeping the assertion lines at their original indentation to preserve git line attribution history. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 40e6a2a commit b3c6948

File tree

1 file changed

+46
-42
lines changed

1 file changed

+46
-42
lines changed

Lib/test/test_re.py

Lines changed: 46 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -564,51 +564,55 @@ def __index__(self):
564564
self.assertEqual(m.group(2, 1), ('b', 'a'))
565565
self.assertEqual(m.group(Index(2), Index(1)), ('b', 'a'))
566566

567+
def do_test_match_getitem(self, match_fn):
568+
m = match_fn('a')
569+
self.assertEqual(m['a1'], 'a')
570+
self.assertEqual(m['b2'], None)
571+
self.assertEqual(m['c3'], None)
572+
self.assertEqual('a1={a1} b2={b2} c3={c3}'.format_map(m), 'a1=a b2=None c3=None')
573+
self.assertEqual(m[0], 'a')
574+
self.assertEqual(m[1], 'a')
575+
self.assertEqual(m[2], None)
576+
self.assertEqual(m[3], None)
577+
with self.assertRaisesRegex(IndexError, 'no such group'):
578+
m['X']
579+
with self.assertRaisesRegex(IndexError, 'no such group'):
580+
m[-1]
581+
with self.assertRaisesRegex(IndexError, 'no such group'):
582+
m[4]
583+
with self.assertRaisesRegex(IndexError, 'no such group'):
584+
m[0, 1]
585+
with self.assertRaisesRegex(IndexError, 'no such group'):
586+
m[(0,)]
587+
with self.assertRaisesRegex(IndexError, 'no such group'):
588+
m[(0, 1)]
589+
with self.assertRaisesRegex(IndexError, 'no such group'):
590+
'a1={a2}'.format_map(m)
591+
592+
m = match_fn('ac')
593+
self.assertEqual(m['a1'], 'a')
594+
self.assertEqual(m['b2'], None)
595+
self.assertEqual(m['c3'], 'c')
596+
self.assertEqual('a1={a1} b2={b2} c3={c3}'.format_map(m), 'a1=a b2=None c3=c')
597+
self.assertEqual(m[0], 'ac')
598+
self.assertEqual(m[1], 'a')
599+
self.assertEqual(m[2], None)
600+
self.assertEqual(m[3], 'c')
601+
602+
# Cannot assign.
603+
with self.assertRaises(TypeError):
604+
m[0] = 1
605+
606+
# No len().
607+
self.assertRaises(TypeError, len, m)
608+
567609
def test_match_getitem(self):
568610
pat = re.compile('(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?')
611+
self.do_test_match_getitem(pat.match)
569612

570-
for match_fn in pat.match, pat.prefixmatch:
571-
with self.subTest(match_fn.__name__):
572-
m = match_fn('a')
573-
self.assertEqual(m['a1'], 'a')
574-
self.assertEqual(m['b2'], None)
575-
self.assertEqual(m['c3'], None)
576-
self.assertEqual('a1={a1} b2={b2} c3={c3}'.format_map(m), 'a1=a b2=None c3=None')
577-
self.assertEqual(m[0], 'a')
578-
self.assertEqual(m[1], 'a')
579-
self.assertEqual(m[2], None)
580-
self.assertEqual(m[3], None)
581-
with self.assertRaisesRegex(IndexError, 'no such group'):
582-
m['X']
583-
with self.assertRaisesRegex(IndexError, 'no such group'):
584-
m[-1]
585-
with self.assertRaisesRegex(IndexError, 'no such group'):
586-
m[4]
587-
with self.assertRaisesRegex(IndexError, 'no such group'):
588-
m[0, 1]
589-
with self.assertRaisesRegex(IndexError, 'no such group'):
590-
m[(0,)]
591-
with self.assertRaisesRegex(IndexError, 'no such group'):
592-
m[(0, 1)]
593-
with self.assertRaisesRegex(IndexError, 'no such group'):
594-
'a1={a2}'.format_map(m)
595-
596-
m = match_fn('ac')
597-
self.assertEqual(m['a1'], 'a')
598-
self.assertEqual(m['b2'], None)
599-
self.assertEqual(m['c3'], 'c')
600-
self.assertEqual('a1={a1} b2={b2} c3={c3}'.format_map(m), 'a1=a b2=None c3=c')
601-
self.assertEqual(m[0], 'ac')
602-
self.assertEqual(m[1], 'a')
603-
self.assertEqual(m[2], None)
604-
self.assertEqual(m[3], 'c')
605-
606-
# Cannot assign.
607-
with self.assertRaises(TypeError):
608-
m[0] = 1
609-
610-
# No len().
611-
self.assertRaises(TypeError, len, m)
613+
def test_prefixmatch_getitem(self):
614+
pat = re.compile('(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?')
615+
self.do_test_match_getitem(pat.prefixmatch)
612616

613617
def test_re_fullmatch(self):
614618
# Issue 16203: Proposal: add re.fullmatch() method.

0 commit comments

Comments
 (0)