[pypy-svn] r56056 - pypy/dist/pypy/module/select/test
fijal at codespeak.net
fijal at codespeak.net
Wed Jun 25 06:15:39 CEST 2008
Author: fijal
Date: Wed Jun 25 06:15:36 2008
New Revision: 56056
Modified:
pypy/dist/pypy/module/select/test/test_select.py
Log:
* Add a test from issue346, fails on top of pypy-c, but on other test
hangs when run on top of py.py anyway for me
* Make py.test -A work.
Modified: pypy/dist/pypy/module/select/test/test_select.py
==============================================================================
--- pypy/dist/pypy/module/select/test/test_select.py (original)
+++ pypy/dist/pypy/module/select/test/test_select.py Wed Jun 25 06:15:36 2008
@@ -9,7 +9,7 @@
to report that no results are available.
"""
import time, select
- readend, writeend = getpair()
+ readend, writeend = self.getpair()
try:
start = time.time()
iwtd, owtd, ewtd = select.select([readend], [], [], 0.3)
@@ -22,9 +22,9 @@
def test_list_tuple(self):
import time, select
- readend, writeend = getpair()
+ readend, writeend = self.getpair()
try:
- iwtd, owtd, ewtd = select.select([readend], (), (), 0)
+ iwtd, owtd, ewtd = select.select([readend], (), (), .3)
finally:
readend.close()
writeend.close()
@@ -35,7 +35,7 @@
parameter) which may have data available to be read.
"""
import select
- readend, writeend = getpair()
+ readend, writeend = self.getpair()
try:
iwtd, owtd, ewtd = select.select([readend], [], [], 0)
assert iwtd == owtd == ewtd == []
@@ -53,7 +53,7 @@
parameter) on which a write/send may be possible.
"""
import select
- readend, writeend = getpair()
+ readend, writeend = self.getpair()
try:
iwtd, owtd, ewtd = select.select([], [writeend], [], 0)
assert iwtd == ewtd == []
@@ -71,7 +71,7 @@
overlaps significantly with test_readable. -exarkun)
"""
import select
- readend, writeend = getpair()
+ readend, writeend = self.getpair()
try:
total_out = 0
while True:
@@ -103,7 +103,7 @@
parameter) which have no data to be read but which have been closed.
"""
import select, sys
- readend, writeend = getpair()
+ readend, writeend = self.getpair()
try:
try:
total_out = writeend.send('x' * 512)
@@ -137,7 +137,7 @@
pipe).
"""
import select
- readend, writeend = getpair()
+ readend, writeend = self.getpair()
try:
readend.close()
iwtd, owtd, ewtd = select.select([writeend], [], [], 0)
@@ -157,7 +157,7 @@
writeends = []
try:
for i in range(10):
- fd1, fd2 = getpair()
+ fd1, fd2 = self.getpair()
readends.append(fd1)
writeends.append(fd2)
iwtd, owtd, ewtd = select.select(readends, [], [], 0)
@@ -184,7 +184,7 @@
write end non-writable before testing its selectability. -exarkun)
"""
import select
- readend, writeend = getpair()
+ readend, writeend = self.getpair()
readend.close()
try:
iwtd, owtd, ewtd = select.select([], [writeend], [])
@@ -193,6 +193,21 @@
finally:
writeend.close()
+ def test_select_bug(self):
+ import select, os
+ read, write = os.pipe()
+ pid = os.fork()
+ if pid == 0:
+ os._exit(0)
+ else:
+ os.close(read)
+ os.waitpid(pid, 0)
+ res = select.select([write], [write], [write])
+ assert len(res[0]) == 1
+ assert len(res[1]) == 1
+ assert len(res[2]) == 0
+ assert res[0][0] == res[1][0]
+
class AppTestSelectWithPipes(_AppTestSelect):
"Use a pipe to get pairs of file descriptors"
def setup_class(cls):
@@ -202,7 +217,7 @@
cls.space = space
# Wraps a file descriptor in an socket-like object
- space.exec_('''if 1:
+ cls.w_getpair = space.appexec([], '''():
import os
class FileAsSocket:
def __init__(self, fd):
@@ -217,19 +232,18 @@
return os.close(self.fd)
def getpair():
s1, s2 = os.pipe()
- return FileAsSocket(s1), FileAsSocket(s2)''',
- space.builtin.w_dict, space.builtin.w_dict)
+ return FileAsSocket(s1), FileAsSocket(s2)
+ return getpair''')
class AppTestSelectWithSockets(_AppTestSelect):
"""Same tests with connected sockets.
socket.socketpair() does not exists on win32,
so we start our own server."""
def setup_class(cls):
- space = gettestobjspace(usemodules=('select',))
+ space = gettestobjspace(usemodules=('select','_socket'))
cls.space = space
- space.setitem(space.builtin.w_dict, space.wrap('getpair'),
- space.wrap(cls.getsocketpair))
+ cls.w_getpair = space.wrap(cls.getsocketpair)
import socket
cls.sock = socket.socket()
@@ -259,3 +273,4 @@
s1, addr2 = cls.sock.accept()
return s1, s2
+
More information about the Pypy-commit
mailing list