git_dates_test.py 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/usr/bin/env vpython3
  2. # Copyright 2016 The Chromium Authors. All rights reserved.
  3. # Use of this source code is governed by a BSD-style license that can be
  4. # found in the LICENSE file.
  5. """Tests for git_dates."""
  6. import datetime
  7. import os
  8. import sys
  9. import unittest
  10. DEPOT_TOOLS_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  11. sys.path.insert(0, DEPOT_TOOLS_ROOT)
  12. from testing_support import coverage_utils
  13. class GitDatesTestBase(unittest.TestCase):
  14. @classmethod
  15. def setUpClass(cls):
  16. super(GitDatesTestBase, cls).setUpClass()
  17. import git_dates
  18. cls.git_dates = git_dates
  19. class GitDatesTest(GitDatesTestBase):
  20. def testTimestampOffsetToDatetime(self):
  21. # 2016-01-25 06:25:43 UTC
  22. timestamp = 1453703143
  23. offset = '+1100'
  24. expected_tz = self.git_dates.FixedOffsetTZ(datetime.timedelta(hours=11),
  25. '')
  26. expected = datetime.datetime(2016,
  27. 1,
  28. 25,
  29. 17,
  30. 25,
  31. 43,
  32. tzinfo=expected_tz)
  33. result = self.git_dates.timestamp_offset_to_datetime(timestamp, offset)
  34. self.assertEqual(expected, result)
  35. self.assertEqual(datetime.timedelta(hours=11), result.utcoffset())
  36. self.assertEqual('+1100', result.tzname())
  37. self.assertEqual(datetime.timedelta(0), result.dst())
  38. offset = '-0800'
  39. expected_tz = self.git_dates.FixedOffsetTZ(datetime.timedelta(hours=-8),
  40. '')
  41. expected = datetime.datetime(2016,
  42. 1,
  43. 24,
  44. 22,
  45. 25,
  46. 43,
  47. tzinfo=expected_tz)
  48. result = self.git_dates.timestamp_offset_to_datetime(timestamp, offset)
  49. self.assertEqual(expected, result)
  50. self.assertEqual(datetime.timedelta(hours=-8), result.utcoffset())
  51. self.assertEqual('-0800', result.tzname())
  52. self.assertEqual(datetime.timedelta(0), result.dst())
  53. # Invalid offset.
  54. offset = '-08xx'
  55. expected_tz = self.git_dates.FixedOffsetTZ(datetime.timedelta(hours=0),
  56. '')
  57. expected = datetime.datetime(2016, 1, 25, 6, 25, 43, tzinfo=expected_tz)
  58. result = self.git_dates.timestamp_offset_to_datetime(timestamp, offset)
  59. self.assertEqual(expected, result)
  60. self.assertEqual(datetime.timedelta(hours=0), result.utcoffset())
  61. self.assertEqual('UTC', result.tzname())
  62. self.assertEqual(datetime.timedelta(0), result.dst())
  63. # Offset out of range.
  64. offset = '+2400'
  65. self.assertRaises(ValueError,
  66. self.git_dates.timestamp_offset_to_datetime,
  67. timestamp, offset)
  68. def testDatetimeString(self):
  69. tz = self.git_dates.FixedOffsetTZ(datetime.timedelta(hours=11), '')
  70. dt = datetime.datetime(2016, 1, 25, 17, 25, 43, tzinfo=tz)
  71. self.assertEqual('2016-01-25 17:25:43 +1100',
  72. self.git_dates.datetime_string(dt))
  73. tz = self.git_dates.FixedOffsetTZ(datetime.timedelta(hours=-8), '')
  74. dt = datetime.datetime(2016, 1, 24, 22, 25, 43, tzinfo=tz)
  75. self.assertEqual('2016-01-24 22:25:43 -0800',
  76. self.git_dates.datetime_string(dt))
  77. if __name__ == '__main__':
  78. sys.exit(
  79. coverage_utils.covered_main(
  80. os.path.join(DEPOT_TOOLS_ROOT, 'git_dates.py')))