File: test_dbm.py

package info (click to toggle)
python2.4 2.4.4-3
  • links: PTS
  • area: main
  • in suites: etch-m68k
  • size: 44,624 kB
  • ctags: 86,948
  • sloc: ansic: 305,981; python: 271,903; makefile: 4,179; sh: 3,916; perl: 3,736; lisp: 3,678; xml: 894; objc: 756; cpp: 7; sed: 2
file content (55 lines) | stat: -rwxr-xr-x 1,313 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#! /usr/bin/env python
"""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, TestSkipped

# 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:]

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

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:
    test_keys()
    test_modes()
except:
    cleanup()
    raise

cleanup()