mirror of
https://github.com/python/cpython.git
synced 2025-10-30 01:47:38 +00:00
Python 2.6 one, since the intention is to keep an unified 2.x/3.x codebase. The Python code is automatically translated using "2to3". Please, do not update this code in Python 3.0 by hand. Update the 2.6 one and then do "2to3".
62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
|
|
import os
|
|
import pickle
|
|
try:
|
|
import pickle
|
|
except ImportError:
|
|
pickle = None
|
|
import unittest
|
|
|
|
from .test_all import db, test_support, get_new_environment_path, get_new_database_path
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
class pickleTestCase(unittest.TestCase):
|
|
"""Verify that DBError can be pickled and unpickled"""
|
|
db_name = 'test-dbobj.db'
|
|
|
|
def setUp(self):
|
|
self.homeDir = get_new_environment_path()
|
|
|
|
def tearDown(self):
|
|
if hasattr(self, 'db'):
|
|
del self.db
|
|
if hasattr(self, 'env'):
|
|
del self.env
|
|
test_support.rmtree(self.homeDir)
|
|
|
|
def _base_test_pickle_DBError(self, pickle):
|
|
self.env = db.DBEnv()
|
|
self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL)
|
|
self.db = db.DB(self.env)
|
|
self.db.open(self.db_name, db.DB_HASH, db.DB_CREATE)
|
|
self.db.put('spam', 'eggs')
|
|
self.assertEqual(self.db['spam'], 'eggs')
|
|
try:
|
|
self.db.put('spam', 'ham', flags=db.DB_NOOVERWRITE)
|
|
except db.DBError as egg:
|
|
pickledEgg = pickle.dumps(egg)
|
|
#print repr(pickledEgg)
|
|
rottenEgg = pickle.loads(pickledEgg)
|
|
if rottenEgg.args != egg.args or type(rottenEgg) != type(egg):
|
|
raise Exception(rottenEgg, '!=', egg)
|
|
else:
|
|
raise Exception("where's my DBError exception?!?")
|
|
|
|
self.db.close()
|
|
self.env.close()
|
|
|
|
def test01_pickle_DBError(self):
|
|
self._base_test_pickle_DBError(pickle=pickle)
|
|
|
|
if pickle:
|
|
def test02_cPickle_DBError(self):
|
|
self._base_test_pickle_DBError(pickle=pickle)
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
def test_suite():
|
|
return unittest.makeSuite(pickleTestCase)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(defaultTest='test_suite')
|