Minimal chages to make tests pass on Windows · python/asyncio@84124f3 (original) (raw)
This repository was archived by the owner on Nov 23, 2017. It is now read-only.
File tree
3 files changed
lines changed
3 files changed
lines changed
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -6,6 +6,7 @@ | ||
6 | 6 | import select |
7 | 7 | import signal |
8 | 8 | import socket |
9 | +import sys | |
9 | 10 | import threading |
10 | 11 | import time |
11 | 12 | import unittest |
@@ -326,6 +327,7 @@ def testSockAccept(self): | ||
326 | 327 | conn.close() |
327 | 328 | listener.close() |
328 | 329 | |
330 | +@unittest.skipUnless(hasattr(signal, 'SIGKILL'), 'No SIGKILL') | |
329 | 331 | def testAddSignalHandler(self): |
330 | 332 | caught = 0 |
331 | 333 | def my_handler(): |
@@ -359,6 +361,7 @@ def my_handler(): | ||
359 | 361 | # Removing again returns False. |
360 | 362 | self.assertFalse(el.remove_signal_handler(signal.SIGINT)) |
361 | 363 | |
364 | +@unittest.skipIf(sys.platform == 'win32', 'Unix only') | |
362 | 365 | def testCancelSignalHandler(self): |
363 | 366 | # Cancelling the handler should remove it (eventually). |
364 | 367 | caught = 0 |
@@ -372,6 +375,7 @@ def my_handler(): | ||
372 | 375 | el.run_once() |
373 | 376 | self.assertEqual(caught, 0) |
374 | 377 | |
378 | +@unittest.skipUnless(hasattr(signal, 'SIGALRM'), 'No SIGALRM') | |
375 | 379 | def testSignalHandlingWhileSelecting(self): |
376 | 380 | # Test with a signal actually arriving during a select() call. |
377 | 381 | caught = 0 |
@@ -413,7 +417,7 @@ def testStartServing(self): | ||
413 | 417 | host, port = sock.getsockname() |
414 | 418 | self.assertEqual(host, '0.0.0.0') |
415 | 419 | client = socket.socket() |
416 | -client.connect((host, port)) | |
420 | +client.connect(('127.0.0.1', port)) | |
417 | 421 | client.send(b'xxx') |
418 | 422 | el.run_once() # This is quite mysterious, but necessary. |
419 | 423 | el.run_once() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -4,6 +4,7 @@ | ||
4 | 4 | """ |
5 | 5 | |
6 | 6 | import logging |
7 | +import sys | |
7 | 8 | |
8 | 9 | from select import * |
9 | 10 | |
@@ -216,7 +217,7 @@ def unregister(self, fileobj): | ||
216 | 217 | |
217 | 218 | def select(self, timeout=None): |
218 | 219 | try: |
219 | -r, w, _ = select(self._readers, self._writers, [], timeout) | |
220 | +r, w, _ = self._select(self._readers, self._writers, [], timeout) | |
220 | 221 | except InterruptedError: |
221 | 222 | # A signal arrived. Don't die, just return no events. |
222 | 223 | return [] |
@@ -234,6 +235,13 @@ def select(self, timeout=None): | ||
234 | 235 | ready.append((key.fileobj, events, key.data)) |
235 | 236 | return ready |
236 | 237 | |
238 | +if sys.platform == 'win32': | |
239 | +def _select(self, r, w, _, timeout=None): | |
240 | +r, w, x = select(r, w, w, timeout) | |
241 | +return r, w + x, [] | |
242 | +else: | |
243 | +from select import select as _select | |
244 | + | |
237 | 245 | |
238 | 246 | if 'poll' in globals(): |
239 | 247 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -134,7 +134,7 @@ def foo(): | ||
134 | 134 | res = self.event_loop.run_until_complete(tasks.Task(foo())) |
135 | 135 | t1 = time.monotonic() |
136 | 136 | self.assertTrue(t1-t0 >= 0.1) |
137 | -self.assertTrue(t1-t0 <= 0.12) | |
137 | +self.assertTrue(t1-t0 <= 0.13) | |
138 | 138 | |
139 | 139 | def testAsCompleted(self): |
140 | 140 | @tasks.coroutine |
@@ -226,7 +226,7 @@ def doit(): | ||
226 | 226 | doer = doit() |
227 | 227 | self.assertEqual(self.event_loop.run_until_complete(doer), 'cancelled') |
228 | 228 | t1 = time.monotonic() |
229 | -self.assertTrue(0.09 <= t1-t0 <= 0.11, (t1-t0, sleepfut, doer)) | |
229 | +self.assertTrue(0.09 <= t1-t0 <= 0.13, (t1-t0, sleepfut, doer)) | |
230 | 230 | |
231 | 231 | |
232 | 232 | if __name__ == '__main__': |