| #!/usr/bin/env python3 |
| # Copyright 2023 Google Inc. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import io |
| import os.path |
| import subprocess |
| import textwrap |
| import unittest |
| |
| import PRESUBMIT |
| |
| from PRESUBMIT_test_mocks import MockFile, MockAffectedFile |
| from PRESUBMIT_test_mocks import MockInputApi, MockOutputApi |
| |
| |
| class ReleaseNotesTest(unittest.TestCase): |
| def testNoEditTopReleaseNotesNoWarning(self): |
| mock_input_api = MockInputApi() |
| mock_input_api.files = [ |
| MockFile('README.chromium', ''), |
| ] |
| |
| mock_output_api = MockOutputApi() |
| results = PRESUBMIT._CheckTopReleaseNotesChanged( |
| mock_input_api, mock_output_api) |
| |
| self.assertEqual(0, len(results)) |
| |
| def testUpdateTopReleaseNotesIssuesWarning(self): |
| mock_input_api = MockInputApi() |
| mock_input_api.files = [ |
| MockFile('RELEASE_NOTES.md', ''), |
| ] |
| |
| mock_output_api = MockOutputApi() |
| results = PRESUBMIT._CheckTopReleaseNotesChanged( |
| mock_input_api, mock_output_api) |
| |
| self.assertEqual(1, len(results)) |
| self.assertIsInstance( |
| results[0], mock_output_api.PresubmitPromptWarning, 'Not a warning') |
| self.assertTrue(results[0].message.startswith( |
| 'Do not edit RELEASE_NOTES.md')) |
| |
| def testUpdateTopReleaseNotesNoWarning(self): |
| mock_input_api = MockInputApi() |
| mock_input_api.files = [ |
| MockFile('RELEASE_NOTES.md', ''), |
| MockFile('relnotes/deleted_note.md', ''), |
| ] |
| |
| mock_output_api = MockOutputApi() |
| results = PRESUBMIT._CheckTopReleaseNotesChanged( |
| mock_input_api, mock_output_api) |
| |
| self.assertEqual(0, len(results)) |
| |
| def testUpdatePublicHeaderAndNoReleaseNoteGeneratesWarning(self): |
| mock_input_api = MockInputApi() |
| mock_input_api.files = [ |
| MockFile('include/core/SkDrawable.h', ''), |
| ] |
| |
| mock_output_api = MockOutputApi() |
| results = PRESUBMIT._CheckReleaseNotesForPublicAPI( |
| mock_input_api, mock_output_api) |
| |
| self.assertEqual(1, len(results)) |
| self.assertIsInstance( |
| results[0], mock_output_api.PresubmitPromptWarning, 'Not a warning') |
| |
| def testUpdatePublicHeaderAndReleaseNoteGeneratesNoWarning(self): |
| mock_input_api = MockInputApi() |
| mock_input_api.files = [ |
| MockFile('include/core/SkDrawable.h', ''), |
| MockFile('relnotes/new_note.md', ''), |
| ] |
| |
| mock_output_api = MockOutputApi() |
| results = PRESUBMIT._CheckReleaseNotesForPublicAPI( |
| mock_input_api, mock_output_api) |
| |
| self.assertEqual(0, len(results)) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |