From: Anthony Baxter Date: Tue, 4 Nov 2003 14:11:01 +0000 (+0000) Subject: get tests working again. partial backport of 1.46 - I fixed the X-Git-Tag: v2.3.3c1~81 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4488c9cf16317e00b8156e3181ad9e1a9ed6cfc5;p=thirdparty%2FPython%2Fcpython.git get tests working again. partial backport of 1.46 - I fixed the recursive tests that used to fail, but left test_re_groupref_exists disabled, as it fails on the release23-maint branch. Maybe something else needs to be backported? --- diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py index f7248062a2ab..12564fa7fc37 100644 --- a/Lib/test/test_re.py +++ b/Lib/test/test_re.py @@ -169,7 +169,7 @@ class ReTests(unittest.TestCase): self.assertEqual(pat.match('ac').group(1, 'b2', 3), ('a', None, 'c')) def test_re_groupref_exists(self): - return # not yet + return # not yet self.assertEqual(re.match('^(\()?([^()]+)(?(1)\))$', '(a)').groups(), ('(', 'a')) self.assertEqual(re.match('^(\()?([^()]+)(?(1)\))$', 'a').groups(), @@ -405,19 +405,21 @@ class ReTests(unittest.TestCase): self.assertEqual(re.match('.*?cd', 5000*'ab'+'c'+5000*'ab'+'cde').end(0), 20003) self.assertEqual(re.match('.*?cd', 20000*'abc'+'de').end(0), 60001) - # non-simple '*?' still recurses and hits the recursion limit - self.assertRaises(RuntimeError, re.search, '(a|b)*?c', 10000*'ab'+'cd') + # non-simple '*?' still used to hit the recursion limit, before the + # non-recursive scheme was implemented. + self.assertEqual(re.search('(a|b)*?c', 10000*'ab'+'cd').end(0), 20001) + def test_bug_612074(self): pat=u"["+re.escape(u"\u2039")+u"]" self.assertEqual(re.compile(pat) and 1, 1) def test_stack_overflow(self): - # nasty case that overflows the straightforward recursive + # nasty cases that used to overflow the straightforward recursive # implementation of repeated groups. - self.assertRaises(RuntimeError, re.match, '(x)*', 50000*'x') - self.assertRaises(RuntimeError, re.match, '(x)*y', 50000*'x'+'y') - self.assertRaises(RuntimeError, re.match, '(x)*?y', 50000*'x'+'y') + self.assertEqual(re.match('(x)*', 50000*'x').group(1), 'x') + self.assertEqual(re.match('(x)*y', 50000*'x'+'y').group(1), 'x') + self.assertEqual(re.match('(x)*?y', 50000*'x'+'y').group(1), 'x') def test_scanner(self): def s_ident(scanner, token): return token