summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--eventlet/green/select.py4
-rw-r--r--tests/greenio_test.py33
2 files changed, 35 insertions, 2 deletions
diff --git a/eventlet/green/select.py b/eventlet/green/select.py
index f1bf381..53fb359 100644
--- a/eventlet/green/select.py
+++ b/eventlet/green/select.py
@@ -17,12 +17,12 @@ def get_fileno(obj):
f = obj.fileno
except AttributeError:
if not isinstance(obj, six.integer_types):
- raise TypeError("Expected int or long, got " + type(obj))
+ raise TypeError("Expected int or long, got %s" % type(obj))
return obj
else:
rv = f()
if not isinstance(rv, six.integer_types):
- raise TypeError("Expected int or long, got " + type(rv))
+ raise TypeError("Expected int or long, got %s" % type(rv))
return rv
diff --git a/tests/greenio_test.py b/tests/greenio_test.py
index 8993e85..b002273 100644
--- a/tests/greenio_test.py
+++ b/tests/greenio_test.py
@@ -8,6 +8,7 @@ import shutil
import socket as _orig_sock
import sys
import tempfile
+from unittest import TestCase
from nose.tools import eq_
@@ -613,6 +614,38 @@ class TestGreenSocket(LimitedTestCase):
assert select.select([], [s1], [], 0) == ([], [s1], [])
+def test_get_fileno_of_a_socket_works():
+ class DummySocket(object):
+ def fileno(self):
+ return 123
+ assert select.get_fileno(DummySocket()) == 123
+
+
+def test_get_fileno_of_an_int_works():
+ assert select.get_fileno(123) == 123
+
+
+def test_get_fileno_of_wrong_type_fails():
+ try:
+ select.get_fileno('foo')
+ except TypeError as ex:
+ assert str(ex) == 'Expected int or long, got <type \'str\'>'
+ else:
+ assert False, 'Expected TypeError not raised'
+
+
+def test_get_fileno_of_a_socket_with_fileno_returning_wrong_type_fails():
+ class DummySocket(object):
+ def fileno(self):
+ return 'foo'
+ try:
+ select.get_fileno(DummySocket())
+ except TypeError as ex:
+ assert str(ex) == 'Expected int or long, got <type \'str\'>'
+ else:
+ assert False, 'Expected TypeError not raised'
+
+
class TestGreenPipe(LimitedTestCase):
@skip_on_windows
def setUp(self):