summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Hardy <shardy@redhat.com>2014-10-16 18:40:19 +0100
committerJakub Stasiak <jakub@stasiak.at>2014-11-02 10:41:01 +0000
commit9c5e0615725ca9c110e2bddbda2080b5e7ea1943 (patch)
tree6b0a1268093774935057fef59d57ba17bf764284
parent67cde41d03c0bccb12fd7d5f6d7e155d6da95e40 (diff)
downloadeventlet-gh149.tar.gz
Fix string concatenation errorsgh149
Some error paths concatenate the output of "type" with a string, which gives TypeError: cannot concatenate 'str' and 'type' objects, rather than describing the actual error. Closes #149 Conflicts: eventlet/hubs/twistedr.py
-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):