Comment 1 for bug 446073

Revision history for this message
Thomas Herve (therve) wrote :

I'm not sure I really understand what's going on in order_by_bases. I guess it always put the base classes before their children. It doesn't order layers between them, though.

The following patch puts the unittest layer first, but I suspect there may be a better fix:

=== modified file 'src/zope/testing/testrunner/runner.py'
--- src/zope/testing/testrunner/runner.py 2009-10-07 17:53:44 +0000
+++ src/zope/testing/testrunner/runner.py 2009-10-08 06:56:29 +0000
@@ -101,7 +101,12 @@
     def ordered_layers(self):
         layer_names = dict([(layer_from_name(layer_name), layer_name)
                             for layer_name in self.tests_by_layer_name])
- for layer in order_by_bases(layer_names):
+ from zope.testing.testrunner.layer import UnitTests
+ layers = order_by_bases(layer_names)
+ if UnitTests in layers and layers.index(UnitTests):
+ layers.remove(UnitTests)
+ layers.insert(0, UnitTests)
+ for layer in layers:
             layer_name = layer_names[layer]
             yield layer_name, layer, self.tests_by_layer_name[layer_name]