diff options
| author | Steven Hardy <shardy@redhat.com> | 2014-10-16 18:40:19 +0100 |
|---|---|---|
| committer | Jakub Stasiak <jakub@stasiak.at> | 2014-11-02 10:41:01 +0000 |
| commit | 9c5e0615725ca9c110e2bddbda2080b5e7ea1943 (patch) | |
| tree | 6b0a1268093774935057fef59d57ba17bf764284 | |
| parent | 67cde41d03c0bccb12fd7d5f6d7e155d6da95e40 (diff) | |
| download | eventlet-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.py | 4 | ||||
| -rw-r--r-- | tests/greenio_test.py | 33 |
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): |
