SVN: zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/ started moving out filtering tests away into its own feature

Christian Theune <[email protected]>
Newsgroups gmane.comp.web.zope.zope3.cvs
Message-ID <20080504154713.BBAEE399D2__9238.74214427105$1209916100$gmane$org@mail.zope.org>
Log message for revision 86392:
  started moving out filtering tests away into its own feature
  

Changed:
  A   zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/filter.py
  U   zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/runner.py

-=-
Added: zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/filter.py
===================================================================
--- zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/filter.py	                        (rev 0)
+++ zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/filter.py	2008-05-04 15:47:13 UTC (rev 86392)
@@ -0,0 +1,49 @@
+##############################################################################
+#
+# Copyright (c) 2004-2008 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Filter which tests to run.
+
+$Id: __init__.py 86218 2008-05-03 14:17:26Z ctheune $
+"""
+
+import time
+import zope.testing.testrunner.feature
+
+
+class Filter(zope.testing.testrunner.feature.Feature):
+    """Filters all tests registered until now."""
+
+    active = True
+
+    def global_setup(self):
+        tests = self.runner.tests_by_layer_name
+        options = self.runner.options
+
+        if 'unit' in tests:
+            # We start out assuming unit tests should run and look for reasons
+            # why they shouldn't be run.
+            should_run = True
+            if (not options.non_unit) and not options.resume_layer:
+                if options.layer:
+                    should_run = False
+                    for pat in options.layer:
+                        if pat('unit'):
+                            should_run = True
+                            break
+                else:
+                    should_run = True
+            else:
+                should_run = False
+
+            if not should_run:
+                tests.pop('unit')


Property changes on: zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/filter.py
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/runner.py
===================================================================
--- zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/runner.py	2008-05-04 15:30:37 UTC (rev 86391)
+++ zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/runner.py	2008-05-04 15:47:13 UTC (rev 86392)
@@ -41,6 +41,7 @@
 import zope.testing.testrunner.selftest
 import zope.testing.testrunner.profiling
 import zope.testing.testrunner.timing
+import zope.testing.testrunner.filter
 import zope.testing.testrunner.garbagecollection
 
 
@@ -191,45 +192,31 @@
         self.features.append(zope.testing.testrunner.garbagecollection.Threshold(self))
         self.features.append(zope.testing.testrunner.garbagecollection.Debug(self))
         self.features.append(zope.testing.testrunner.find.Find(self))
+        self.features.append(zope.testing.testrunner.filter.Filter(self))
 
         # Remove all features that aren't activated
         self.features = [f for f in self.features if f.active]
 
     def run_tests(self):
-        """Find and run tests
+        """Run all tests that were registered.
 
-        Passing a list of suites using the found_suites parameter will cause
-        that list of suites to be used instead of attempting to load them from
-        the filesystem. This is useful for unit testing the test runner.
-
         Returns True if there where failures or False if all tests passed.
 
         """
         if 'unit' in self.tests_by_layer_name:
             tests = self.tests_by_layer_name.pop('unit')
-            if (not self.options.non_unit) and not self.options.resume_layer:
-                if self.options.layer:
-                    should_run = False
-                    for pat in self.options.layer:
-                        if pat('unit'):
-                            should_run = True
-                            break
-                else:
-                    should_run = True
+            if self.options.list_tests:
+                self.options.output.list_of_tests(tests, 'unit')
+            else:
+                self.options.output.info("Running unit tests:")
+                self.nlayers += 1
+                try:
+                    self.ran += run_tests(self.options, tests, 'unit',
+                                          self.failures, self.errors)
+                except EndRun:
+                    self.failed = True
+                    return
 
-                if should_run:
-                    if self.options.list_tests:
-                        self.options.output.list_of_tests(tests, 'unit')
-                    else:
-                        self.options.output.info("Running unit tests:")
-                        self.nlayers += 1
-                        try:
-                            self.ran += run_tests(self.options, tests, 'unit',
-                                                  self.failures, self.errors)
-                        except EndRun:
-                            self.failed = True
-                            return
-
         setup_layers = {}
 
         layers_to_run = list(ordered_layers(self.tests_by_layer_name))
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.