123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #!/usr/bin/env python3
- # Copyright (c) 2021 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.
- import time
- import unittest
- import PRESUBMIT
- class PresubmitError:
- def __init__(self, message):
- self.message = message
- def __eq__(self, other):
- return isinstance(other, PresubmitError) and self.message == other.message
- def __repr__(self):
- return 'PresubmitError({!r})'.format(self.message)
- class TestCheckFreeze(unittest.TestCase):
- def get_input_api(self, current_time, footers=None):
- """Get an input API to use for tests.
- Args:
- current_time - Current time expressed as seconds since the epoch.
- """
- class FakeTime:
- localtime = time.localtime
- strftime = time.strftime
- def time(self):
- return float(current_time)
- class FakeChange:
- def GitFootersFromDescription(self):
- return footers or []
- class FakeInputApi:
- time = FakeTime()
- change = FakeChange()
- return FakeInputApi()
- def get_output_api(self):
- class FakeOutputApi:
- PresubmitError = PresubmitError
- return FakeOutputApi
- def test_before_freeze(self):
- input_api = self.get_input_api(1639641599) # 2021/12/15 23:59:59 -0800
- output_api = self.get_output_api()
- errors = PRESUBMIT.CheckFreeze(input_api, output_api)
- self.assertEqual(errors, [])
- def test_start_of_freeze(self):
- input_api = self.get_input_api(1639641600) # 2021/12/16 00:00:00 -0800
- output_api = self.get_output_api()
- errors = PRESUBMIT.CheckFreeze(input_api, output_api)
- self.assertEqual(len(errors), 1)
- self.assertTrue(
- errors[0].message.startswith('There is a prod freeze in effect'))
- def test_end_of_freeze(self):
- input_api = self.get_input_api(1641196799) # 2022/01/02 23:59:59 -0800
- output_api = self.get_output_api()
- errors = PRESUBMIT.CheckFreeze(input_api, output_api)
- self.assertEqual(len(errors), 1)
- self.assertTrue(
- errors[0].message.startswith('There is a prod freeze in effect'))
- def test_after_freeze(self):
- input_api = self.get_input_api(1641196800) # 2022/01/03 00:00:00 -0800')
- output_api = self.get_output_api()
- errors = PRESUBMIT.CheckFreeze(input_api, output_api)
- self.assertEqual(errors, [])
- def test_ignore_freeze(self):
- input_api = self.get_input_api(
- 1639641600, # 2021/12/16 00:00:00 -0800
- footers={'Ignore-Freeze': 'testing'})
- output_api = self.get_output_api()
- errors = PRESUBMIT.CheckFreeze(input_api, output_api)
- self.assertEqual(errors, [])
- if __name__ == '__main__':
- unittest.main()
|