[Python-checkins] python/dist/src/Lib/test test_re.py, 1.45.6.1, 1.45.6.2

tim_one at users.sourceforge.net tim_one at users.sourceforge.net
Fri Nov 21 22:25:42 EST 2003


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv11483/Lib/test

Modified Files:
      Tag: release23-maint
	test_re.py 
Log Message:
Reverted from rev 1.45.6.1 to rev 1.45:  deep recursion is still part of
sre in 2.3, and the backport of the 2.4 version of the tests should not
have been done.  It got confused because someone else checked a bad
change into _sre.c that caused the tests that are *supposed* to raise
a recursion exception to stop doing so on some (most?) platforms.

test_re passes again on Windows now.  Until the bad change to _sre gets
fixed, it will fail on platforms other than Windows and FreeBSD, either
by "Test Failed", or by bad consequences of C stack overflow.


Index: test_re.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_re.py,v
retrieving revision 1.45.6.1
retrieving revision 1.45.6.2
diff -C2 -d -r1.45.6.1 -r1.45.6.2
*** test_re.py	4 Nov 2003 14:11:01 -0000	1.45.6.1
--- test_re.py	22 Nov 2003 03:25:40 -0000	1.45.6.2
***************
*** 170,174 ****
  
      def test_re_groupref_exists(self):
!         return # not yet 
          self.assertEqual(re.match('^(\()?([^()]+)(?(1)\))$', '(a)').groups(),
                           ('(', 'a'))
--- 170,174 ----
  
      def test_re_groupref_exists(self):
!         return # not yet
          self.assertEqual(re.match('^(\()?([^()]+)(?(1)\))$', '(a)').groups(),
                           ('(', 'a'))
***************
*** 406,413 ****
                           20003)
          self.assertEqual(re.match('.*?cd', 20000*'abc'+'de').end(0), 60001)
!         # 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):
--- 406,411 ----
                           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')
  
      def test_bug_612074(self):
***************
*** 416,424 ****
  
      def test_stack_overflow(self):
!         # nasty cases that used to overflow the straightforward recursive
          # implementation of repeated groups.
!         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):
--- 414,422 ----
  
      def test_stack_overflow(self):
!         # nasty case that overflows 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')
  
      def test_scanner(self):





More information about the Python-checkins mailing list