Merged revisions 79866-79867 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r79866 | benjamin.peterson | 2010-04-06 16:37:06 -0500 (Tue, 06 Apr 2010) | 1 line

  use skip decorator
........
  r79867 | benjamin.peterson | 2010-04-06 16:50:00 -0500 (Tue, 06 Apr 2010) | 1 line

  remove a optimization that resulted in unexpected behavior #8929
........
This commit is contained in:
Benjamin Peterson 2010-04-06 21:55:35 +00:00
parent 02c36efef5
commit 8a48808f33
3 changed files with 12 additions and 12 deletions

View File

@ -4,6 +4,8 @@ import select
import os
import sys
@unittest.skipIf(sys.platform[:3] in ('win', 'mac', 'os2', 'riscos'),
"can't easily test on this system")
class SelectTestCase(unittest.TestCase):
class Nope:
@ -19,11 +21,14 @@ class SelectTestCase(unittest.TestCase):
self.assertRaises(TypeError, select.select, [self.Almost()], [], [])
self.assertRaises(TypeError, select.select, [], [], [], "not a number")
def test_returned_list_identity(self):
# See issue #8329
r, w, x = select.select([], [], [], 1)
self.assertIsNot(r, w)
self.assertIsNot(r, x)
self.assertIsNot(w, x)
def test_select(self):
if sys.platform[:3] in ('win', 'mac', 'os2', 'riscos'):
if test_support.verbose:
print "Can't test select easily on", sys.platform
return
cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done'
p = os.popen(cmd, 'r')
for tout in (0, 1, 2, 4, 8, 16) + (None,)*10:

View File

@ -12,6 +12,9 @@ What's New in Python 2.6.6 alpha 1?
Core and Builtins
-----------------
- Issue #8329: Don't return the same lists from select.select when no fds are
changed.
- Raise a TypeError when trying to delete a T_STRING_INPLACE struct member.
- Issue #1583863: An unicode subclass can now override the __unicode__ method

View File

@ -287,14 +287,6 @@ select_select(PyObject *self, PyObject *args)
PyErr_SetFromErrno(SelectError);
}
#endif
else if (n == 0) {
/* optimization */
ifdlist = PyList_New(0);
if (ifdlist) {
ret = PyTuple_Pack(3, ifdlist, ifdlist, ifdlist);
Py_DECREF(ifdlist);
}
}
else {
/* any of these three calls can raise an exception. it's more
convenient to test for this after all three calls... but