#!/usr/bin/python2 # Configure this in order to run the testcases. "setuptestframework.py v 2.5.0.c9" import os import sys import tempfile import shutil 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: ## if running simultanous test, don't erase the other thread's work ## shutil.rmtree(tempdir) # kill off an old copy ## except: pass 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(os.path.join(testfolder, 'adodbapi')) 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 not os.path.isfile(_accessdatasource): try: from win32com.client.gencache import EnsureDispatch from win32com.client import constants 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.dbEncrypt) else: newdb = dbe.CreateDatabase(_accessdatasource,';LANGID=0x0409;CP=1252;COUNTRY=0') newdb.Close() else: print((' ...copying test ACCESS db to '+_accessdatasource)) mdbName = os.path.normpath(os.getcwd() + '/../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')