Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | #! /usr/bin/env python |
2 | """Test script for the dbm module | |
3 | Roger E. Masse | |
4 | """ | |
5 | import os | |
6 | import random | |
7 | import dbm | |
8 | from dbm import error | |
9 | from test.test_support import verbose, verify, TestSkipped | |
10 | ||
11 | # make filename unique to allow multiple concurrent tests | |
12 | # and to minimize the likelihood of a problem from an old file | |
13 | filename = '/tmp/delete_me_' + str(random.random())[-6:] | |
14 | ||
15 | def cleanup(): | |
16 | for suffix in ['', '.pag', '.dir', '.db']: | |
17 | try: | |
18 | os.unlink(filename + suffix) | |
19 | except OSError, (errno, strerror): | |
20 | # if we can't delete the file because of permissions, | |
21 | # nothing will work, so skip the test | |
22 | if errno == 1: | |
23 | raise TestSkipped, 'unable to remove: ' + filename + suffix | |
24 | ||
25 | def test_keys(): | |
26 | d = dbm.open(filename, 'c') | |
27 | verify(d.keys() == []) | |
28 | d['a'] = 'b' | |
29 | d['12345678910'] = '019237410982340912840198242' | |
30 | d.keys() | |
31 | if d.has_key('a'): | |
32 | if verbose: | |
33 | print 'Test dbm keys: ', d.keys() | |
34 | ||
35 | d.close() | |
36 | ||
37 | def test_modes(): | |
38 | d = dbm.open(filename, 'r') | |
39 | d.close() | |
40 | d = dbm.open(filename, 'rw') | |
41 | d.close() | |
42 | d = dbm.open(filename, 'w') | |
43 | d.close() | |
44 | d = dbm.open(filename, 'n') | |
45 | d.close() | |
46 | ||
47 | cleanup() | |
48 | try: | |
49 | test_keys() | |
50 | test_modes() | |
51 | except: | |
52 | cleanup() | |
53 | raise | |
54 | ||
55 | cleanup() |