Fixed #17992 -- Added a public API for localtime.

Thanks Bradley Ayers for the report.
This commit is contained in:
Aymeric Augustin 2012-04-29 15:37:23 +02:00
parent 5aa51fa999
commit 3e8b40f479
9 changed files with 65 additions and 35 deletions

View file

@ -1,18 +1,33 @@
import copy
import datetime
import pickle
from django.utils.timezone import UTC, LocalTimezone
from django.test.utils import override_settings
from django.utils import timezone
from django.utils import unittest
class TimezoneTests(unittest.TestCase):
def test_localtime(self):
now = datetime.datetime.utcnow().replace(tzinfo=timezone.utc)
local_tz = timezone.LocalTimezone()
local_now = timezone.localtime(now, local_tz)
self.assertEqual(local_now.tzinfo, local_tz)
def test_now(self):
with override_settings(USE_TZ=True):
self.assertTrue(timezone.is_aware(timezone.now()))
with override_settings(USE_TZ=False):
self.assertTrue(timezone.is_naive(timezone.now()))
def test_copy(self):
self.assertIsInstance(copy.copy(UTC()), UTC)
self.assertIsInstance(copy.copy(LocalTimezone()), LocalTimezone)
self.assertIsInstance(copy.copy(timezone.UTC()), timezone.UTC)
self.assertIsInstance(copy.copy(timezone.LocalTimezone()), timezone.LocalTimezone)
def test_deepcopy(self):
self.assertIsInstance(copy.deepcopy(UTC()), UTC)
self.assertIsInstance(copy.deepcopy(LocalTimezone()), LocalTimezone)
self.assertIsInstance(copy.deepcopy(timezone.UTC()), timezone.UTC)
self.assertIsInstance(copy.deepcopy(timezone.LocalTimezone()), timezone.LocalTimezone)
def test_pickling_unpickling(self):
self.assertIsInstance(pickle.loads(pickle.dumps(UTC())), UTC)
self.assertIsInstance(pickle.loads(pickle.dumps(LocalTimezone())), LocalTimezone)
self.assertIsInstance(pickle.loads(pickle.dumps(timezone.UTC())), timezone.UTC)
self.assertIsInstance(pickle.loads(pickle.dumps(timezone.LocalTimezone())), timezone.LocalTimezone)