diff options
author | Neal Norwitz <nnorwitz@gmail.com> | 2002-11-02 18:25:08 (GMT) |
---|---|---|
committer | Neal Norwitz <nnorwitz@gmail.com> | 2002-11-02 18:25:08 (GMT) |
commit | e7629c85bcfd8ba023ce89f506f393fc41d5f6bf (patch) | |
tree | 506655b1636a0da1d1546de5a77171d2faadb744 /Lib/test/test_dbm.py | |
parent | 94a83fdc157a8d393bcee3321ccdb5a818a2bf78 (diff) | |
download | cpython-e7629c85bcfd8ba023ce89f506f393fc41d5f6bf.zip cpython-e7629c85bcfd8ba023ce89f506f393fc41d5f6bf.tar.gz cpython-e7629c85bcfd8ba023ce89f506f393fc41d5f6bf.tar.bz2 |
Skip test_dbm if we can't write to the file
Cleanup (remove) the file(s) after we are done with the test.
(Fixes problem on snake farm)
Diffstat (limited to 'Lib/test/test_dbm.py')
-rwxr-xr-x | Lib/test/test_dbm.py | 74 |
1 files changed, 43 insertions, 31 deletions
diff --git a/Lib/test/test_dbm.py b/Lib/test/test_dbm.py index 3c6ddd6..e5757c9 100755 --- a/Lib/test/test_dbm.py +++ b/Lib/test/test_dbm.py @@ -2,42 +2,54 @@ """Test script for the dbm module Roger E. Masse """ +import os +import random import dbm from dbm import error -from test.test_support import verbose, verify +from test.test_support import verbose, verify, TestSkipped -filename = '/tmp/delete_me' +# make filename unique to allow multiple concurrent tests +# and to minimize the likelihood of a problem from an old file +filename = '/tmp/delete_me_' + str(random.random())[-6:] -d = dbm.open(filename, 'c') -verify(d.keys() == []) -d['a'] = 'b' -d['12345678910'] = '019237410982340912840198242' -d.keys() -if d.has_key('a'): - if verbose: - print 'Test dbm keys: ', d.keys() +def cleanup(): + for suffix in ['', '.pag', '.dir', '.db']: + try: + os.unlink(filename + suffix) + except OSError, (errno, strerror): + # if we can't delete the file because of permissions, + # nothing will work, so skip the test + if errno == 1: + raise TestSkipped, 'unable to remove: ' + filename + suffix -d.close() -d = dbm.open(filename, 'r') -d.close() -d = dbm.open(filename, 'rw') -d.close() -d = dbm.open(filename, 'w') -d.close() -d = dbm.open(filename, 'n') -d.close() +def test_keys(): + d = dbm.open(filename, 'c') + verify(d.keys() == []) + d['a'] = 'b' + d['12345678910'] = '019237410982340912840198242' + d.keys() + if d.has_key('a'): + if verbose: + print 'Test dbm keys: ', d.keys() + d.close() + +def test_modes(): + d = dbm.open(filename, 'r') + d.close() + d = dbm.open(filename, 'rw') + d.close() + d = dbm.open(filename, 'w') + d.close() + d = dbm.open(filename, 'n') + d.close() + +cleanup() try: - import os - if dbm.library == "ndbm": - # classic dbm - os.unlink(filename + '.dir') - os.unlink(filename + '.pag') - elif dbm.library == "BSD db": - # BSD DB's compatibility layer - os.unlink(filename + '.db') - else: - # GNU gdbm compatibility layer - os.unlink(filename) + test_keys() + test_modes() except: - pass + cleanup() + raise + +cleanup() |