Browse Source

fix maybe_make_aware (#3850)

* celery.utils.time: fix maybe_make_aware (#3849)

* t.unit.utils.test_time: add asserts for maybe_make_aware change (#3849)
Taylor C. Richberger 8 years ago
parent
commit
97597f443a
2 changed files with 11 additions and 3 deletions
  1. 4 3
      celery/utils/time.py
  2. 7 0
      t/unit/utils/test_time.py

+ 4 - 3
celery/utils/time.py

@@ -322,9 +322,10 @@ def maybe_make_aware(dt, tz=None):
     """Convert dt to aware datetime, do nothing if dt is already aware."""
     if is_naive(dt):
         dt = to_utc(dt)
-    return localize(
-        dt, timezone.utc if tz is None else timezone.tz_or_local(tz),
-    )
+        return localize(
+            dt, timezone.utc if tz is None else timezone.tz_or_local(tz),
+        )
+    return dt
 
 
 @python_2_unicode_compatible

+ 7 - 0
t/unit/utils/test_time.py

@@ -171,6 +171,13 @@ class test_make_aware:
         assert maybe_make_aware(aware)
         naive = datetime.utcnow()
         assert maybe_make_aware(naive)
+        assert maybe_make_aware(naive).tzinfo is pytz.utc
+
+        tz = pytz.timezone('US/Eastern')
+        eastern = datetime.utcnow().replace(tzinfo=tz)
+        assert maybe_make_aware(eastern).tzinfo is tz
+        utcnow = datetime.utcnow()
+        assert maybe_make_aware(utcnow, 'UTC').tzinfo is pytz.utc
 
 
 class test_localize: