135 lines
4.1 KiB
Python
135 lines
4.1 KiB
Python
|
#!/usr/bin/python2
|
||
|
# Configure this in order to run the testcases.
|
||
|
"setuptestframework.py v 2.6.0.8"
|
||
|
import os
|
||
|
import shutil
|
||
|
import sys
|
||
|
import tempfile
|
||
|
|
||
|
try:
|
||
|
OSErrors = (WindowsError, OSError)
|
||
|
except NameError: # not running on Windows
|
||
|
OSErrors = OSError
|
||
|
|
||
|
|
||
|
def maketemp():
|
||
|
temphome = tempfile.gettempdir()
|
||
|
tempdir = os.path.join(temphome, "adodbapi_test")
|
||
|
try:
|
||
|
os.mkdir(tempdir)
|
||
|
except:
|
||
|
pass
|
||
|
return tempdir
|
||
|
|
||
|
|
||
|
def _cleanup_function(testfolder, mdb_name):
|
||
|
try:
|
||
|
os.unlink(os.path.join(testfolder, mdb_name))
|
||
|
except:
|
||
|
pass # mdb database not present
|
||
|
try:
|
||
|
shutil.rmtree(testfolder)
|
||
|
print(" cleaned up folder", testfolder)
|
||
|
except:
|
||
|
pass # test package not present
|
||
|
|
||
|
|
||
|
def getcleanupfunction():
|
||
|
return _cleanup_function
|
||
|
|
||
|
|
||
|
def find_ado_path():
|
||
|
adoName = os.path.normpath(os.getcwd() + "/../../adodbapi.py")
|
||
|
adoPackage = os.path.dirname(adoName)
|
||
|
return adoPackage
|
||
|
|
||
|
|
||
|
# make a new package directory for the test copy of ado
|
||
|
def makeadopackage(testfolder):
|
||
|
adoName = os.path.normpath(os.getcwd() + "/../adodbapi.py")
|
||
|
adoPath = os.path.dirname(adoName)
|
||
|
if os.path.exists(adoName):
|
||
|
newpackage = os.path.join(testfolder, "adodbapi")
|
||
|
try:
|
||
|
os.mkdir(newpackage)
|
||
|
except OSErrors:
|
||
|
print(
|
||
|
"*Note: temporary adodbapi package already exists: may be two versions running?"
|
||
|
)
|
||
|
for f in os.listdir(adoPath):
|
||
|
if f.endswith(".py"):
|
||
|
shutil.copy(os.path.join(adoPath, f), newpackage)
|
||
|
if sys.version_info >= (3, 0): # only when running Py3.n
|
||
|
save = sys.stdout
|
||
|
sys.stdout = None
|
||
|
from lib2to3.main import main # use 2to3 to make test package
|
||
|
|
||
|
main("lib2to3.fixes", args=["-n", "-w", newpackage])
|
||
|
sys.stdout = save
|
||
|
return testfolder
|
||
|
else:
|
||
|
raise EnvironmentError("Connot find source of adodbapi to test.")
|
||
|
|
||
|
|
||
|
def makemdb(testfolder, mdb_name):
|
||
|
# following setup code borrowed from pywin32 odbc test suite
|
||
|
# kindly contributed by Frank Millman.
|
||
|
import os
|
||
|
|
||
|
_accessdatasource = os.path.join(testfolder, mdb_name)
|
||
|
if os.path.isfile(_accessdatasource):
|
||
|
print("using JET database=", _accessdatasource)
|
||
|
else:
|
||
|
try:
|
||
|
from win32com.client import constants
|
||
|
from win32com.client.gencache import EnsureDispatch
|
||
|
|
||
|
win32 = True
|
||
|
except ImportError: # perhaps we are running IronPython
|
||
|
win32 = False # iron Python
|
||
|
try:
|
||
|
from System import Activator, Type
|
||
|
except:
|
||
|
pass
|
||
|
|
||
|
# Create a brand-new database - what is the story with these?
|
||
|
dbe = None
|
||
|
for suffix in (".36", ".35", ".30"):
|
||
|
try:
|
||
|
if win32:
|
||
|
dbe = EnsureDispatch("DAO.DBEngine" + suffix)
|
||
|
else:
|
||
|
type = Type.GetTypeFromProgID("DAO.DBEngine" + suffix)
|
||
|
dbe = Activator.CreateInstance(type)
|
||
|
break
|
||
|
except:
|
||
|
pass
|
||
|
if dbe:
|
||
|
print(" ...Creating ACCESS db at " + _accessdatasource)
|
||
|
if win32:
|
||
|
workspace = dbe.Workspaces(0)
|
||
|
newdb = workspace.CreateDatabase(
|
||
|
_accessdatasource, constants.dbLangGeneral, constants.dbVersion40
|
||
|
)
|
||
|
else:
|
||
|
newdb = dbe.CreateDatabase(
|
||
|
_accessdatasource, ";LANGID=0x0409;CP=1252;COUNTRY=0"
|
||
|
)
|
||
|
newdb.Close()
|
||
|
else:
|
||
|
print(" ...copying test ACCESS db to " + _accessdatasource)
|
||
|
mdbName = os.path.abspath(
|
||
|
os.path.join(os.path.dirname(__file__), "..", "examples", "test.mdb")
|
||
|
)
|
||
|
import shutil
|
||
|
|
||
|
shutil.copy(mdbName, _accessdatasource)
|
||
|
|
||
|
return _accessdatasource
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
print("Setting up a Jet database for server to use for remote testing...")
|
||
|
temp = maketemp()
|
||
|
makemdb(temp, "server_test.mdb")
|