| Index: tests/git_dates_test.py | 
| diff --git a/tests/git_dates_test.py b/tests/git_dates_test.py | 
| new file mode 100755 | 
| index 0000000000000000000000000000000000000000..d1f660203c83a9f1801618aa7448883508ea40e9 | 
| --- /dev/null | 
| +++ b/tests/git_dates_test.py | 
| @@ -0,0 +1,78 @@ | 
| +#!/usr/bin/env python | 
| +# 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.assertEquals(expected, result) | 
| +    self.assertEquals(datetime.timedelta(hours=11), result.utcoffset()) | 
| +    self.assertEquals('+1100', result.tzname()) | 
| +    self.assertEquals(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.assertEquals(expected, result) | 
| +    self.assertEquals(datetime.timedelta(hours=-8), result.utcoffset()) | 
| +    self.assertEquals('-0800', result.tzname()) | 
| +    self.assertEquals(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.assertEquals(expected, result) | 
| +    self.assertEquals(datetime.timedelta(hours=0), result.utcoffset()) | 
| +    self.assertEquals('UTC', result.tzname()) | 
| +    self.assertEquals(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.assertEquals('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.assertEquals('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'))) | 
|  |