#!/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()