Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3fd22da

Browse files
committed
some test suite cleanup, use tempfile.mkdtemp() in setUp and
shutil.rmtree() in tearDown(). add missing tests to the list in the test_bsddb3 suite.
1 parent a280ca7 commit 3fd22da

22 files changed

Lines changed: 178 additions & 227 deletions

Lib/bsddb/dbtables.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# software has been tested, but no warranty is expressed or
1111
# implied.
1212
#
13-
# -- Gregory P. Smith <greg@electricrain.com>
13+
# -- Gregory P. Smith <greg@krypto.org>
1414

1515
# This provides a simple database table interface built on top of
1616
# the Python BerkeleyDB 3 interface.

Lib/bsddb/dbutils.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# software has been tested, but no warranty is expressed or
1010
# implied.
1111
#
12-
# Author: Gregory P. Smith <greg@electricrain.com>
12+
# Author: Gregory P. Smith <greg@krypto.org>
1313
#
1414
# Note: I don't know how useful this is in reality since when a
1515
# DBLockDeadlockError happens the current transaction is supposed to be
@@ -19,13 +19,7 @@
1919
#
2020
#------------------------------------------------------------------------
2121

22-
23-
#
24-
# import the time.sleep function in a namespace safe way to allow
25-
# "from bsddb.dbutils import *"
26-
#
27-
from time import sleep as _sleep
28-
22+
import time
2923
from . import db
3024

3125
# always sleep at least N seconds between retrys
@@ -60,17 +54,22 @@ def DeadlockWrap(function, *_args, **_kwargs):
6054
while True:
6155
try:
6256
return function(*_args, **_kwargs)
63-
except db.DBLockDeadlockError:
57+
except db.DBLockDeadlockError as e:
6458
if _deadlock_VerboseFile:
6559
_deadlock_VerboseFile.write(
66-
'dbutils.DeadlockWrap: sleeping %1.3f\n' % sleeptime)
67-
_sleep(sleeptime)
60+
'bsddb.dbutils.DeadlockWrap: ' +
61+
'sleeping %1.3f\n' % sleeptime)
62+
time.sleep(sleeptime)
6863
# exponential backoff in the sleep time
6964
sleeptime *= 2
7065
if sleeptime > _deadlock_MaxSleepTime:
7166
sleeptime = _deadlock_MaxSleepTime
7267
max_retries -= 1
7368
if max_retries == -1:
69+
if _deadlock_VerboseFile:
70+
_deadlock_VerboseFile.write(
71+
'bsddb.dbutils.DeadlockWrap: ' +
72+
'max_retries reached, reraising %s\n' % e)
7473
raise
7574

7675

Lib/bsddb/test/test_all.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
# For Python 2.3
1212
from bsddb import db
1313

14-
verbose = 0
14+
verbose = False
1515
if 'verbose' in sys.argv:
16-
verbose = 1
16+
verbose = True
1717
sys.argv.remove('verbose')
1818

1919
if 'silent' in sys.argv: # take care of old flag, just in case
20-
verbose = 0
20+
verbose = False
2121
sys.argv.remove('silent')
2222

2323

