Roger E. Masse | 16f9fd2 | 1996-12-10 00:06:24 +0000 | [diff] [blame] | 1 | #! /usr/bin/env python |
| 2 | """Test script for the dbm module |
| 3 | Roger E. Masse |
| 4 | """ |
Neal Norwitz | e7629c8 | 2002-11-02 18:25:08 +0000 | [diff] [blame] | 5 | import os |
| 6 | import random |
Roger E. Masse | 16f9fd2 | 1996-12-10 00:06:24 +0000 | [diff] [blame] | 7 | import dbm |
| 8 | from dbm import error |
Guido van Rossum | f35ad33 | 2006-08-25 23:40:32 +0000 | [diff] [blame] | 9 | from test.test_support import verbose, verify, TestSkipped, TESTFN |
Roger E. Masse | fab8ab8 | 1996-12-20 22:36:52 +0000 | [diff] [blame] | 10 | |
Neal Norwitz | e7629c8 | 2002-11-02 18:25:08 +0000 | [diff] [blame] | 11 | # make filename unique to allow multiple concurrent tests |
| 12 | # and to minimize the likelihood of a problem from an old file |
Guido van Rossum | f35ad33 | 2006-08-25 23:40:32 +0000 | [diff] [blame] | 13 | filename = TESTFN |
Roger E. Masse | 16f9fd2 | 1996-12-10 00:06:24 +0000 | [diff] [blame] | 14 | |
Neal Norwitz | e7629c8 | 2002-11-02 18:25:08 +0000 | [diff] [blame] | 15 | def cleanup(): |
| 16 | for suffix in ['', '.pag', '.dir', '.db']: |
| 17 | try: |
| 18 | os.unlink(filename + suffix) |
Guido van Rossum | b940e11 | 2007-01-10 16:19:56 +0000 | [diff] [blame] | 19 | except OSError as e: |
| 20 | (errno, strerror) = e |
Neal Norwitz | e7629c8 | 2002-11-02 18:25:08 +0000 | [diff] [blame] | 21 | # if we can't delete the file because of permissions, |
| 22 | # nothing will work, so skip the test |
| 23 | if errno == 1: |
| 24 | raise TestSkipped, 'unable to remove: ' + filename + suffix |
Fred Drake | 57a4e90 | 2000-09-18 17:56:58 +0000 | [diff] [blame] | 25 | |
Neal Norwitz | e7629c8 | 2002-11-02 18:25:08 +0000 | [diff] [blame] | 26 | def test_keys(): |
| 27 | d = dbm.open(filename, 'c') |
| 28 | verify(d.keys() == []) |
| 29 | d['a'] = 'b' |
| 30 | d['12345678910'] = '019237410982340912840198242' |
| 31 | d.keys() |
Guido van Rossum | e2b70bc | 2006-08-18 22:13:04 +0000 | [diff] [blame] | 32 | if 'a' in d: |
Neal Norwitz | e7629c8 | 2002-11-02 18:25:08 +0000 | [diff] [blame] | 33 | if verbose: |
Guido van Rossum | be19ed7 | 2007-02-09 05:37:30 +0000 | [diff] [blame] | 34 | print('Test dbm keys: ', d.keys()) |
Roger E. Masse | 16f9fd2 | 1996-12-10 00:06:24 +0000 | [diff] [blame] | 35 | |
Neal Norwitz | e7629c8 | 2002-11-02 18:25:08 +0000 | [diff] [blame] | 36 | d.close() |
| 37 | |
| 38 | def test_modes(): |
| 39 | d = dbm.open(filename, 'r') |
| 40 | d.close() |
| 41 | d = dbm.open(filename, 'rw') |
| 42 | d.close() |
| 43 | d = dbm.open(filename, 'w') |
| 44 | d.close() |
| 45 | d = dbm.open(filename, 'n') |
| 46 | d.close() |
| 47 | |
| 48 | cleanup() |
Roger E. Masse | 16f9fd2 | 1996-12-10 00:06:24 +0000 | [diff] [blame] | 49 | try: |
Neal Norwitz | e7629c8 | 2002-11-02 18:25:08 +0000 | [diff] [blame] | 50 | test_keys() |
| 51 | test_modes() |
Roger E. Masse | 16f9fd2 | 1996-12-10 00:06:24 +0000 | [diff] [blame] | 52 | except: |
Neal Norwitz | e7629c8 | 2002-11-02 18:25:08 +0000 | [diff] [blame] | 53 | cleanup() |
| 54 | raise |
| 55 | |
| 56 | cleanup() |