blob: 4da0932bfc60e0eed6e6c9bda34a1395dce6c6b0 [file] [log] [blame]
Roger E. Masse16f9fd21996-12-10 00:06:24 +00001#! /usr/bin/env python
2"""Test script for the dbm module
3 Roger E. Masse
4"""
Neal Norwitze7629c82002-11-02 18:25:08 +00005import os
Roger E. Masse16f9fd21996-12-10 00:06:24 +00006import dbm
7from dbm import error
Thomas Wouters110054c2007-02-25 22:12:31 +00008from test.test_support import verbose, verify, TestSkipped, TESTFN
Roger E. Massefab8ab81996-12-20 22:36:52 +00009
Neal Norwitze7629c82002-11-02 18:25:08 +000010# make filename unique to allow multiple concurrent tests
11# and to minimize the likelihood of a problem from an old file
Thomas Wouters110054c2007-02-25 22:12:31 +000012filename = TESTFN
Roger E. Masse16f9fd21996-12-10 00:06:24 +000013
Neal Norwitze7629c82002-11-02 18:25:08 +000014def cleanup():
15 for suffix in ['', '.pag', '.dir', '.db']:
16 try:
17 os.unlink(filename + suffix)
18 except OSError, (errno, strerror):
19 # if we can't delete the file because of permissions,
20 # nothing will work, so skip the test
21 if errno == 1:
22 raise TestSkipped, 'unable to remove: ' + filename + suffix
Fred Drake57a4e902000-09-18 17:56:58 +000023
Neal Norwitze7629c82002-11-02 18:25:08 +000024def test_keys():
25 d = dbm.open(filename, 'c')
26 verify(d.keys() == [])
27 d['a'] = 'b'
28 d['12345678910'] = '019237410982340912840198242'
29 d.keys()
30 if d.has_key('a'):
31 if verbose:
32 print 'Test dbm keys: ', d.keys()
Roger E. Masse16f9fd21996-12-10 00:06:24 +000033
Neal Norwitze7629c82002-11-02 18:25:08 +000034 d.close()
35
36def test_modes():
37 d = dbm.open(filename, 'r')
38 d.close()
39 d = dbm.open(filename, 'rw')
40 d.close()
41 d = dbm.open(filename, 'w')
42 d.close()
43 d = dbm.open(filename, 'n')
44 d.close()
45
46cleanup()
Roger E. Masse16f9fd21996-12-10 00:06:24 +000047try:
Neal Norwitze7629c82002-11-02 18:25:08 +000048 test_keys()
49 test_modes()
Roger E. Masse16f9fd21996-12-10 00:06:24 +000050except:
Neal Norwitze7629c82002-11-02 18:25:08 +000051 cleanup()
52 raise
53
54cleanup()