[Python-checkins] commit of r41552 - python/trunk/Lib/test

neal.norwitz@python.org neal.norwitz at python.org
Sun Nov 27 21:37:49 CET 2005


Author: neal.norwitz
Date: Sun Nov 27 21:37:43 2005
New Revision: 41552

Modified:
   python/trunk/Lib/test/test_builtin.py
   python/trunk/Lib/test/test_file.py
   python/trunk/Lib/test/test_generators.py
   python/trunk/Lib/test/test_set.py
   python/trunk/Lib/test/test_syntax.py
Log:
Improve test coverage.  Hope the test_file changes work the same on windows.

Modified: python/trunk/Lib/test/test_builtin.py
==============================================================================
--- python/trunk/Lib/test/test_builtin.py	(original)
+++ python/trunk/Lib/test/test_builtin.py	Sun Nov 27 21:37:43 2005
@@ -238,8 +238,11 @@
         self.assertRaises(TypeError, compile)
         self.assertRaises(ValueError, compile, 'print 42\n', '<string>', 'badmode')
         self.assertRaises(ValueError, compile, 'print 42\n', '<string>', 'single', 0xff)
+        self.assertRaises(TypeError, compile, chr(0), 'f', 'exec')
         if have_unicode:
             compile(unicode('print u"\xc3\xa5"\n', 'utf8'), '', 'exec')
+            self.assertRaises(TypeError, compile, unichr(0), 'f', 'exec')
+            self.assertRaises(ValueError, compile, unicode('a = 1'), 'f', 'bad')
 
     def test_delattr(self):
         import sys
@@ -421,6 +424,7 @@
 
         unlink(TESTFN)
         self.assertRaises(TypeError, execfile)
+        self.assertRaises(TypeError, execfile, TESTFN, {}, ())
         import os
         self.assertRaises(IOError, execfile, os.curdir)
         self.assertRaises(IOError, execfile, "I_dont_exist")
@@ -1008,6 +1012,9 @@
             def __getitem__(self, index):
                 raise ValueError
         self.assertRaises(ValueError, map, lambda x: x, BadSeq())
+        def badfunc(x):
+            raise RuntimeError
+        self.assertRaises(RuntimeError, map, badfunc, range(5))
 
     def test_max(self):
         self.assertEqual(max('123123'), '3')
@@ -1239,6 +1246,12 @@
         self.assertRaises(TypeError, range)
         self.assertRaises(TypeError, range, 1, 2, 3, 4)
         self.assertRaises(ValueError, range, 1, 2, 0)
+        self.assertRaises(ValueError, range, a, a + 1, long(0))
+
+        class badzero(int):
+            def __cmp__(self, other):
+                raise RuntimeError
+        self.assertRaises(RuntimeError, range, a, a + 1, badzero(1))
 
         # Reject floats when it would require PyLongs to represent.
         # (smaller floats still accepted, but deprecated)

Modified: python/trunk/Lib/test/test_file.py
==============================================================================
--- python/trunk/Lib/test/test_file.py	(original)
+++ python/trunk/Lib/test/test_file.py	Sun Nov 27 21:37:43 2005
@@ -100,6 +100,39 @@
     print "writelines accepted sequence of non-string objects"
 f.close()
 
+try:
+    sys.stdin.seek(0)
+except IOError:
+    pass
+else:
+    print "should not be able to seek on sys.stdin"
+
+try:
+    sys.stdin.tell()
+except IOError:
+    pass
+else:
+    print "should not be able to seek on sys.stdin"
+
+try:
+    sys.stdin.truncate()
+except IOError:
+    pass
+else:
+    print "should not be able to truncate on sys.stdin"
+
+# verify repr works
+f = open(TESTFN)
+if not repr(f).startswith("<open file '" + TESTFN):
+    print "repr(file) failed"
+f.close()
+
+# verify repr works for unicode too
+f = open(unicode(TESTFN))
+if not repr(f).startswith("<open file u'" + TESTFN):
+    print "repr(file with unicode name) failed"
+f.close()
+
 # verify that we get a sensible error message for bad mode argument
 bad_mode = "qwerty"
 try:

Modified: python/trunk/Lib/test/test_generators.py
==============================================================================
--- python/trunk/Lib/test/test_generators.py	(original)
+++ python/trunk/Lib/test/test_generators.py	Sun Nov 27 21:37:43 2005
@@ -1589,6 +1589,11 @@
   ...
 ValueError: 7
 
+>>> f().throw("abc")     # throw on just-opened generator
+Traceback (most recent call last):
+  ...
+TypeError: exceptions must be classes, or instances, not str
+
 
 Now let's try closing a generator:
 

Modified: python/trunk/Lib/test/test_set.py
==============================================================================
--- python/trunk/Lib/test/test_set.py	(original)
+++ python/trunk/Lib/test/test_set.py	Sun Nov 27 21:37:43 2005
@@ -606,6 +606,8 @@
     def test_iteration(self):
         for v in self.set:
             self.assert_(v in self.values)
+        setiter = iter(self.set)
+        self.assertEqual(setiter._length_cue(), len(self.set))
 
     def test_pickling(self):
         p = pickle.dumps(self.set)
@@ -693,6 +695,16 @@
         set('abc')
         set(gooditer())
 
+    def test_changingSizeWhileIterating(self):
+        s = set([1,2,3])
+        try:
+            for i in s:
+                s.update([4])
+        except RuntimeError:
+            pass
+        else:
+            self.fail("no exception when changing size during iteration")
+
 #==============================================================================
 
 class TestSetOfSets(unittest.TestCase):

Modified: python/trunk/Lib/test/test_syntax.py
==============================================================================
--- python/trunk/Lib/test/test_syntax.py	(original)
+++ python/trunk/Lib/test/test_syntax.py	Sun Nov 27 21:37:43 2005
@@ -42,6 +42,18 @@
         self._check_error(source, "global")
         warnings.filters.pop(0)
 
+    def test_break_outside_loop(self):
+        self._check_error("break", "outside loop")
+
+    def test_delete_deref(self):
+        source = re.sub('(?m)^ *:', '', """\
+            :def foo(x):
+            :  def bar():
+            :    print x
+            :  del x
+            :""")
+        self._check_error(source, "nested scope")
+
 def test_main():
     test_support.run_unittest(SyntaxTestCase)
 


More information about the Python-checkins mailing list