You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.7 KiB
Python
96 lines
3.7 KiB
Python
#!/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')))
|