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__':