[conduit: 122/138] Try and run environment setup as early as possible
- From: John Carr <johncarr src gnome org>
- To: svn-commits-list gnome org
- Subject: [conduit: 122/138] Try and run environment setup as early as possible
- Date: Thu, 21 May 2009 03:37:10 -0400 (EDT)
commit e075ee5ec4c598f48bb35fe7c180d5924a4a6ddf
Author: John Carr <john carr unrouted co uk>
Date: Wed May 6 11:04:26 2009 -0700
Try and run environment setup as early as possible
---
test/soup/env/__init__.py | 19 ++++++++++
test/soup/env/fake-dbus.py | 2 +-
test/soup/soup | 87 ++++++++++++++++++++++----------------------
test/soup/utils/test.py | 16 +--------
4 files changed, 65 insertions(+), 59 deletions(-)
diff --git a/test/soup/env/__init__.py b/test/soup/env/__init__.py
index f68e161..e081fd8 100644
--- a/test/soup/env/__init__.py
+++ b/test/soup/env/__init__.py
@@ -27,4 +27,23 @@ class _EnvironmentLoader(PluginLoader):
_module_ = "soup.env"
_path_ = os.path.dirname(__file__)
+ def prepare_environment(self, opts):
+ self.active = []
+ for eklass in self.get_all():
+ if eklass.enabled(opts):
+ e = eklass()
+ e.prepare_environment()
+ self.active.append(e)
+
+ def decorate_test(self, test):
+ t = test
+ for e in self.active:
+ t = e.decorate_test(t)
+ return t
+
+ def finalize_environment(self):
+ for e in self.active:
+ e.finalize_environment()
+
+
EnvironmentLoader = _EnvironmentLoader()
diff --git a/test/soup/env/fake-dbus.py b/test/soup/env/fake-dbus.py
index 616601b..2206ee2 100644
--- a/test/soup/env/fake-dbus.py
+++ b/test/soup/env/fake-dbus.py
@@ -15,7 +15,7 @@ class Dbus(soup.env.EnvironmentWrapper):
@classmethod
def enabled(cls, opts):
- return False
+ return True
def prepare_environment(self):
conffile = os.path.join(os.path.dirname(__file__), "fake-session-bus.conf")
diff --git a/test/soup/soup b/test/soup/soup
index ce78a92..89fb238 100755
--- a/test/soup/soup
+++ b/test/soup/soup
@@ -9,20 +9,17 @@ os.environ['TEST_DIRECTORY'] = 'tmp'
if not os.path.exists('tmp'):
os.mkdir('tmp')
+from soup.env import EnvironmentLoader
+
import soup
from soup.utils import test
known_failures = [
'Evo', # Will trash your main evo :/
- 'Tomboy',
'Audio', # GStreamer hanging
'Video', # Probably same as ^
]
-from test_datatypes import *
-from test_dataprovider import *
-from test_synchronization import *
-
def run_tests(tests, opts):
runner = test.TestRunner(opts)
@@ -31,56 +28,60 @@ def run_tests(tests, opts):
res = runner.run(unittest.TestSuite(tests))
- sys.exit(not res.wasSuccessful())
-
def list_tests(tests, opts):
for test in tests:
print test.name(), test.testMethodName
- sys.exit(0)
+import optparse
-if __name__ == "__main__":
- import optparse
+parser = optparse.OptionParser(usage="usage: %prog [options] arg1 arg2")
- parser = optparse.OptionParser(usage="usage: %prog [options] arg1 arg2")
+# Options about which tests are run
+parser.add_option("-x", "--exclude", action="append", type="string", dest="exclude",
+ help="Exclude patterns matching PATTERN", metavar="PATTERN")
- # Options about which tests are run
- parser.add_option("-x", "--exclude", action="append", type="string", dest="exclude",
- help="Exclude patterns matching PATTERN", metavar="PATTERN")
+# Options about how the tests are run
+parser.add_option("-r", "--randomize", action="store_true", dest="randomize",
+ help="Run tests in a random order")
+parser.add_option("-v", "--verbose", action="store_true", dest="verbose",
+ help="Output lots of noise as tests are run")
+parser.add_option("-c", "--coverage", action="store_true", dest="coverage",
+ help="Enable code coverage")
+parser.add_option("-p", "--profile", action="store_true", dest="profile",
+ help="Profile execution")
- # Options about how the tests are run
- parser.add_option("-r", "--randomize", action="store_true", dest="randomize",
- help="Run tests in a random order")
- parser.add_option("-v", "--verbose", action="store_true", dest="verbose",
- help="Output lots of noise as tests are run")
- parser.add_option("-c", "--coverage", action="store_true", dest="coverage",
- help="Enable code coverage")
- parser.add_option("-p", "--profile", action="store_true", dest="profile",
- help="Profile execution")
+# Add the different execution modes..
+parser.add_option("-l", "--list", action="store_const", const="list", dest="mode",
+ help="List tests instead of running them")
+parser.add_option("-e", "--execute", action="store_const", const="execute", dest="mode",
+ help="Run the tests")
- # Add the different execution modes..
- parser.add_option("-l", "--list", action="store_const", const="list", dest="mode",
- help="List tests instead of running them")
- parser.add_option("-e", "--execute", action="store_const", const="execute", dest="mode",
- help="Run the tests")
+# Set parse defaults
+parser.set_defaults(mode="execute", randomize=False, verbose=False, coverage=False,
+ exclude=known_failures)
- # Set parse defaults
- parser.set_defaults(mode="execute", randomize=False, verbose=False, coverage=False,
- exclude=known_failures)
+# And parse..
+opts, args = parser.parse_args()
+
+EnvironmentLoader.prepare_environment(opts)
+
+from test_datatypes import *
+from test_dataprovider import *
+from test_synchronization import *
- # And parse..
- opts, args = parser.parse_args()
+# Figure out which tests to run
+tests = soup.TestLoader(include=args, exclude=opts.exclude).loadTestsFromMain()
- # Figure out which tests to run
- tests = soup.TestLoader(include=args, exclude=opts.exclude).loadTestsFromMain()
+if opts.randomize:
+ import random
+ random.shuffle(tests)
- if opts.randomize:
- import random
- random.shuffle(tests)
+# And run.
+if opts.mode == "execute":
+ run_tests(tests, opts)
+elif opts.mode == "list":
+ list_tests(tests, opts)
- # And run.
- if opts.mode == "execute":
- run_tests(tests, opts)
- elif opts.mode == "list":
- list_tests(tests, opts)
+EnvironmentLoader.finalize_environment()
+sys.exit(0)
diff --git a/test/soup/utils/test.py b/test/soup/utils/test.py
index b73fde2..ccebbb2 100644
--- a/test/soup/utils/test.py
+++ b/test/soup/utils/test.py
@@ -163,12 +163,6 @@ class TestRunner(object):
self.descriptions = 0
self.verbosity = 0
- # Discover all enabled EnvironmentWrapper objects
- self.env = []
- for e in soup.env.EnvironmentLoader.get_all():
- if e.enabled(opts):
- self.env.append(e())
-
def make_results(self, tests):
if self.verbosity > 1:
klass = VerboseConsoleTextResult
@@ -189,22 +183,14 @@ class TestRunner(object):
result = self.make_results(tests)
result.report_starting()
- for e in self.env:
- e.prepare_environment()
-
start_time = time.time()
for t in self.iter_tests(tests):
- tr = t.run
- for e in self.env:
- tr = e.decorate_test(tr)
+ tr = soup.env.EnvironmentLoader.decorate_test(t.run)
tr(result)
time_taken = time.time() - start_time
- for e in self.env:
- e.finalize_environment()
-
result.report_finished(time_taken)
return result
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]