source: python/trunk/Lib/bsddb/test/test_pickle.py

Last change on this file was 391, checked in by dmik, 11 years ago

python: Merge vendor 2.7.6 to trunk.

  • Property svn:eol-style set to native
File size: 1.9 KB
Line 
1
2import os
3import pickle
4import sys
5
6if sys.version_info[0] < 3 :
7 try:
8 import cPickle
9 except ImportError:
10 cPickle = None
11else :
12 cPickle = None
13
14import unittest
15
16from test_all import db, test_support, get_new_environment_path, get_new_database_path
17
18#----------------------------------------------------------------------
19
20class pickleTestCase(unittest.TestCase):
21 """Verify that DBError can be pickled and unpickled"""
22 db_name = 'test-dbobj.db'
23
24 def setUp(self):
25 self.homeDir = get_new_environment_path()
26
27 def tearDown(self):
28 if hasattr(self, 'db'):
29 del self.db
30 if hasattr(self, 'env'):
31 del self.env
32 test_support.rmtree(self.homeDir)
33
34 def _base_test_pickle_DBError(self, pickle):
35 self.env = db.DBEnv()
36 self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL)
37 self.db = db.DB(self.env)
38 self.db.open(self.db_name, db.DB_HASH, db.DB_CREATE)
39 self.db.put('spam', 'eggs')
40 self.assertEqual(self.db['spam'], 'eggs')
41 try:
42 self.db.put('spam', 'ham', flags=db.DB_NOOVERWRITE)
43 except db.DBError, egg:
44 pickledEgg = pickle.dumps(egg)
45 #print repr(pickledEgg)
46 rottenEgg = pickle.loads(pickledEgg)
47 if rottenEgg.args != egg.args or type(rottenEgg) != type(egg):
48 raise Exception, (rottenEgg, '!=', egg)
49 else:
50 raise Exception, "where's my DBError exception?!?"
51
52 self.db.close()
53 self.env.close()
54
55 def test01_pickle_DBError(self):
56 self._base_test_pickle_DBError(pickle=pickle)
57
58 if cPickle:
59 def test02_cPickle_DBError(self):
60 self._base_test_pickle_DBError(pickle=cPickle)
61
62#----------------------------------------------------------------------
63
64def test_suite():
65 return unittest.makeSuite(pickleTestCase)
66
67if __name__ == '__main__':
68 unittest.main(defaultTest='test_suite')
Note: See TracBrowser for help on using the repository browser.