From f3be8d8251d945d5b49603f33493c425f801330a Mon Sep 17 00:00:00 2001 From: Sebastien Robin <seb@nexedi.com> Date: Thu, 9 Dec 2004 11:11:38 +0000 Subject: [PATCH] first submission git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@1969 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/tests/framework.py | 112 ++++++++++++++++++++++++++++++ product/ERP5/tests/runalltests.py | 29 ++++++++ 2 files changed, 141 insertions(+) create mode 100755 product/ERP5/tests/framework.py create mode 100755 product/ERP5/tests/runalltests.py diff --git a/product/ERP5/tests/framework.py b/product/ERP5/tests/framework.py new file mode 100755 index 0000000000..c36e5abb81 --- /dev/null +++ b/product/ERP5/tests/framework.py @@ -0,0 +1,112 @@ +############################################################################## +# +# ZopeTestCase +# +# COPY THIS FILE TO YOUR 'tests' DIRECTORY. +# +# This version of framework.py will use the SOFTWARE_HOME +# environment variable to locate Zope and the Testing package. +# +# If the tests are run in an INSTANCE_HOME installation of Zope, +# Products.__path__ and sys.path with be adjusted to include the +# instance's Products and lib/python directories respectively. +# +# If you explicitly set INSTANCE_HOME prior to running the tests, +# auto-detection is disabled and the specified path will be used +# instead. +# +# If the 'tests' directory contains a custom_zodb.py file, INSTANCE_HOME +# will be adjusted to use it. +# +# If you set the ZEO_INSTANCE_HOME environment variable a ZEO setup +# is assumed, and you can attach to a running ZEO server (via the +# instance's custom_zodb.py). +# +############################################################################## +# +# The following code should be at the top of every test module: +# +# import os, sys +# if __name__ == '__main__': +# execfile(os.path.join(sys.path[0], 'framework.py')) +# +# ...and the following at the bottom: +# +# if __name__ == '__main__': +# framework() +# +############################################################################## + +__version__ = '0.2.1' + +# Save start state +# +__SOFTWARE_HOME = os.environ.get('SOFTWARE_HOME', '') +__INSTANCE_HOME = os.environ.get('INSTANCE_HOME', '') + +if __SOFTWARE_HOME.endswith(os.sep): + __SOFTWARE_HOME = os.path.dirname(__SOFTWARE_HOME) + +if __INSTANCE_HOME.endswith(os.sep): + __INSTANCE_HOME = os.path.dirname(__INSTANCE_HOME) + +# Find and import the Testing package +# +if not sys.modules.has_key('Testing'): + p0 = sys.path[0] + if p0 and __name__ == '__main__': + os.chdir(p0) + p0 = '' + s = __SOFTWARE_HOME + p = d = s and s or os.getcwd() + while d: + if os.path.isdir(os.path.join(p, 'Testing')): + zope_home = os.path.dirname(os.path.dirname(p)) + # Do not add the parent directory into the path list. + # Why did the author put it? -yo + if 0: + sys.path[:1] = [p0, os.pardir, p, zope_home] + else: + sys.path[:1] = [p0, p, zope_home] + break + p, d = s and ('','') or os.path.split(p) + else: + print 'Unable to locate Testing package.', + print 'You might need to set SOFTWARE_HOME.' + sys.exit(1) + +import Testing, unittest +execfile(os.path.join(os.path.dirname(Testing.__file__), 'common.py')) + +# Include ZopeTestCase support +# +if 1: # Create a new scope + + p = os.path.join(os.path.dirname(Testing.__file__), 'ZopeTestCase') + + if not os.path.isdir(p): + print 'Unable to locate ZopeTestCase package.', + print 'You might need to install ZopeTestCase.' + sys.exit(1) + + ztc_common = 'ztc_common.py' + ztc_common_global = os.path.join(p, ztc_common) + + f = 0 + if os.path.exists(ztc_common_global): + execfile(ztc_common_global) + f = 1 + if os.path.exists(ztc_common): + execfile(ztc_common) + f = 1 + + if not f: + print 'Unable to locate %s.' % ztc_common + sys.exit(1) + + +# Debug +# +print 'SOFTWARE_HOME: %s' % os.environ.get('SOFTWARE_HOME', 'Not set') +print 'INSTANCE_HOME: %s' % os.environ.get('INSTANCE_HOME', 'Not set') + diff --git a/product/ERP5/tests/runalltests.py b/product/ERP5/tests/runalltests.py new file mode 100755 index 0000000000..3a0d03daaf --- /dev/null +++ b/product/ERP5/tests/runalltests.py @@ -0,0 +1,29 @@ +# +# Runs all tests in the current directory +# +# Execute like: +# python runalltests.py +# +# Alternatively use the testrunner: +# python /path/to/Zope/utilities/testrunner.py -qa +# + +import os, sys +if __name__ == '__main__': + execfile(os.path.join(sys.path[0], 'framework.py')) + +import unittest +TestRunner = unittest.TextTestRunner +suite = unittest.TestSuite() + +tests = os.listdir(os.curdir) +tests = [n[:-3] for n in tests if n.startswith('test') and n.endswith('.py')] + +for test in tests: + m = __import__(test) + if hasattr(m, 'test_suite'): + suite.addTest(m.test_suite()) + +if __name__ == '__main__': + TestRunner().run(suite) + -- 2.30.9