summaryrefslogtreecommitdiffstats
path: root/Lib/bsddb/test/test_misc.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/bsddb/test/test_misc.py')
-rw-r--r--Lib/bsddb/test/test_misc.py98
1 files changed, 48 insertions, 50 deletions
diff --git a/Lib/bsddb/test/test_misc.py b/Lib/bsddb/test/test_misc.py
index 03c08f4..498b4d3 100644
--- a/Lib/bsddb/test/test_misc.py
+++ b/Lib/bsddb/test/test_misc.py
@@ -2,34 +2,16 @@
"""
import os
-import shutil
-import sys
import unittest
-import tempfile
-try:
- # For Pythons w/distutils pybsddb
- from bsddb3 import db, dbshelve, hashopen
-except ImportError:
- # For the bundled bsddb
- from bsddb import db, dbshelve, hashopen
-
-try:
- from bsddb3 import test_support
-except ImportError:
- from test import support as test_support
+from .test_all import db, dbshelve, hashopen, test_support, get_new_environment_path, get_new_database_path
#----------------------------------------------------------------------
class MiscTestCase(unittest.TestCase):
def setUp(self):
self.filename = self.__class__.__name__ + '.db'
- homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid())
- self.homeDir = homeDir
- try:
- os.mkdir(homeDir)
- except OSError:
- pass
+ self.homeDir = get_new_environment_path()
def tearDown(self):
test_support.unlink(self.filename)
@@ -38,14 +20,18 @@ class MiscTestCase(unittest.TestCase):
def test01_badpointer(self):
dbs = dbshelve.open(self.filename)
dbs.close()
- self.assertRaises(db.DBError, dbs.get, b"foo")
+ self.assertRaises(db.DBError, dbs.get, "foo")
def test02_db_home(self):
env = db.DBEnv()
# check for crash fixed when db_home is used before open()
- assert env.db_home is None
+ self.assert_(env.db_home is None)
env.open(self.homeDir, db.DB_CREATE)
- assert self.homeDir == env.db_home
+ import sys
+ if sys.version_info[0] < 3 :
+ self.assertEqual(self.homeDir, env.db_home)
+ else :
+ self.assertEqual(bytes(self.homeDir, "ascii"), env.db_home)
def test03_repr_closed_db(self):
db = hashopen(self.filename)
@@ -53,6 +39,18 @@ class MiscTestCase(unittest.TestCase):
rp = repr(db)
self.assertEquals(rp, "{}")
+ def test04_repr_db(self) :
+ db = hashopen(self.filename)
+ d = {}
+ for i in range(100) :
+ db[repr(i)] = repr(100*i)
+ d[repr(i)] = repr(100*i)
+ db.close()
+ db = hashopen(self.filename)
+ rp = repr(db)
+ self.assertEquals(rp, repr(d))
+ db.close()
+
# http://sourceforge.net/tracker/index.php?func=detail&aid=1708868&group_id=13900&atid=313900
#
# See the bug report for details.
@@ -60,65 +58,65 @@ class MiscTestCase(unittest.TestCase):
# The problem was that make_key_dbt() was not allocating a copy of
# string keys but FREE_DBT() was always being told to free it when the
# database was opened with DB_THREAD.
- def test04_double_free_make_key_dbt(self):
+ def test05_double_free_make_key_dbt(self):
try:
db1 = db.DB()
db1.open(self.filename, None, db.DB_BTREE,
db.DB_CREATE | db.DB_THREAD)
curs = db1.cursor()
- t = curs.get(b"/foo", db.DB_SET)
+ t = curs.get("/foo", db.DB_SET)
# double free happened during exit from DBC_get
finally:
db1.close()
- os.unlink(self.filename)
+ test_support.unlink(self.filename)
- def test05_key_with_null_bytes(self):
+ def test06_key_with_null_bytes(self):
try:
db1 = db.DB()
db1.open(self.filename, None, db.DB_HASH, db.DB_CREATE)
- db1[b'a'] = b'eh?'
- db1[b'a\x00'] = b'eh zed.'
- db1[b'a\x00a'] = b'eh zed eh?'
- db1[b'aaa'] = b'eh eh eh!'
- keys = db1.keys()
+ db1['a'] = 'eh?'
+ db1['a\x00'] = 'eh zed.'
+ db1['a\x00a'] = 'eh zed eh?'
+ db1['aaa'] = 'eh eh eh!'
+ keys = list(db1.keys())
keys.sort()
- self.assertEqual([b'a', b'a\x00', b'a\x00a', b'aaa'], keys)
- self.assertEqual(db1[b'a'], b'eh?')
- self.assertEqual(db1[b'a\x00'], b'eh zed.')
- self.assertEqual(db1[b'a\x00a'], b'eh zed eh?')
- self.assertEqual(db1[b'aaa'], b'eh eh eh!')
+ self.assertEqual(['a', 'a\x00', 'a\x00a', 'aaa'], keys)
+ self.assertEqual(db1['a'], 'eh?')
+ self.assertEqual(db1['a\x00'], 'eh zed.')
+ self.assertEqual(db1['a\x00a'], 'eh zed eh?')
+ self.assertEqual(db1['aaa'], 'eh eh eh!')
finally:
db1.close()
- os.unlink(self.filename)
+ test_support.unlink(self.filename)
- def test_DB_set_flags_persists(self):
+ def test07_DB_set_flags_persists(self):
if db.version() < (4,2):
# The get_flags API required for this to work is only available
- # in BerkeleyDB >= 4.2
+ # in Berkeley DB >= 4.2
return
try:
db1 = db.DB()
db1.set_flags(db.DB_DUPSORT)
db1.open(self.filename, db.DB_HASH, db.DB_CREATE)
- db1[b'a'] = b'eh'
- db1[b'a'] = b'A'
- self.assertEqual([(b'a', b'A')], db1.items())
- db1.put(b'a', b'Aa')
- self.assertEqual([(b'a', b'A'), (b'a', b'Aa')], db1.items())
+ db1['a'] = 'eh'
+ db1['a'] = 'A'
+ self.assertEqual([('a', 'A')], list(db1.items()))
+ db1.put('a', 'Aa')
+ self.assertEqual([('a', 'A'), ('a', 'Aa')], list(db1.items()))
db1.close()
db1 = db.DB()
# no set_flags call, we're testing that it reads and obeys
# the flags on open.
db1.open(self.filename, db.DB_HASH)
- self.assertEqual([(b'a', b'A'), (b'a', b'Aa')], db1.items())
+ self.assertEqual([('a', 'A'), ('a', 'Aa')], list(db1.items()))
# if it read the flags right this will replace all values
- # for key b'a' instead of adding a new one. (as a dict should)
- db1[b'a'] = b'new A'
- self.assertEqual([(b'a', b'new A')], db1.items())
+ # for key 'a' instead of adding a new one. (as a dict should)
+ db1['a'] = 'new A'
+ self.assertEqual([('a', 'new A')], list(db1.items()))
finally:
db1.close()
- os.unlink(self.filename)
+ test_support.unlink(self.filename)
#----------------------------------------------------------------------