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 os
import sys import sys
@unittest.skipIf(sys.platform[:3] in ('win', 'mac', 'os2', 'riscos'),
"can't easily test on this system")
class SelectTestCase(unittest.TestCase): class SelectTestCase(unittest.TestCase):
class Nope: class Nope:
@ -19,11 +21,14 @@ class SelectTestCase(unittest.TestCase):
self.assertRaises(TypeError, select.select, [self.Almost()], [], []) self.assertRaises(TypeError, select.select, [self.Almost()], [], [])
self.assertRaises(TypeError, select.select, [], [], [], "not a number") 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): 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' 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') p = os.popen(cmd, 'r')
for tout in (0, 1, 2, 4, 8, 16) + (None,)*10: 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 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. - Raise a TypeError when trying to delete a T_STRING_INPLACE struct member.
- Issue #1583863: An unicode subclass can now override the __unicode__ method - 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); PyErr_SetFromErrno(SelectError);
} }
#endif #endif
else if (n == 0) {
/* optimization */
ifdlist = PyList_New(0);
if (ifdlist) {
ret = PyTuple_Pack(3, ifdlist, ifdlist, ifdlist);
Py_DECREF(ifdlist);
}
}
else { else {
/* any of these three calls can raise an exception. it's more /* any of these three calls can raise an exception. it's more
convenient to test for this after all three calls... but convenient to test for this after all three calls... but