[Python-checkins] python/dist/src/Lib/test test_xrange.py,1.1,1.2

tim_one at users.sourceforge.net tim_one at users.sourceforge.net
Sun Aug 8 09:17:42 CEST 2004


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32294/Lib/test

Modified Files:
	test_xrange.py 
Log Message:
Bug 1003935:  xrange overflows

Added XXX comment about why the undocumented PyRange_New() API function
is too broken to be worth the considerable pain of repairing.

Changed range_new() to stop using PyRange_New().  This fixes a variety
of bogus errors.  Nothing in the core uses PyRange_New() now.

Documented that xrange() is intended to be simple and fast, and that
CPython restricts its arguments, and length of its result sequence, to
native C longs.

Added some tests that failed before the patch, and repaired a test that
relied on a bogus OverflowError getting raised.


Index: test_xrange.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_xrange.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** test_xrange.py	8 Jul 2004 01:59:55 -0000	1.1
--- test_xrange.py	8 Aug 2004 07:17:39 -0000	1.2
***************
*** 49,56 ****
          self.assertRaises(TypeError, xrange, 0, 42, "spam")
  
!         self.assertRaises(OverflowError, xrange, 0, sys.maxint, sys.maxint-1)
          self.assertRaises(OverflowError, xrange, -sys.maxint, sys.maxint)
          self.assertRaises(OverflowError, xrange, 0, 2*sys.maxint)
  
  def test_main():
      test.test_support.run_unittest(XrangeTest)
--- 49,61 ----
          self.assertRaises(TypeError, xrange, 0, 42, "spam")
  
!         self.assertEqual(len(xrange(0, sys.maxint, sys.maxint-1)), 2)
! 
          self.assertRaises(OverflowError, xrange, -sys.maxint, sys.maxint)
          self.assertRaises(OverflowError, xrange, 0, 2*sys.maxint)
  
+         self.assertEqual(len(xrange(-sys.maxint, sys.maxint, 2)),
+                          sys.maxint)
+         self.assertRaises(OverflowError, xrange, -sys.maxint-1, sys.maxint, 2)
+ 
  def test_main():
      test.test_support.run_unittest(XrangeTest)



More information about the Python-checkins mailing list