Lib/bsddb/test/test_associate.py

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
TestCases for DB.associate.
33
"""
44

5+
import shutil
56
import sys, os
67
import tempfile
78
import time
@@ -14,7 +15,7 @@
1415
have_threads = 0
1516

1617
import unittest
17-
from .test_all import verbose
18+
from bsddb.test.test_all import verbose
1819

1920
try:
2021
# For Pythons w/distutils pybsddb
@@ -91,25 +92,14 @@
9192
class AssociateErrorTestCase(unittest.TestCase):
9293
def setUp(self):
9394
self.filename = self.__class__.__name__ + '.db'
94-
homeDir = os.path.join(tempfile.gettempdir(), 'db_home')
95-
self.homeDir = homeDir
96-
try:
97-
os.mkdir(homeDir)
98-
except os.error:
99-
import glob
100-
files = glob.glob(os.path.join(self.homeDir, '*'))
101-
for file in files:
102-
os.remove(file)
95+
self.homeDir = tempfile.mkdtemp()
10396
self.env = db.DBEnv()
104-
self.env.open(homeDir, db.DB_CREATE | db.DB_INIT_MPOOL)
97+
self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL)
10598

10699
def tearDown(self):
107100
self.env.close()
108101
self.env = None
109-
import glob
110-
files = glob.glob(os.path.join(self.homeDir, '*'))
111-
for file in files:
112-
os.remove(file)
102+
shutil.rmtree(self.homeDir)
113103

114104

115105
def test00_associateDBError(self):
@@ -151,27 +141,16 @@ class AssociateTestCase(unittest.TestCase):
151141

152142
def setUp(self):
153143
self.filename = self.__class__.__name__ + '.db'
154-
homeDir = os.path.join(os.path.dirname(sys.argv[0]), 'db_home')
155-
self.homeDir = homeDir
156-
try:
157-
os.mkdir(homeDir)
158-
except os.error:
159-
import glob
160-
files = glob.glob(os.path.join(self.homeDir, '*'))
161-
for file in files:
162-
os.remove(file)
144+
self.homeDir = tempfile.mkdtemp()
163145
self.env = db.DBEnv()
164-
self.env.open(homeDir, db.DB_CREATE | db.DB_INIT_MPOOL |
146+
self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL |
165147
db.DB_INIT_LOCK | db.DB_THREAD | self.envFlags)
166148

167149
def tearDown(self):
168150
self.closeDB()
169151
self.env.close()
170152
self.env = None
171-
import glob
172-
files = glob.glob(os.path.join(self.homeDir, '*'))
173-
for file in files:
174-
os.remove(file)
153+
shutil.rmtree(self.homeDir)
175154

176155
def addDataToDB(self, d, txn=None):
177156
for key, value in musicdata.items():

Lib/bsddb/test/test_basics.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
# For Python 2.3
2121
from bsddb import db
2222

23-
from .test_all import verbose
23+
from bsddb.test.test_all import verbose
2424

2525
DASH = b'-'
2626
letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
@@ -54,27 +54,21 @@ class BasicTestCase(unittest.TestCase):
5454

5555
def setUp(self):
5656
if self.useEnv:
57-
homeDir = os.path.join(tempfile.gettempdir(), 'db_home')
58-
self.homeDir = homeDir
59-
try:
60-
shutil.rmtree(homeDir)
61-
except OSError as e:
62-
# unix returns ENOENT, windows returns ESRCH
63-
if e.errno not in (errno.ENOENT, errno.ESRCH): raise
64-
os.mkdir(homeDir)
57+
self.homeDir = tempfile.mkdtemp()
6558
try:
6659
self.env = db.DBEnv()
6760
self.env.set_lg_max(1024*1024)
6861
self.env.set_tx_max(30)
6962
self.env.set_tx_timestamp(int(time.time()))
7063
self.env.set_flags(self.envsetflags, 1)
71-
self.env.open(homeDir, self.envflags | db.DB_CREATE)
72-
tempfile.tempdir = homeDir
64+
self.env.open(self.homeDir, self.envflags | db.DB_CREATE)
65+
old_tempfile_tempdir = tempfile.tempdir
66+
tempfile.tempdir = self.homeDir
7367
self.filename = os.path.split(tempfile.mktemp())[1]
74-
tempfile.tempdir = None
68+
tempfile.tempdir = old_tempfile_tempdir
7569
# Yes, a bare except is intended, since we're re-raising the exc.
7670
except:
77-
shutil.rmtree(homeDir)
71+
shutil.rmtree(self.homeDir)
7872
raise
7973
else:
8074
self.env = None

Lib/bsddb/test/test_compare.py

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
TestCases for python DB Btree key comparison function.
33
"""
44

5+
import shutil
56
import sys, os, re
67
from io import StringIO
7-
8-
from . import test_all
8+
import tempfile
99

1010
import unittest
1111
try:
@@ -18,15 +18,18 @@
1818
lexical_cmp = cmp
1919

2020
def lowercase_cmp(left, right):
21-
return cmp (left.lower(), right.lower())
21+
return cmp (str(left, encoding='ascii').lower(),
22+
str(right, encoding='ascii').lower())
2223

2324
def make_reverse_comparator (cmp):
2425
def reverse (left, right, delegate=cmp):
2526
return - delegate (left, right)
2627
return reverse
2728

28-
_expected_lexical_test_data = ['', 'CCCP', 'a', 'aaa', 'b', 'c', 'cccce', 'ccccf']
29-
_expected_lowercase_test_data = ['', 'a', 'aaa', 'b', 'c', 'CC', 'cccce', 'ccccf', 'CCCP']
29+
_expected_lexical_test_data = [bytes(_) for _ in
30+
('', 'CCCP', 'a', 'aaa', 'b', 'c', 'cccce', 'ccccf')]
31+
_expected_lowercase_test_data = [bytes(_) for _ in
32+
('', 'a', 'aaa', 'b', 'c', 'CC', 'cccce', 'ccccf', 'CCCP')]
3033

3134
class ComparatorTests (unittest.TestCase):
3235
def comparator_test_helper (self, comparator, expected_data):
@@ -52,15 +55,10 @@ class AbstractBtreeKeyCompareTestCase (unittest.TestCase):
5255

