Edit

kc3-lang/angle/scripts/angle_presubmit_utils_unittest.py

Branch :

  • Show log

    Commit

  • Author : Trevor David Black
    Date : 2020-09-07 22:09:22
    Hash : e815afbf
    Message : First pass at increasing inclusivity Link to the inclusivity rules https://source.android.com/setup/contribute/respectful-code Bug: b/162834212 Bug: chromium:1097198 Change-Id: Ied5a9e3879d72bff3f77ea6fcda9b82f30c32c2f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2396737 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Trevor Black <vantablack@google.com>

  • scripts/angle_presubmit_utils_unittest.py
  • #!/usr/bin/env python
    # Copyright 2020 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.
    """
    angle_presubmit_utils_unittest.py: Top-level unittest script for ANGLE presubmit checks.
    """
    
    import imp
    import os
    import unittest
    from angle_presubmit_utils import *
    
    
    def SetCWDToAngleFolder():
        angle_folder = "angle"
        cwd = os.path.dirname(os.path.abspath(__file__))
        cwd = cwd.split(angle_folder)[0] + angle_folder
        os.chdir(cwd)
    
    
    SetCWDToAngleFolder()
    
    PRESUBMIT = imp.load_source('PRESUBMIT', 'PRESUBMIT.py')
    
    
    class CommitMessageFormattingCheckTest(unittest.TestCase):
    
        def __init__(self, *args, **kwargs):
            super(CommitMessageFormattingCheckTest, self).__init__(*args, **kwargs)
            self.output_api = OutputAPI_mock()
    
        def run_check_commit_message_formatting(self, commit_msg):
            input_api = InputAPI_mock(commit_msg)
            return PRESUBMIT._CheckCommitMessageFormatting(input_api, self.output_api)
    
        def test_correct_commit_message(self):
            commit_msg = """a
    
    b
    
    Bug: angleproject:4662
    Change-Id: I966c79d96175da9eee92ef6da20db50d488137b2
    """
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 0)
    
        def test_missing_description_body_and_description_summary(self):
            commit_msg = """Change-Id: I966c79d96175da9eee92ef6da20db50d488137b2"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 1)
            self.assertEqual(
                errors[0],
                self.output_api.PresubmitError(
                    "Commit 1:Please ensure that your" +
                    " description summary and description body are not blank."))
    
        def test_missing_description_body(self):
            commit_msg = """
            a
    
    b: d
    c: e
    """
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 0)
    
        def test_missing_tag_paragraph(self):
            commit_msg = """a
    
    bd
    efgh"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 1)
            self.assertEqual(
                errors[0],
                self.output_api.PresubmitError(
                    "Commit 1:Please ensure that there are tags (e.g., Bug:, Test:) in your description."
                ))
    
        def test_missing_tag_paragraph_and_description_body(self):
            commit_msg = "a"
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 1)
            self.assertEqual(
                errors[0],
                self.output_api.PresubmitError(
                    "Commit 1:Please ensure that there are tags (e.g., Bug:, Test:) in your description."
                ))
    
        def test_missing_blank_line_between_description_summary_and_description_body(self):
            commit_msg = """a
    b
    
    Change-Id: I925cdb45779a9cdebe4e14f9e81e4211ade37c12"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 1)
            self.assertEqual(errors[0], self.output_api.PresubmitError(
              "Commit 1:Please ensure the summary is only 1 line and there is 1 blank line" + \
              " between the summary and description body."))
    
        def test_missing_blank_line_between_description_body_and_tags_paragraph(self):
            commit_msg = """a
    
    b
    Change-Id: I925cdb45779a9cdebe4e14f9e81e4211ade37c12"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 0)
    
        def test_multiple_blank_lines_before_and_after_commit_message(self):
            commit_msg = """
    
    
                    a
    
                      b
    
    Change-Id: I925cdb45779a9cdebe4e14f9e81e4211ade37c12
    """
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 0)
    
        def test_newlines_within_description_body(self):
            commit_msg = """a
    
    b
    
    d
    
    e
    
    for
    
    Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 0)
    
        # Summary description in warning threshold(at 65 characters)
        def test_summmary_description_in_warning_thresholds(self):
            commit_msg = """aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    
    b
    
    Change-Id: I925cdb45779a9cdebe4e14f9e81e4211ade37c12
    """
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 1)
            self.assertEqual(
                errors[0],
                self.output_api.PresubmitPromptWarning(
                    "Commit 1:Your description summary should be on one line of 64 or less characters."
                ))
    
        # Summary description in error threshold(at 71 characters)
        def test_summary_description_in_error_threshold(self):
            commit_msg = """aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    
    b
    
    Change-Id: I925cdb45779a9cdebe4e14f9e81e4211ade37c12"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 1)
            self.assertEqual(
                errors[0],
                self.output_api.PresubmitError(
                    "Commit 1:Please ensure that your description summary is on one line of 64 or less characters."
                ))
    
        def test_description_body_exceeds_line_count_limit(self):
            commit_msg = """a
    
    bbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
    
    
    Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 2)
            self.assertEqual(
                errors[0],
                self.output_api.PresubmitError(
                    "Commit 1:Please ensure that there exists only 1 blank line between tags and description body."
                ))
            self.assertEqual(
                errors[1],
                self.output_api.PresubmitError("""Commit 1:Line 3 is too long.
    "bbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    Please wrap it to 72 characters. Lines without spaces or lines starting with 4 spaces are exempt."""
                                              ))
    
        def test_description_body_exceeds_line_count_limit_but_with_4_spaces_prefix(self):
            commit_msg = """a
    
    cc
    
    dddd
    
        bbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
    
    Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 0)
    
        def test_description_body_exceeds_line_count_limit_but_without_space(self):
            commit_msg = """a
    
    cc
    
    dddd
    
    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
    
    a: d"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 0)
    
        def test_tabs_in_commit_message(self):
            commit_msg = """																a
    
    bbbbbbbbbbbbbbbbbbbb
    
    Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 1)
            self.assertEqual(
                errors[0],
                self.output_api.PresubmitError("Commit 1:Tabs are not allowed in commit message."))
    
        def test_allowlist_revert(self):
            commit_msg = """Revert "sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssa
    
    bbbbbbbbbbbbbbbbbbbb
    
    Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 0)
    
        def test_allowlist_roll(self):
            commit_msg = """Roll sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssadd
    
    bbbbbbbbbbbbbbbbbbbb
    
    Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 0)
    
        def test_allowlist_reland(self):
            commit_msg = """Reland sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssadd
    
    bbbbbbbbbbbbbbbbbbbb
    
    Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 0)
    
        def test_multiple_commits_with_errors_in_multiple_commits(self):
            commit_msg = """a
    
    bbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
    
    Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b
    
    a
    
    cccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccccccccc
    
    Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 2)
            self.assertEqual(
                errors[0],
                self.output_api.PresubmitError("""Commit 2:Line 3 is too long.
    "bbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    Please wrap it to 72 characters. Lines without spaces or lines starting with 4 spaces are exempt."""
                                              ))
            self.assertEqual(
                errors[1],
                self.output_api.PresubmitError("""Commit 1:Line 4 is too long.
    "cccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccccccccc"
    Please wrap it to 72 characters. Lines without spaces or lines starting with 4 spaces are exempt."""
                                              ))
    
        def test_multiple_commits_with_error_in_one_commit(self):
            commit_msg = """a
    
    bbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
    
    Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b
    
    Roll sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssadd
    
    bbbbbbbbbbbbbbbbbbbb
    
    Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 1)
            self.assertEqual(
                errors[0],
                self.output_api.PresubmitError("""Commit 2:Line 3 is too long.
    "bbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    Please wrap it to 72 characters. Lines without spaces or lines starting with 4 spaces are exempt."""
                                              ))
    
        def test_multiple_commits_with_no_error(self):
            commit_msg = """Reland sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssadd
    
    bbbbbbbbbbbbbbbbbbbb
    
    Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b
    
    Roll sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssadd
    
    bbbbbbbbbbbbbbbbbbbb
    
    Change-Id: I443c36aaa8956c20da1abddf7aea613659e2cd5b"""
            errors = self.run_check_commit_message_formatting(commit_msg)
            self.assertEqual(len(errors), 0)
    
    
    if __name__ == '__main__':
        unittest.main()