소스 검색

Tests passing on Py3

Ask Solem 12 년 전
부모
커밋
93a7037e7d
6개의 변경된 파일19개의 추가작업 그리고 8개의 파일을 삭제
  1. 4 1
      celery/tests/utils/test_local.py
  2. 2 4
      celery/tests/utils/test_mail.py
  3. 3 1
      celery/tests/utils/test_timeutils.py
  4. 1 0
      celery/utils/datastructures.py
  5. 8 1
      celery/utils/mail.py
  6. 1 1
      celery/utils/threads.py

+ 4 - 1
celery/tests/utils/test_local.py

@@ -1,5 +1,7 @@
 from __future__ import absolute_import, unicode_literals
 
+import sys
+
 from mock import Mock
 
 from celery.five import string, long_t
@@ -160,7 +162,8 @@ class test_Proxy(Case):
         x[0:2] = [1, 2]
         del(x[0:2])
         self.assertTrue(str(x))
-        self.assertEqual(x.__cmp__(object()), -1)
+        if sys.version_info[0] < 3:
+            self.assertEqual(x.__cmp__(object()), -1)
 
     def test_complex_cast(self):
 

+ 2 - 4
celery/tests/utils/test_mail.py

@@ -1,10 +1,8 @@
 from __future__ import absolute_import
 
-import socket
-
 from mock import Mock, patch
 
-from celery.utils.mail import Message, Mailer
+from celery.utils.mail import Message, Mailer, SSLError
 
 from celery.tests.case import Case
 
@@ -52,6 +50,6 @@ class test_Mailer(Case):
 
         client.sendmail.assert_called_With(msg.sender, msg.to, str(msg))
 
-        client.quit.side_effect = socket.sslerror()
+        client.quit.side_effect = SSLError()
         mailer._send(msg)
         client.close.assert_called_with()

+ 3 - 1
celery/tests/utils/test_timeutils.py

@@ -173,6 +173,7 @@ class test_make_aware(Case):
                 if self.raises and is_dst is None:
                     self.raised = True
                     raise AmbiguousTimeError()
+                return 1  # needed by min() in Python 3 (None not hashable)
 
         tz = tzz()
         make_aware(datetime.utcnow(), tz)
@@ -198,7 +199,7 @@ class test_localize(Case):
         self.assertFalse(hasattr(tz, 'normalize'))
         self.assertTrue(localize(make_aware(datetime.utcnow(), tz), tz))
 
-    def test_when_has_nornalize(self):
+    def test_when_has_normalize(self):
 
         class tzz(tzinfo):
             raises = None
@@ -208,6 +209,7 @@ class test_localize(Case):
                 if self.raises and kwargs and kwargs.get('is_dst') is None:
                     self.raised = True
                     raise self.raises
+                return 1  # needed by min() in Python 3 (None not hashable)
 
         tz = tzz()
         localize(make_aware(datetime.utcnow(), tz), tz)

+ 1 - 0
celery/utils/datastructures.py

@@ -409,6 +409,7 @@ class DictAttribute(object):
     if sys.version_info[0] == 3:  # pragma: no cover
         items = _iterate_items
         keys = _iterate_keys
+        values = _iterate_values
     else:
 
         def keys(self):

+ 8 - 1
celery/utils/mail.py

@@ -17,6 +17,13 @@ from email.mime.text import MIMEText
 
 from .functional import maybe_list
 
+try:
+    from ssl import SSLError
+except ImportError:  # pragma: no cover
+    class SSLError(Exception):  # noqa
+        """fallback used when ssl module not compiled."""
+
+
 _local_hostname = None
 
 
@@ -92,7 +99,7 @@ class Mailer(object):
         client.sendmail(message.sender, message.to, str(message))
         try:
             client.quit()
-        except socket.sslerror:
+        except SSLError:
             client.close()
 
 

+ 1 - 1
celery/utils/threads.py

@@ -121,7 +121,7 @@ class Local(object):
         object.__setattr__(self, '__ident_func__', get_ident)
 
     def __iter__(self):
-        return items(self.__storage__)
+        return iter(items(self.__storage__))
 
     def __call__(self, proxy):
         """Create a proxy for a name."""