mirror of
https://github.com/AdaCore/cpython.git
synced 2026-02-12 12:57:15 -08:00
requires them. Disable executable bits and shebang lines in test and benchmark files in order to prevent using a random system python, and in source files of modules which don't provide command line interface.
97 lines
2.2 KiB
Python
97 lines
2.2 KiB
Python
"""Test script for the anydbm module
|
|
based on testdumbdbm.py
|
|
"""
|
|
|
|
import os
|
|
import unittest
|
|
import glob
|
|
from test import test_support
|
|
|
|
_fname = test_support.TESTFN
|
|
|
|
# Silence Py3k warning
|
|
anydbm = test_support.import_module('anydbm', deprecated=True)
|
|
|
|
def _delete_files():
|
|
# we don't know the precise name the underlying database uses
|
|
# so we use glob to locate all names
|
|
for f in glob.glob(_fname + "*"):
|
|
try:
|
|
os.unlink(f)
|
|
except OSError:
|
|
pass
|
|
|
|
class AnyDBMTestCase(unittest.TestCase):
|
|
_dict = {'0': '',
|
|
'a': 'Python:',
|
|
'b': 'Programming',
|
|
'c': 'the',
|
|
'd': 'way',
|
|
'f': 'Guido',
|
|
'g': 'intended'
|
|
}
|
|
|
|
def __init__(self, *args):
|
|
unittest.TestCase.__init__(self, *args)
|
|
|
|
def test_anydbm_creation(self):
|
|
f = anydbm.open(_fname, 'c')
|
|
self.assertEqual(f.keys(), [])
|
|
for key in self._dict:
|
|
f[key] = self._dict[key]
|
|
self.read_helper(f)
|
|
f.close()
|
|
|
|
def test_anydbm_modification(self):
|
|
self.init_db()
|
|
f = anydbm.open(_fname, 'c')
|
|
self._dict['g'] = f['g'] = "indented"
|
|
self.read_helper(f)
|
|
f.close()
|
|
|
|
def test_anydbm_read(self):
|
|
self.init_db()
|
|
f = anydbm.open(_fname, 'r')
|
|
self.read_helper(f)
|
|
f.close()
|
|
|
|
def test_anydbm_keys(self):
|
|
self.init_db()
|
|
f = anydbm.open(_fname, 'r')
|
|
keys = self.keys_helper(f)
|
|
f.close()
|
|
|
|
def read_helper(self, f):
|
|
keys = self.keys_helper(f)
|
|
for key in self._dict:
|
|
self.assertEqual(self._dict[key], f[key])
|
|
|
|
def init_db(self):
|
|
f = anydbm.open(_fname, 'n')
|
|
for k in self._dict:
|
|
f[k] = self._dict[k]
|
|
f.close()
|
|
|
|
def keys_helper(self, f):
|
|
keys = f.keys()
|
|
keys.sort()
|
|
dkeys = self._dict.keys()
|
|
dkeys.sort()
|
|
self.assertEqual(keys, dkeys)
|
|
return keys
|
|
|
|
def tearDown(self):
|
|
_delete_files()
|
|
|
|
def setUp(self):
|
|
_delete_files()
|
|
|
|
def test_main():
|
|
try:
|
|
test_support.run_unittest(AnyDBMTestCase)
|
|
finally:
|
|
_delete_files()
|
|
|
|
if __name__ == "__main__":
|
|
test_main()
|