blob: 1a40ef6f434f319dfff242e0e1a4acddfcd4f374 [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
Guido van Rossumf35ad332006-08-25 23:40:32 +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
Guido van Rossumf35ad332006-08-25 23:40:32 +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)
Guido van Rossumb940e112007-01-10 16:19:56 +000018 except OSError as e:
Brett Cannonba7bf492007-02-27 00:15:55 +000019 (errno, strerror) = e.errno, e.strerror
Neal Norwitze7629c82002-11-02 18:25:08 +000020 # if we can't delete the file because of permissions,
21 # nothing will work, so skip the test
22 if errno == 1:
Collin Winter3add4d72007-08-29 23:37:32 +000023 raise TestSkipped('unable to remove: ' + filename + suffix)
Fred Drake57a4e902000-09-18 17:56:58 +000024
Neal Norwitze7629c82002-11-02 18:25:08 +000025def test_keys():
26 d = dbm.open(filename, 'c')
27 verify(d.keys() == [])
Guido van Rossum956e3592007-08-14 15:42:45 +000028 d[b'a'] = b'b'
29 d[b'12345678910'] = b'019237410982340912840198242'
Neal Norwitze7629c82002-11-02 18:25:08 +000030 d.keys()
Guido van Rossum956e3592007-08-14 15:42:45 +000031 if b'a' in d:
Neal Norwitze7629c82002-11-02 18:25:08 +000032 if verbose:
Guido van Rossumbe19ed72007-02-09 05:37:30 +000033 print('Test dbm keys: ', d.keys())
Roger E. Masse16f9fd21996-12-10 00:06:24 +000034
Neal Norwitze7629c82002-11-02 18:25:08 +000035 d.close()
36
37def 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
Christian Heimes180510d2008-03-03 19:15:45 +000047def test_main():
Neal Norwitze7629c82002-11-02 18:25:08 +000048 cleanup()
Christian Heimes180510d2008-03-03 19:15:45 +000049 try:
50 test_keys()
51 test_modes()
52 except:
53 cleanup()
54 raise
Neal Norwitze7629c82002-11-02 18:25:08 +000055
Christian Heimes180510d2008-03-03 19:15:45 +000056 cleanup()
57
58
59
60if __name__ == '__main__':
61 test_main()