5356
def setUp (self):
5457
self.filename = self.__class__.__name__ + '.db'
55-
homeDir = os.path.join (os.path.dirname (sys.argv[0]), 'db_home')
56-
self.homeDir = homeDir
57-
try:
58-
os.mkdir (homeDir)
59-
except os.error:
60-
pass
58+
self.homeDir = tempfile.mkdtemp()
6159

6260
env = db.DBEnv ()
63-
env.open (homeDir,
61+
env.open (self.homeDir,
6462
db.DB_CREATE | db.DB_INIT_MPOOL
6563
| db.DB_INIT_LOCK | db.DB_THREAD)
6664
self.env = env
@@ -70,8 +68,7 @@ def tearDown (self):
7068
if self.env is not None:
7169
self.env.close ()
7270
self.env = None
73-
import glob
74-
map (os.remove, glob.glob (os.path.join (self.homeDir, '*')))
71+
shutil.rmtree(self.homeDir)
7572

7673
def addDataToDB (self, data):
7774
i = 0
@@ -110,7 +107,7 @@ def check_results (self, expected):
110107
self.failUnless (index < len (expected),
111108
"to many values returned from cursor")
112109
self.failUnless (expected[index] == key,
113-
"expected value `%s' at %d but got `%s'"
110+
"expected value %r at %d but got %r"
114111
% (expected[index], index, key))
115112
index = index + 1
116113
rec = curs.next ()
@@ -140,10 +137,10 @@ def test_compare_function_useless (self):
140137
def socialist_comparator (l, r):
141138
return 0
142139
self.createDB (socialist_comparator)
143-
self.addDataToDB (['b', 'a', 'd'])
140+
self.addDataToDB ([b'b', b'a', b'd'])
144141
# all things being equal the first key will be the only key
145142
# in the database... (with the last key's value fwiw)
146-
self.finishTest (['b'])
143+
self.finishTest ([b'b'])
147144

148145

149146
class BtreeExceptionsTestCase (AbstractBtreeKeyCompareTestCase):
@@ -247,4 +244,4 @@ def test_suite ():
247244
return res
248245

249246
if __name__ == '__main__':
250-
unittest.main (defaultTest = 'suite')
247+
unittest.main (defaultTest = 'test_suite')

Lib/bsddb/test/test_compat.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import unittest
88
import tempfile
99

10-
from .test_all import verbose
10+
from bsddb.test.test_all import verbose
1111

1212
from bsddb import db, hashopen, btopen, rnopen
1313

Lib/bsddb/test/test_cursor_pget_bug.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import unittest
22
import sys, os, glob
3+
import shutil
4+
import tempfile
35

46
from bsddb import db
57

@@ -11,11 +13,7 @@ class pget_bugTestCase(unittest.TestCase):
1113
db_name = 'test-cursor_pget.db'
1214

1315
def setUp(self):
14-
self.homeDir = os.path.join(os.path.dirname(sys.argv[0]), 'db_home')
15-
try:
16-
os.mkdir(self.homeDir)
17-
except os.error:
18-
pass
16+
self.homeDir = tempfile.mkdtemp()
1917
self.env = db.DBEnv()
2018
self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL)
2119
self.primary_db = db.DB(self.env)
@@ -36,9 +34,7 @@ def tearDown(self):
3634
del self.secondary_db
3735
del self.primary_db
3836
del self.env
39-
for file in glob.glob(os.path.join(self.homeDir, '*')):
40-
os.remove(file)
41-
os.removedirs(self.homeDir)
37+
shutil.rmtree(self.homeDir)
4238

4339
def test_pget(self):
4440
cursor = self.secondary_db.cursor()

Lib/bsddb/test/test_dbobj.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11

2+
import shutil
23
import sys, os
34
import unittest
45
import glob
@@ -16,23 +17,17 @@
1617

1718
class dbobjTestCase(unittest.TestCase):
1819
"""Verify that dbobj.DB and dbobj.DBEnv work properly"""
19-
db_home = 'db_home'
2020
db_name = 'test-dbobj.db'
2121

2222
def setUp(self):
23-
homeDir = os.path.join(tempfile.gettempdir(), 'db_home')
24-
self.homeDir = homeDir
25-
try: os.mkdir(homeDir)
26-
except os.error: pass
23+
self.homeDir = tempfile.mkdtemp()
2724

2825
def tearDown(self):
2926
if hasattr(self, 'db'):
3027
del self.db
3128
if hasattr(self, 'env'):
3229
del self.env
33-
files = glob.glob(os.path.join(self.homeDir, '*'))
34-
for file in files:
35-
os.remove(file)
30+
shutil.rmtree(self.homeDir)
3631

3732
def test01_both(self):
3833
class TestDBEnv(dbobj.DBEnv): pass

0 commit comments

Comments
 (0)