2013-12-17 14:23:34 -08:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
import pytest
|
2013-12-17 14:27:14 -08:00
|
|
|
import os
|
2013-12-17 15:35:23 -08:00
|
|
|
import subprocess # to access the script from shell
|
2013-12-17 14:23:34 -08:00
|
|
|
|
|
|
|
# will try as python 3 then default to python 2 modules
|
2014-01-02 16:29:15 -08:00
|
|
|
try:
|
|
|
|
import dbm
|
|
|
|
from dbm import ndbm
|
|
|
|
from dbm import gnu as gdbm
|
|
|
|
from dbm import dumb
|
2013-12-17 16:04:26 -08:00
|
|
|
|
2014-01-02 16:29:15 -08:00
|
|
|
whichdb = dbm.whichdb
|
2013-12-17 16:04:26 -08:00
|
|
|
|
2014-01-02 16:29:15 -08:00
|
|
|
ndbm_type = "dbm.ndbm"
|
|
|
|
gdbm_type = "dbm.gnu"
|
|
|
|
dumb_type = "dbm.dumb"
|
2013-12-17 16:04:26 -08:00
|
|
|
|
2013-12-17 14:23:34 -08:00
|
|
|
except:
|
2014-01-02 16:29:15 -08:00
|
|
|
import dbm as ndbm
|
|
|
|
import gdbm
|
|
|
|
import dumbdbm as dumb
|
2013-12-17 16:04:26 -08:00
|
|
|
|
2014-01-02 16:29:15 -08:00
|
|
|
from whichdb import whichdb
|
2013-12-17 14:23:34 -08:00
|
|
|
|
2014-01-02 16:29:15 -08:00
|
|
|
ndbm_type = "dbm"
|
|
|
|
gdbm_type = "gdbm"
|
|
|
|
dumb_type = "dumbdbm"
|
2013-12-17 16:04:26 -08:00
|
|
|
|
|
|
|
#global settings
|
|
|
|
key1 = 'very first key'
|
|
|
|
key2 = 'second key'
|
|
|
|
val1 = 'very first value'
|
|
|
|
val2 = 'second value'
|
2013-12-20 13:51:34 -08:00
|
|
|
dump_anydbm = "dump-anydbm"
|
2013-12-17 16:04:26 -08:00
|
|
|
|
2014-01-02 16:29:15 -08:00
|
|
|
|
|
|
|
@pytest.fixture(scope="function")
|
2013-12-17 14:27:14 -08:00
|
|
|
def make_gdbm_test_db(request):
|
2014-01-02 16:29:15 -08:00
|
|
|
db_name = "test_gdbm"
|
|
|
|
print("creating", db_name)
|
|
|
|
test_db = gdbm.open(db_name, "n")
|
|
|
|
test_db[key1] = val1
|
|
|
|
test_db[key2] = val2
|
|
|
|
test_db.close()
|
|
|
|
|
|
|
|
def delete_test_dumbdbm():
|
|
|
|
print("deleting", db_name)
|
|
|
|
os.remove(db_name)
|
|
|
|
|
|
|
|
request.addfinalizer(delete_test_dumbdbm)
|
|
|
|
return db_name
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope="function")
|
2013-12-17 17:29:50 -08:00
|
|
|
def make_ndbm_test_db(request):
|
2014-01-02 16:29:15 -08:00
|
|
|
db_name = "test_ndbm"
|
|
|
|
print("creating", db_name)
|
|
|
|
test_db = ndbm.open(db_name, "n")
|
|
|
|
test_db[key1] = val1
|
|
|
|
test_db[key2] = val2
|
|
|
|
test_db.close()
|
|
|
|
|
|
|
|
def delete_test_ndbm():
|
|
|
|
print("deleting", db_name)
|
|
|
|
os.remove(db_name + ".db")
|
|
|
|
|
|
|
|
request.addfinalizer(delete_test_ndbm)
|
|
|
|
return db_name
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope="function")
|
2013-12-17 14:33:31 -08:00
|
|
|
def make_dumbdbm_test_db(request):
|
2014-01-02 16:29:15 -08:00
|
|
|
db_name = "test_dumbdbm"
|
|
|
|
print("creating", db_name)
|
|
|
|
test_db = dumb.open(db_name, "n")
|
|
|
|
test_db[key1] = val1
|
|
|
|
test_db[key2] = val2
|
|
|
|
test_db.close()
|
|
|
|
|
|
|
|
def delete_test_dumbdbm():
|
|
|
|
print("deleting", db_name)
|
|
|
|
os.remove(db_name + ".dir")
|
|
|
|
os.remove(db_name + ".bak")
|
|
|
|
os.remove(db_name + ".dat")
|
|
|
|
|
|
|
|
request.addfinalizer(delete_test_dumbdbm)
|
|
|
|
return db_name
|
|
|
|
|
2013-12-17 14:33:31 -08:00
|
|
|
|
2013-12-17 16:50:35 -08:00
|
|
|
def test_dumpanydbm_identify_gdbm(make_gdbm_test_db):
|
2014-01-02 16:29:15 -08:00
|
|
|
print("running test_dumpanydbm_identify_gdbm")
|
|
|
|
output = subprocess.check_output([dump_anydbm, make_gdbm_test_db])
|
2014-01-02 17:05:45 -08:00
|
|
|
print(b"script printout: \n" + output)
|
2014-01-02 16:29:15 -08:00
|
|
|
|
2014-01-02 17:05:45 -08:00
|
|
|
assert (output == b'test_gdbm is a ' + gdbm_type.encode(encoding='UTF-8') + b' db\nvery first key:very first value\nsecond key:second value\n' or
|
|
|
|
output == b'test_gdbm is a ' + gdbm_type.encode(encoding='UTF-8') + b' db\nsecond key:second value\nvery first key:very first value\n')
|
2013-12-17 16:04:26 -08:00
|
|
|
|
|
|
|
|
2013-12-17 17:29:50 -08:00
|
|
|
def test_dumpanydbm_identify_ndbm(make_ndbm_test_db):
|
2014-01-02 16:29:15 -08:00
|
|
|
print("running test_dumpanydbm_identify_ndbm")
|
|
|
|
output = subprocess.check_output([dump_anydbm, make_ndbm_test_db])
|
2014-01-02 17:05:45 -08:00
|
|
|
print(b"script printout: \n" + output)
|
2013-12-17 17:29:50 -08:00
|
|
|
|
2014-01-02 17:05:45 -08:00
|
|
|
assert (output == b'test_ndbm is a ' + ndbm_type.encode(encoding='UTF-8') + b' db\nvery first key:very first value\nsecond key:second value\n' or
|
|
|
|
output == b'test_ndbm is a ' + ndbm_type.encode(encoding='UTF-8') + b' db\nsecond key:second value\nvery first key:very first value\n')
|
2013-12-17 17:29:50 -08:00
|
|
|
|
|
|
|
|
2013-12-17 16:50:35 -08:00
|
|
|
def test_dumpanydbm_identify_dumbdbm(make_dumbdbm_test_db):
|
2014-01-02 16:29:15 -08:00
|
|
|
print("running test_dumpanydbm_identify_dumbdbm")
|
|
|
|
output = subprocess.check_output([dump_anydbm, make_dumbdbm_test_db])
|
2014-01-02 17:05:45 -08:00
|
|
|
print(b"script printout: \n" + output)
|
|
|
|
|
|
|
|
assert (output == b'test_dumbdbm is a ' + dumb_type.encode(encoding='UTF-8') + b' db\nvery first key:very first value\nsecond key:second value\n' or
|
|
|
|
output == b'test_dumbdbm is a ' + dumb_type.encode(encoding='UTF-8') + b' db\nsecond key:second value\nvery first key:very first value\n')
|