Skip to content

Commit 1eeb0d3

Browse files
committed
Simplify manager test harness
This was doing all kinds of weird backflips in order to test that `run` was called, including attempting to pickle unpickleable things. I'm not really sure how this ever worked.
1 parent b786863 commit 1eeb0d3

File tree

1 file changed

+10
-69
lines changed

1 file changed

+10
-69
lines changed

tests/test_manager.py

Lines changed: 10 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,8 @@ def __init__(self, cmd, name=None, colour=None, quiet=None, env=None, cwd=None):
6969
self.env = env
7070
self.cwd = cwd
7171

72-
self._events = None
73-
self._options = {}
74-
7572
def run(self, events=None, ignore_signals=False):
76-
self._report('run', events_passed=events is not None)
77-
78-
def _report(self, type, **data):
79-
if self._events is not None:
80-
data.update({'type': type,
81-
'name': self.name})
82-
self._events.put(data)
73+
pass
8374

8475

8576
class Harness(object):
@@ -89,11 +80,8 @@ def __init__(self, history, manager):
8980
self.manager = manager
9081
self.events_local = []
9182

92-
self._q = multiprocessing.Queue()
93-
self._rc = multiprocessing.Value('i', -999)
94-
9583
def run(self, wait=True):
96-
self.manager._process_ctor = self._process_ctor
84+
self.manager._process_ctor = FakeProcess
9785

9886
for name, options in self.history['processes'].items():
9987
self.manager.add_process(name,
@@ -104,55 +92,15 @@ def _loop(rc):
10492
self.manager.loop()
10593
rc.value = self.manager.returncode
10694

107-
self._mproc = multiprocessing.Process(target=_loop, args=(self._rc,))
108-
self._mproc.start()
109-
11095
for msg in self.history['messages']:
111-
self.send_manager(*msg)
112-
113-
self._mproc.join()
114-
115-
@property
116-
def manager_returncode(self):
117-
if self._rc.value == -999:
118-
return None
119-
return self._rc.value
120-
121-
def send_manager(self, process_name, type, data, **kwargs):
122-
self.manager.events.put(Message(type=type,
123-
data=data,
124-
time=datetime.datetime.now(),
125-
name=process_name,
126-
colour=None))
96+
process_name, type, data = msg
97+
self.manager.events.put(Message(type=type,
98+
data=data,
99+
time=datetime.datetime.now(),
100+
name=process_name,
101+
colour=None))
127102

128-
def fetch_events(self):
129-
"""
130-
Retrieve any pending events from the queue and put them on the local
131-
event cache
132-
"""
133-
while 1:
134-
try:
135-
self.events_local.append(self._q.get(False))
136-
except queue.Empty:
137-
break
138-
139-
def find_events(self, name=None, type=None):
140-
self.fetch_events()
141-
results = []
142-
for event in self.events_local:
143-
if name is not None and event['name'] != name:
144-
continue
145-
if type is not None and event['type'] != type:
146-
continue
147-
results.append(event)
148-
return results
149-
150-
def _process_ctor(self, *args, **kwargs):
151-
options = self.history['processes'][kwargs['name']]
152-
p = FakeProcess(*args, **kwargs)
153-
p._events = self._q
154-
p._options = options
155-
return p
103+
self.manager.loop()
156104

157105

158106
class FakePrinter(object):
@@ -240,13 +188,6 @@ def test_add_process_sets_cwd(self):
240188
def test_loop_with_empty_manager_returns_immediately(self):
241189
self.m.loop()
242190

243-
def test_loop_calls_process_run(self):
244-
self.run_history('one')
245-
evts = self.h.find_events(type='run')
246-
assert len(evts) == 1
247-
assert evts[0]['name'] == 'foo'
248-
assert evts[0]['events_passed']
249-
250191
def test_printer_receives_messages_in_correct_order(self):
251192
self.run_history('one')
252193
self.p.fetch_lines()
@@ -263,7 +204,7 @@ def test_printer_receives_lines_multi_process(self):
263204

264205
def test_returncode_set_by_first_exiting_process(self):
265206
self.run_history('returncode')
266-
assert self.h.manager_returncode == 456
207+
assert self.h.manager.returncode == 456
267208

268209
def test_printer_receives_lines_after_stop(self):
269210
self.run_history('output_after_stop')

0 commit comments

Comments
 (0)