[Python-checkins] python/dist/src/Lib/test test_dbm.py,1.8,1.9

nnorwitz@users.sourceforge.net nnorwitz@users.sourceforge.net
Sat, 02 Nov 2002 10:25:10 -0800


Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv14438/Lib/test

Modified Files:
	test_dbm.py 
Log Message:
Skip test_dbm if we can't write to the file
Cleanup (remove) the file(s) after we are done with the test.
(Fixes problem on snake farm)


Index: test_dbm.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_dbm.py,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** test_dbm.py	23 Jul 2002 19:03:47 -0000	1.8
--- test_dbm.py	2 Nov 2002 18:25:08 -0000	1.9
***************
*** 3,43 ****
     Roger E. Masse
  """
  import dbm
  from dbm import error
! from test.test_support import verbose, verify
  
! filename = '/tmp/delete_me'
  
! 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()
! 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()
  
  try:
!     import os
!     if dbm.library == "ndbm":
!         # classic dbm
!         os.unlink(filename + '.dir')
!         os.unlink(filename + '.pag')
!     elif dbm.library == "BSD db":
!         # BSD DB's compatibility layer
!         os.unlink(filename + '.db')
!     else:
!         # GNU gdbm compatibility layer
!         os.unlink(filename)
  except:
!     pass
--- 3,55 ----
     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()