1
1
# -*- coding: utf-8 -*-
2
- # FIXME: This test module fails on Linux
2
+ # FIXME: This test module randomly passes/fails even if all tests are skipped.
3
+ # Something fishy is going on with the Test fixtures. Behavior seen on CI on
4
+ # both Linux and Windows
5
+ # TODO: Remove delay of class creations. Adding SetUp/TearDown may help
3
6
4
7
import unittest
5
8
11
14
from _compat import range
12
15
13
16
14
- class InterfaceTestClass(IInterfaceTest):
15
- """class that implements the test interface"""
16
- __namespace__ = "Python.Test"
17
+ def interface_test_class_fixture():
18
+ """Delay creation of class until test starts."""
17
19
18
- def foo(self):
19
- return "InterfaceTestClass"
20
+ class InterfaceTestClass(IInterfaceTest):
21
+ """class that implements the test interface"""
22
+ __namespace__ = "Python.Test"
20
23
21
- def bar (self, x, i ):
22
- return "/".join([x] * i)
24
+ def foo (self):
25
+ return "InterfaceTestClass"
23
26
27
+ def bar(self, x, i):
28
+ return "/".join([x] * i)
24
29
25
- class DerivedClass(SubClassTest):
26
- """class that derives from a class deriving from IInterfaceTest"""
27
- __namespace__ = "Python.Test"
30
+ return InterfaceTestClass
28
31
29
- def foo(self):
30
- return "DerivedClass"
31
32
32
- def base_foo(self ):
33
- return SubClassTest.foo(self)
33
+ def derived_class_fixture( ):
34
+ """Delay creation of class until test starts."""
34
35
35
- def super_foo(self):
36
- return super(DerivedClass, self).foo()
36
+ class DerivedClass(SubClassTest):
37
+ """class that derives from a class deriving from IInterfaceTest"""
38
+ __namespace__ = "Python.Test"
37
39
38
- def bar (self, x, i ):
39
- return "_".join([x] * i)
40
+ def foo (self):
41
+ return "DerivedClass"
40
42
41
- def return_list(self):
42
- l = List[str]()
43
- l.Add("A")
44
- l.Add("B")
45
- l.Add("C")
46
- return l
43
+ def base_foo(self):
44
+ return SubClassTest.foo(self)
47
45
46
+ def super_foo(self):
47
+ return super(DerivedClass, self).foo()
48
48
49
- class DerivedEventTest(IInterfaceTest):
50
- """class that implements IInterfaceTest.TestEvent"""
51
- __namespace__ = "Python.Test"
49
+ def bar(self, x, i):
50
+ return "_".join([x] * i)
52
51
53
- def __init__(self):
54
- self.event_handlers = []
52
+ def return_list(self):
53
+ l = List[str]()
54
+ l.Add("A")
55
+ l.Add("B")
56
+ l.Add("C")
57
+ return l
55
58
56
- # event handling
57
- def add_TestEvent(self, handler):
58
- self.event_handlers.append(handler)
59
+ return DerivedClass
59
60
60
- def remove_TestEvent(self, handler):
61
- self.event_handlers.remove(handler)
62
61
63
- def OnTestEvent(self, value):
64
- args = EventArgsTest(value)
65
- for handler in self.event_handlers:
66
- handler(self, args)
62
+ def derived_event_test_class_fixture():
63
+ """Delay creation of class until test starts."""
64
+
65
+ class DerivedEventTest(IInterfaceTest):
66
+ """class that implements IInterfaceTest.TestEvent"""
67
+ __namespace__ = "Python.Test"
68
+
69
+ def __init__(self):
70
+ self.event_handlers = []
71
+
72
+ # event handling
73
+ def add_TestEvent(self, handler):
74
+ self.event_handlers.append(handler)
75
+
76
+ def remove_TestEvent(self, handler):
77
+ self.event_handlers.remove(handler)
78
+
79
+ def OnTestEvent(self, value):
80
+ args = EventArgsTest(value)
81
+ for handler in self.event_handlers:
82
+ handler(self, args)
83
+
84
+ return DerivedEventTest
67
85
68
86
69
87
class SubClassTests(unittest.TestCase):
70
88
"""Test sub-classing managed types"""
71
89
90
+ @unittest.skip(reason="FIXME: test randomly pass/fails")
72
91
def test_base_class(self):
73
92
"""Test base class managed type"""
74
93
ob = SubClassTest()
@@ -80,8 +99,10 @@ def test_base_class(self):
80
99
self.assertEqual(list(ob.return_list()), ["a", "b", "c"])
81
100
self.assertEqual(list(SubClassTest.test_list(ob)), ["a", "b", "c"])
82
101
102
+ @unittest.skip(reason="FIXME: test randomly pass/fails")
83
103
def test_interface(self):
84
104
"""Test python classes can derive from C# interfaces"""
105
+ InterfaceTestClass = interface_test_class_fixture()
85
106
ob = InterfaceTestClass()
86
107
self.assertEqual(ob.foo(), "InterfaceTestClass")
87
108
self.assertEqual(FunctionsTest.test_foo(ob), "InterfaceTestClass")
@@ -91,8 +112,10 @@ def test_interface(self):
91
112
x = FunctionsTest.pass_through(ob)
92
113
self.assertEqual(id(x), id(ob))
93
114
115
+ @unittest.skip(reason="FIXME: test randomly pass/fails")
94
116
def test_derived_class(self):
95
117
"""Test python class derived from managed type"""
118
+ DerivedClass = derived_class_fixture()
96
119
ob = DerivedClass()
97
120
self.assertEqual(ob.foo(), "DerivedClass")
98
121
self.assertEqual(ob.base_foo(), "foo")
@@ -107,8 +130,10 @@ def test_derived_class(self):
107
130
x = FunctionsTest.pass_through(ob)
108
131
self.assertEqual(id(x), id(ob))
109
132
133
+ @unittest.skip(reason="FIXME: test randomly pass/fails")
110
134
def test_create_instance(self):
111
135
"""Test derived instances can be created from managed code"""
136
+ DerivedClass = derived_class_fixture()
112
137
ob = FunctionsTest.create_instance(DerivedClass)
113
138
self.assertEqual(ob.foo(), "DerivedClass")
114
139
self.assertEqual(FunctionsTest.test_foo(ob), "DerivedClass")
@@ -119,6 +144,7 @@ def test_create_instance(self):
119
144
x = FunctionsTest.pass_through(ob)
120
145
self.assertEqual(id(x), id(ob))
121
146
147
+ InterfaceTestClass = interface_test_class_fixture()
122
148
ob2 = FunctionsTest.create_instance(InterfaceTestClass)
123
149
self.assertEqual(ob2.foo(), "InterfaceTestClass")
124
150
self.assertEqual(FunctionsTest.test_foo(ob2), "InterfaceTestClass")
@@ -128,6 +154,7 @@ def test_create_instance(self):
128
154
y = FunctionsTest.pass_through(ob2)
129
155
self.assertEqual(id(y), id(ob2))
130
156
157
+ @unittest.skip(reason="FIXME: test randomly pass/fails")
131
158
def test_events(self):
132
159
class EventHandler(object):
133
160
def handler(self, x, args):
@@ -140,10 +167,12 @@ def handler(self, x, args):
140
167
self.assertEqual(FunctionsTest.test_event(x, 1), 1)
141
168
self.assertEqual(event_handler.value, 1)
142
169
170
+ InterfaceTestClass = interface_test_class_fixture()
143
171
i = InterfaceTestClass()
144
172
with self.assertRaises(System.NotImplementedException):
145
173
FunctionsTest.test_event(i, 2)
146
174
175
+ DerivedEventTest = derived_event_test_class_fixture()
147
176
d = DerivedEventTest()
148
177
d.add_TestEvent(event_handler.handler)
149
178
self.assertEqual(FunctionsTest.test_event(d, 3), 3)
0 commit comments