1
from nose2.compat import unittest
2
from nose2.plugins import layers
3
from nose2 import events, loader, session
4
from nose2.tests._common import TestCase
7
class TestLayers(TestCase):
11
self.session = session.Session()
12
self.loader = loader.PluggableTestLoader(session=self.session)
13
self.session.testLoader = self.loader
14
self.plugin = layers.Layers(session=self.session)
16
def test_simple_layer_inheritance(self):
23
class T1(unittest.TestCase):
29
class T2(unittest.TestCase):
35
suite = unittest.TestSuite([T2('test'), T1('test')])
36
event = events.StartTestRunEvent(None, suite, None, 0, None)
37
self.plugin.startTestRun(event)
38
expect = [['test (nose2.tests.unit.test_layers_plugin.T1)',
39
['test (nose2.tests.unit.test_layers_plugin.T2)']]]
40
self.assertEqual(self.names(event.suite), expect)
42
def test_multiple_inheritance(self):
52
class T1(unittest.TestCase):
58
class T2(unittest.TestCase):
64
class T3(unittest.TestCase):
70
suite = unittest.TestSuite([T2('test'), T1('test'), T3('test')])
71
event = events.StartTestRunEvent(None, suite, None, 0, None)
72
self.plugin.startTestRun(event)
73
expect = [['test (nose2.tests.unit.test_layers_plugin.T1)',
74
['test (nose2.tests.unit.test_layers_plugin.T2)'],
75
['test (nose2.tests.unit.test_layers_plugin.T3)']]]
76
self.assertEqual(self.names(event.suite), expect)
78
def test_deep_inheritance(self):
94
class T1(unittest.TestCase):
100
class T2(unittest.TestCase):
106
class T3(unittest.TestCase):
112
class T4(unittest.TestCase):
118
class T5(unittest.TestCase):
124
suite = unittest.TestSuite([T2('test'), T1('test'), T3('test'),
125
T4('test'), T5('test')])
126
event = events.StartTestRunEvent(None, suite, None, 0, None)
127
self.plugin.startTestRun(event)
128
expect = [['test (nose2.tests.unit.test_layers_plugin.T1)',
129
['test (nose2.tests.unit.test_layers_plugin.T2)',
130
['test (nose2.tests.unit.test_layers_plugin.T4)',
131
['test (nose2.tests.unit.test_layers_plugin.T5)']]],
132
['test (nose2.tests.unit.test_layers_plugin.T3)']]]
133
self.assertEqual(self.names(event.suite), expect)
135
def test_mixed_layers_no_layers(self):
142
class T1(unittest.TestCase):
148
class T2(unittest.TestCase):
154
class T3(unittest.TestCase):
159
suite = unittest.TestSuite([T2('test'), T1('test'), T3('test')])
160
event = events.StartTestRunEvent(None, suite, None, 0, None)
161
self.plugin.startTestRun(event)
162
expect = ['test (nose2.tests.unit.test_layers_plugin.T3)',
163
['test (nose2.tests.unit.test_layers_plugin.T1)',
164
['test (nose2.tests.unit.test_layers_plugin.T2)']]]
165
self.assertEqual(self.names(event.suite), expect)
167
def test_ordered_layers(self):
183
class T1(unittest.TestCase):
189
class T2(unittest.TestCase):
195
class T3(unittest.TestCase):
201
class T4(unittest.TestCase):
207
class T5(unittest.TestCase):
212
suite = unittest.TestSuite([T2('test'), T1('test'),
213
T3('test'), T4('test'), T5('test')])
214
event = events.StartTestRunEvent(None, suite, None, 0, None)
215
self.plugin.startTestRun(event)
216
expect = [['test (nose2.tests.unit.test_layers_plugin.T1)',
217
['test (nose2.tests.unit.test_layers_plugin.T2)',
218
['test (nose2.tests.unit.test_layers_plugin.T5)', ]],
219
['test (nose2.tests.unit.test_layers_plugin.T3)', ],
220
['test (nose2.tests.unit.test_layers_plugin.T4)', ]]]
221
self.assertEqual(self.names(event.suite), expect)
223
def test_mixin_inheritance(self):
227
class L2(object): # a mixin, doesn't share a base w/L1
242
class T1(unittest.TestCase):
248
class T3(unittest.TestCase):
254
class T4(unittest.TestCase):
260
class T5(unittest.TestCase):
266
class T6(unittest.TestCase):
271
suite = unittest.TestSuite([T6('test'), T1('test'),
272
T3('test'), T4('test'), T5('test')])
273
event = events.StartTestRunEvent(None, suite, None, 0, None)
274
self.plugin.startTestRun(event)
275
expect = [['test (nose2.tests.unit.test_layers_plugin.T1)',
276
['test (nose2.tests.unit.test_layers_plugin.T3)',
277
['test (nose2.tests.unit.test_layers_plugin.T4)',
278
[['test (nose2.tests.unit.test_layers_plugin.T6)']],
279
['test (nose2.tests.unit.test_layers_plugin.T5)', ]]]]]
280
self.assertEqual(self.names(event.suite), expect)
282
def names(self, suite):
283
return [n for n in self.iternames(suite)]
285
def iternames(self, suite):
287
if isinstance(t, unittest.TestCase):
290
yield [n for n in self.iternames(t)]
292
def _listset(self, l):
295
if isinstance(t, list):
296
n.add(self._listset(t))