2 # Copyright 2021 The Chromium Authors
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
13 def __init__(self, message):
14 self.message = message
16 def __eq__(self, other):
17 return isinstance(other, PresubmitError) and self.message == other.message
20 return 'PresubmitError({!r})'.format(self.message)
23 class TestCheckFreeze(unittest.TestCase):
24 def get_input_api(self, current_time, footers=None):
25 """Get an input API to use for tests.
28 current_time - Current time expressed as seconds since the epoch.
33 localtime = time.localtime
34 strftime = time.strftime
37 return float(current_time)
40 def GitFootersFromDescription(self):
51 def get_output_api(self):
54 PresubmitError = PresubmitError
58 def test_before_freeze(self):
59 input_api = self.get_input_api(PRESUBMIT._FREEZE_START - 1)
60 output_api = self.get_output_api()
62 errors = PRESUBMIT.CheckFreeze(input_api, output_api)
64 self.assertEqual(errors, [])
66 def test_start_of_freeze(self):
67 input_api = self.get_input_api(PRESUBMIT._FREEZE_START + 1)
68 output_api = self.get_output_api()
70 errors = PRESUBMIT.CheckFreeze(input_api, output_api)
72 self.assertEqual(len(errors), 1)
74 errors[0].message.startswith('There is a prod freeze in effect'))
76 def test_end_of_freeze(self):
77 input_api = self.get_input_api(PRESUBMIT._FREEZE_END - 1)
78 output_api = self.get_output_api()
80 errors = PRESUBMIT.CheckFreeze(input_api, output_api)
82 self.assertEqual(len(errors), 1)
84 errors[0].message.startswith('There is a prod freeze in effect'))
86 def test_after_freeze(self):
87 input_api = self.get_input_api(PRESUBMIT._FREEZE_END + 1)
88 output_api = self.get_output_api()
90 errors = PRESUBMIT.CheckFreeze(input_api, output_api)
92 self.assertEqual(errors, [])
94 def test_ignore_freeze(self):
95 input_api = self.get_input_api(PRESUBMIT._FREEZE_START + 1,
96 footers={'Ignore-Freeze': 'testing'})
97 output_api = self.get_output_api()
99 errors = PRESUBMIT.CheckFreeze(input_api, output_api)
101 self.assertEqual(errors, [])
104 if __name__ == '__main__':