Update of /cvsroot/webware/Webware/MiddleKit/Tests
In directory usw-pr-cvs1:/tmp/cvs-serv11738/Tests
Modified Files:
Test.py TestCommon.py TestDesign.py TestRun.py
Log Message:
- Remove ObjectStore.Store var which referred to the first store that happened to be created.
- Remove the store arg to MiddleObject.__init__(store) which was little used and confusing.
- Test suite clean ups.
- Make MKMultipleStores test having 2 different stores. This works now.
- Can now have two WebKit contexts that use MiddleKit without problems.
- Add MKMultipleStores to default set of test suites.
Index: Test.py
===================================================================
RCS file: /cvsroot/webware/Webware/MiddleKit/Tests/Test.py,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** Test.py 3 May 2002 01:13:08 -0000 1.11
--- Test.py 3 May 2002 14:26:29 -0000 1.12
***************
*** 36,40 ****
self.insertSamples()
self.testSamples()
! self.removeGenFiles(self._modelName)
print '\n'
--- 36,40 ----
self.insertSamples()
self.testSamples()
! rmdir(workDir)
print '\n'
***************
*** 47,50 ****
--- 47,51 ----
MKTypeValueChecking MKInheritance MKInheritanceAbstract
MKList MKObjRef MKObjRefReuse MKDelete MKDeleteMark
+ MKMultipleStores
MKModelInh1 MKModelInh2 MKModelInh3
'''.split()
***************
*** 62,66 ****
else:
self.createDatabase()
!
def testSamples(self):
self.testRun('TestSamples.py', deleteData=0)
--- 63,67 ----
else:
self.createDatabase()
!
def testSamples(self):
self.testRun('TestSamples.py', deleteData=0)
***************
*** 77,81 ****
def createDatabase(self):
! filename = 'GeneratedSQL/Create.sql'
filename = os.path.normpath(filename)
cmd = '%s < %s' % (self.cmdLineDB(), filename)
--- 78,82 ----
def createDatabase(self):
! filename = workDir + '/GeneratedSQL/Create.sql'
filename = os.path.normpath(filename)
cmd = '%s < %s' % (self.cmdLineDB(), filename)
***************
*** 84,88 ****
def insertSamples(self):
self.createDatabase()
! filename = 'GeneratedSQL/InsertSamples.sql'
filename = os.path.normpath(filename)
if os.path.exists(filename):
--- 85,89 ----
def insertSamples(self):
self.createDatabase()
! filename = workDir + '/GeneratedSQL/InsertSamples.sql'
filename = os.path.normpath(filename)
if os.path.exists(filename):
***************
*** 90,99 ****
self.run(cmd)
- def removeGenFiles(self, modelName):
- from TestDesign import removeGenFiles
- from MiddleKit.Core.Model import Model
- model = Model(modelName)
- removeGenFiles(model.klasses())
-
## Self utility ##
--- 91,94 ----
***************
*** 101,106 ****
def run(self, cmd):
''' Self utility method to run a system command. '''
! print 'cmd>', cmd
returnCode = os.system(cmd)
# @@ 2001-02-02 ce: we have a problem, at least on Windows ME,
# that the return code of os.system() is always 0, even if
--- 96,106 ----
def run(self, cmd):
''' Self utility method to run a system command. '''
! print '<cmd>', cmd
! sys.stdout.flush()
! sys.stderr.flush()
returnCode = os.system(cmd)
+ sys.stdout.flush()
+ sys.stderr.flush()
+
# @@ 2001-02-02 ce: we have a problem, at least on Windows ME,
# that the return code of os.system() is always 0, even if
Index: TestCommon.py
===================================================================
RCS file: /cvsroot/webware/Webware/MiddleKit/Tests/TestCommon.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TestCommon.py 3 May 2002 00:34:56 -0000 1.3
--- TestCommon.py 3 May 2002 14:26:29 -0000 1.4
***************
*** 11,12 ****
--- 11,29 ----
import MiddleKit
from MiddleKit.Core.Klasses import Klasses
+
+ workDir = 'WorkDir'
+
+ def rmdir(dirname, shouldPrint=1):
+ ''' Really remove the directory, even if it has files (and directories) in it. '''
+ if shouldPrint:
+ print 'Removing %s...' % dirname
+ if os.path.exists(dirname):
+ exceptions = (os.curdir, os.pardir)
+ for name in os.listdir(dirname):
+ if name not in exceptions:
+ fullName = os.path.join(dirname, name)
+ if os.path.isdir(fullName):
+ rmdir(fullName, shouldPrint=0)
+ else:
+ os.remove(fullName)
+ os.rmdir(dirname)
Index: TestDesign.py
===================================================================
RCS file: /cvsroot/webware/Webware/MiddleKit/Tests/TestDesign.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TestDesign.py 3 May 2002 02:56:23 -0000 1.2
--- TestDesign.py 3 May 2002 14:26:29 -0000 1.3
***************
*** 5,47 ****
from TestCommon import *
-
from MiddleKit.Design.Generate import Generate
from MiddleKit.Core.Model import Model
- import sys
-
-
- def rmdir(dirname):
- ''' Really remove the directory, even if it has files (and directories) in it. '''
- exceptions = (os.curdir, os.pardir)
- for name in os.listdir(dirname):
- if name not in exceptions:
- fullName = os.path.join(dirname, name)
- if os.path.isdir(fullName):
- rmdir(fullName)
- else:
- os.remove(fullName)
- os.rmdir(dirname)
-
-
- def removeGenFiles(klasses):
- genFilenames = ['GeneratedPy', 'GeneratedSQL']
- genFilenames.extend([name+'.py' for name in klasses.keys()])
- genFilenames.extend([name+'.pyc' for name in klasses.keys()])
- stdout = sys.stdout
- first = 1
- for filename in genFilenames:
- if os.path.exists(filename):
- if first:
- stdout.write('Removing')
- first = 0
- stdout.write(' ' + filename)
- stdout.flush()
- if os.path.isdir(filename):
- rmdir(filename)
- else:
- os.remove(filename)
- if not first:
- sys.stdout.write('\n')
- stdout.flush()
--- 5,10 ----
***************
*** 57,67 ****
! def test(modelFilename):
! model = Model(modelFilename)
! klasses = model.klasses()
! removeGenFiles(klasses)
! Generate().main('Generate.py --db MySQL --model '+modelFilename)
! importPyClasses(klasses)
! return model
--- 20,48 ----
! def test(modelFilename, workDir=workDir, toTestDir='../'):
! """
! modelFilename: the correct filename to the existing model
! workDir: the directory to remove and create and then put the
! generated files in
! toTestDir: a relative path to get from inside the workDir back
! to the MiddleKit/Tests dir
!
! In most cases, the defaults for workDir and toTestDir are
! sufficient. In funkalicious cases, like the MKMultipleStores test,
! overriding these defaults comes in handy.
! """
! rmdir(workDir) # get rid of files from previous runs
! os.mkdir(workDir) # make a space for the files from this run
!
! # Run generate, load the model, and import some classes
! Generate().main('Generate.py --outdir %s --db MySQL --model %s' % (workDir, modelFilename))
! curDir = os.getcwd()
! os.chdir(workDir)
! try:
! model = Model(toTestDir+modelFilename)
! importPyClasses(model.klasses())
! return model
! finally:
! os.chdir(curDir)
Index: TestRun.py
===================================================================
RCS file: /cvsroot/webware/Webware/MiddleKit/Tests/TestRun.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TestRun.py 13 Feb 2001 05:54:16 -0000 1.2
--- TestRun.py 3 May 2002 14:26:29 -0000 1.3
***************
*** 1,15 ****
#!/usr/bin/env python
! from FixPath import *
!
! try:
! import MiddleKit
! except ImportError:
! FixPathForMiddleKit()
! import MiddleKit
!
! import MiscUtils
!
!
! import os, sys
from MiddleKit.Run.MySQLObjectStore import MySQLObjectStore
import MiddleKit.Run.ObjectStore as ObjectStore
--- 1,4 ----
#!/usr/bin/env python
! from TestCommon import *
from MiddleKit.Run.MySQLObjectStore import MySQLObjectStore
import MiddleKit.Run.ObjectStore as ObjectStore
***************
*** 17,46 ****
def test(filename, pyFilename, deleteData):
! if os.path.splitext(filename)[1]=='':
! filename += '.mkmodel'
! pyFilename = os.path.join(filename, pyFilename)
! if not os.path.exists(pyFilename):
! print 'No such file', pyFilename
! return
! print 'Testing %s...' % filename
! # Set up the store
! store = MySQLObjectStore()
! store.readModelFileNamed(filename)
! # Clear the database
! if deleteData:
! print 'Deleting all database records for test...'
! for klass in store.model().klasses().values():
! if not klass.isAbstract():
! ObjectStore.Store.executeSQL('delete from %s;' % klass.name())
! # Run the test
! results = {}
! execfile(pyFilename, results)
! assert results.has_key('test'), 'No test defined in %s.' % filename
! results['test']()
def usage():
--- 6,42 ----
def test(filename, pyFilename, deleteData):
! curDir = os.getcwd()
! os.chdir(workDir)
! try:
! filename = '../'+filename
! if os.path.splitext(filename)[1]=='':
! filename += '.mkmodel'
! pyFilename = os.path.join(filename, pyFilename)
! if not os.path.exists(pyFilename):
! print 'No such file', pyFilename
! return
! print 'Testing %s...' % filename
! # Set up the store
! store = MySQLObjectStore()
! store.readModelFileNamed(filename)
! assert store.model()._havePythonClasses # @@@@@@
! # Clear the database
! if deleteData:
! print 'Deleting all database records for test...'
! for klass in store.model().klasses().values():
! if not klass.isAbstract():
! ObjectStore.Store.executeSQL('delete from %s;' % klass.name())
+ # Run the test
+ results = {}
+ execfile(pyFilename, results)
+ assert results.has_key('test'), 'No test defined in %s.' % filename
+ results['test'](store)
+ finally:
+ os.chdir(curDir)
def usage():
|