[Python-3000-checkins] r55187 - in python/branches/py3k-struni/Lib: pickle.py test/test_exceptions.py

guido.van.rossum python-3000-checkins at python.org
Tue May 8 19:49:14 CEST 2007


Author: guido.van.rossum
Date: Tue May  8 19:49:10 2007
New Revision: 55187

Modified:
   python/branches/py3k-struni/Lib/pickle.py
   python/branches/py3k-struni/Lib/test/test_exceptions.py
Log:
Got test_exceptions.py working.


Modified: python/branches/py3k-struni/Lib/pickle.py
==============================================================================
--- python/branches/py3k-struni/Lib/pickle.py	(original)
+++ python/branches/py3k-struni/Lib/pickle.py	Tue May  8 19:49:10 2007
@@ -929,12 +929,12 @@
                 break
         else:
             raise ValueError, "insecure string pickle"
-        self.append(rep.decode("string-escape"))
+        self.append(str8(rep.decode("string-escape")))
     dispatch[STRING[0]] = load_string
 
     def load_binstring(self):
         len = mloads(b'i' + self.read(4))
-        self.append(self.read(len))
+        self.append(str8(self.read(len)))
     dispatch[BINSTRING[0]] = load_binstring
 
     def load_unicode(self):
@@ -948,7 +948,7 @@
 
     def load_short_binstring(self):
         len = ord(self.read(1))
-        self.append(self.read(len))
+        self.append(str8(self.read(len)))
     dispatch[SHORT_BINSTRING[0]] = load_short_binstring
 
     def load_tuple(self):

Modified: python/branches/py3k-struni/Lib/test/test_exceptions.py
==============================================================================
--- python/branches/py3k-struni/Lib/test/test_exceptions.py	(original)
+++ python/branches/py3k-struni/Lib/test/test_exceptions.py	Tue May  8 19:49:10 2007
@@ -251,17 +251,19 @@
                  'print_file_and_line' : None, 'msg' : 'msgStr',
                  'filename' : None, 'lineno' : None, 'offset' : None}),
             (UnicodeError, (), {'message' : '', 'args' : (),}),
-            (UnicodeEncodeError, (str8('ascii'), 'a', 0, 1, str8('ordinal not in range')),
+            (UnicodeEncodeError, (str8('ascii'), 'a', 0, 1,
+                                  str8('ordinal not in range')),
                 {'message' : '', 'args' : ('ascii', 'a', 0, 1,
                                            'ordinal not in range'),
                  'encoding' : 'ascii', 'object' : 'a',
                  'start' : 0, 'reason' : 'ordinal not in range'}),
-            (UnicodeDecodeError, (str8('ascii'), b'\xff', 0, 1, str8('ordinal not in range')),
-                {'message' : '', 'args' : ('ascii', '\xff', 0, 1,
+            (UnicodeDecodeError, (str8('ascii'), b'\xff', 0, 1,
+                                  str8('ordinal not in range')),
+                {'message' : '', 'args' : ('ascii', b'\xff', 0, 1,
                                            'ordinal not in range'),
-                 'encoding' : 'ascii', 'object' : '\xff',
+                 'encoding' : 'ascii', 'object' : b'\xff',
                  'start' : 0, 'reason' : 'ordinal not in range'}),
-            (UnicodeTranslateError, ("\u3042", 0, 1, "ouch"),
+            (UnicodeTranslateError, ("\u3042", 0, 1, str8("ouch")),
                 {'message' : '', 'args' : ('\u3042', 0, 1, 'ouch'),
                  'object' : '\u3042', 'reason' : 'ouch',
                  'start' : 0, 'end' : 1}),
@@ -278,27 +280,28 @@
 
         for exc, args, expected in exceptionList:
             try:
-                print("exc=%r, args=%r" % (exc, args))
-                raise exc(*args)
-            except BaseException as e:
-                if type(e) is not exc:
-                    raise
+                e = exc(*args)
+            except:
+                print("\nexc=%r, args=%r" % (exc, args))
+                raise
+            else:
                 # Verify module name
                 self.assertEquals(type(e).__module__, '__builtin__')
                 # Verify no ref leaks in Exc_str()
                 s = str(e)
                 for checkArgName in expected:
-                    self.assertEquals(repr(getattr(e, checkArgName)),
+                    value = getattr(e, checkArgName)
+                    self.assertEquals(repr(value),
                                       repr(expected[checkArgName]),
-                                      'exception "%s", attribute "%s"' %
-                                       (repr(e), checkArgName))
+                                      '%r.%s == %r, expected %r' % (
+                                      e, checkArgName,
+                                      value, expected[checkArgName]))
 
                 # test for pickling support
                 for p in pickle, cPickle:
                     if p is None:
                         continue # cPickle not found -- skip it
                     for protocol in range(p.HIGHEST_PROTOCOL + 1):
-                        ##print("p=%s, protocol=%s, e=%r" % (p.__name__, protocol, e))
                         s = p.dumps(e, protocol)
                         new = p.loads(s)
                         for checkArgName in expected:
@@ -356,4 +359,4 @@
     run_unittest(ExceptionTests)
 
 if __name__ == '__main__':
-    test_main()
+    unittest.main()


More information about the Python-3000-checkins mailing list