| #!/usr/bin/env vpython3 |
| # Copyright 2016 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Tests for git_dates.""" |
| |
| import datetime |
| import os |
| import sys |
| import unittest |
| |
| DEPOT_TOOLS_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
| sys.path.insert(0, DEPOT_TOOLS_ROOT) |
| |
| from testing_support import coverage_utils |
| |
| |
| class GitDatesTestBase(unittest.TestCase): |
| @classmethod |
| def setUpClass(cls): |
| super(GitDatesTestBase, cls).setUpClass() |
| import git_dates |
| cls.git_dates = git_dates |
| |
| |
| class GitDatesTest(GitDatesTestBase): |
| def testTimestampOffsetToDatetime(self): |
| # 2016-01-25 06:25:43 UTC |
| timestamp = 1453703143 |
| |
| offset = '+1100' |
| expected_tz = self.git_dates.FixedOffsetTZ(datetime.timedelta(hours=11), '') |
| expected = datetime.datetime(2016, 1, 25, 17, 25, 43, tzinfo=expected_tz) |
| result = self.git_dates.timestamp_offset_to_datetime(timestamp, offset) |
| self.assertEqual(expected, result) |
| self.assertEqual(datetime.timedelta(hours=11), result.utcoffset()) |
| self.assertEqual('+1100', result.tzname()) |
| self.assertEqual(datetime.timedelta(0), result.dst()) |
| |
| offset = '-0800' |
| expected_tz = self.git_dates.FixedOffsetTZ(datetime.timedelta(hours=-8), '') |
| expected = datetime.datetime(2016, 1, 24, 22, 25, 43, tzinfo=expected_tz) |
| result = self.git_dates.timestamp_offset_to_datetime(timestamp, offset) |
| self.assertEqual(expected, result) |
| self.assertEqual(datetime.timedelta(hours=-8), result.utcoffset()) |
| self.assertEqual('-0800', result.tzname()) |
| self.assertEqual(datetime.timedelta(0), result.dst()) |
| |
| # Invalid offset. |
| offset = '-08xx' |
| expected_tz = self.git_dates.FixedOffsetTZ(datetime.timedelta(hours=0), '') |
| expected = datetime.datetime(2016, 1, 25, 6, 25, 43, tzinfo=expected_tz) |
| result = self.git_dates.timestamp_offset_to_datetime(timestamp, offset) |
| self.assertEqual(expected, result) |
| self.assertEqual(datetime.timedelta(hours=0), result.utcoffset()) |
| self.assertEqual('UTC', result.tzname()) |
| self.assertEqual(datetime.timedelta(0), result.dst()) |
| |
| # Offset out of range. |
| offset = '+2400' |
| self.assertRaises(ValueError, self.git_dates.timestamp_offset_to_datetime, |
| timestamp, offset) |
| |
| def testDatetimeString(self): |
| tz = self.git_dates.FixedOffsetTZ(datetime.timedelta(hours=11), '') |
| dt = datetime.datetime(2016, 1, 25, 17, 25, 43, tzinfo=tz) |
| self.assertEqual('2016-01-25 17:25:43 +1100', |
| self.git_dates.datetime_string(dt)) |
| |
| tz = self.git_dates.FixedOffsetTZ(datetime.timedelta(hours=-8), '') |
| dt = datetime.datetime(2016, 1, 24, 22, 25, 43, tzinfo=tz) |
| self.assertEqual('2016-01-24 22:25:43 -0800', |
| self.git_dates.datetime_string(dt)) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(coverage_utils.covered_main( |
| os.path.join(DEPOT_TOOLS_ROOT, 'git_dates.py'))) |