Title: [294323] trunk/Tools
Revision
294323
Author
[email protected]
Date
2022-05-17 07:10:45 -0700 (Tue, 17 May 2022)

Log Message

[Merge-Queue] Forbid ChangeLog modification
https://bugs.webkit.org/show_bug.cgi?id=239413
<rdar://problem/91839553>

Reviewed by Aakash Jain.

* Tools/CISupport/ews-build/factories.py:
(MergeQueueFactoryBase.__init__): Remove AddReviewerToChangeLog and ValidateChangeLogAndReviewer.
* CISupport/ews-build/factories_unittest.py:
(TestExpectedBuildSteps):
* Tools/CISupport/ews-build/steps.py:
(PushCommitToWebKitRepo.evaluateCommand): Remove AddReviewerToChangeLog.
(ValidateCommitMessage._files): List all modified files.
(ValidateCommitMessage.evaluateCommand): Fail step if no ChangeLog modified.
(AddReviewerToChangeLog): Deleted.
* Tools/CISupport/ews-build/steps_unittest.py:

Canonical link: https://commits.webkit.org/250643@main

Modified Paths

Diff

Modified: trunk/Tools/CISupport/ews-build/factories.py (294322 => 294323)


--- trunk/Tools/CISupport/ews-build/factories.py	2022-05-17 13:22:50 UTC (rev 294322)
+++ trunk/Tools/CISupport/ews-build/factories.py	2022-05-17 14:10:45 UTC (rev 294323)
@@ -24,7 +24,7 @@
 from buildbot.process import factory
 from buildbot.steps import trigger
 
-from steps import (AddAuthorToCommitMessage, AddReviewerToCommitMessage, AddReviewerToChangeLog, ApplyPatch, ApplyWatchList, Canonicalize,
+from steps import (AddAuthorToCommitMessage, AddReviewerToCommitMessage, ApplyPatch, ApplyWatchList, Canonicalize,
                    CheckOutPullRequest, CheckOutSource, CheckOutSpecificRevision, CheckChangeRelevance,
                    CheckPatchStatusOnEWSQueues, CheckStyle, CleanGitRepo, CompileJSC, CompileWebKit, ConfigureBuild, CreateLocalGITCommit,
                    DownloadBuiltProduct, ExtractBuiltProduct, FetchBranches, FindModifiedChangeLogs, FindModifiedLayoutTests, GitSvnFetch,
@@ -335,9 +335,7 @@
         self.addStep(ValidateSquashed())
         self.addStep(AddReviewerToCommitMessage())
         self.addStep(AddAuthorToCommitMessage())
-        self.addStep(AddReviewerToChangeLog())
         self.addStep(ValidateCommitMessage())
-        self.addStep(ValidateChangeLogAndReviewer())
 
 
 class MergeQueueFactory(MergeQueueFactoryBase):

Modified: trunk/Tools/CISupport/ews-build/factories_unittest.py (294322 => 294323)


--- trunk/Tools/CISupport/ews-build/factories_unittest.py	2022-05-17 13:22:50 UTC (rev 294322)
+++ trunk/Tools/CISupport/ews-build/factories_unittest.py	2022-05-17 14:10:45 UTC (rev 294323)
@@ -642,9 +642,7 @@
             'validate-squashed',
             'add-reviewer-to-commit-message',
             'add-author-to-commit-message',
-            'add-reviewer-to-changelog',
             'validate-commit-message',
-            'validate-changelog-and-reviewer',
             'kill-old-processes',
             'compile-webkit',
             'kill-old-processes',
@@ -669,9 +667,7 @@
             'validate-squashed',
             'add-reviewer-to-commit-message',
             'add-author-to-commit-message',
-            'add-reviewer-to-changelog',
             'validate-commit-message',
-            'validate-changelog-and-reviewer',
             'validate-change',
             'canonicalize-commit',
             'push-commit-to-webkit-repo',

Modified: trunk/Tools/CISupport/ews-build/steps.py (294322 => 294323)


--- trunk/Tools/CISupport/ews-build/steps.py	2022-05-17 13:22:50 UTC (rev 294322)
+++ trunk/Tools/CISupport/ews-build/steps.py	2022-05-17 14:10:45 UTC (rev 294323)
@@ -4569,7 +4569,6 @@
                         CheckOutPullRequest(),
                         AddReviewerToCommitMessage(),
                         AddAuthorToCommitMessage(),
-                        AddReviewerToChangeLog(),
                         ValidateChange(verifyMergeQueue=True, verifyNoDraftForMergeQueue=True),
                         Canonicalize(),
                         PushCommitToWebKitRepo(),
@@ -4926,54 +4925,6 @@
         return not self.doStepIf(step)
 
 
-class AddReviewerToChangeLog(steps.ShellSequence, ShellMixin, AddReviewerMixin):
-    name = 'add-reviewer-to-changelog'
-    haltOnFailure = True
-
-    def __init__(self, **kwargs):
-        super(AddReviewerToChangeLog, self).__init__(logEnviron=False, timeout=60, **kwargs)
-
-    def _files(self):
-        sourcestamp = self.build.getSourceStamp(self.getProperty('codebase', ''))
-        if sourcestamp and sourcestamp.changes:
-            return sourcestamp.changes[0].files
-        return []
-
-    def run(self, BufferLogObserverClass=logobserver.BufferLogObserver):
-        self.commands = []
-        for file in self._files():
-            if not file.startswith('+++') or not file.endswith('ChangeLog'):
-                continue
-            self.commands.append(util.ShellArg(
-                command=['sed', '-i', '', self.NOBODY_SED.format(self.reviewers()), file[4:]],
-                logname='stdio',
-                haltOnFailure=True,
-            ))
-
-        for command in [
-            ['git', 'add', '-A'],
-            ['git', 'commit', '--amend', '--date=now', '-C', 'HEAD'],
-        ]:
-            self.commands.append(util.ShellArg(command=command, logname='stdio', haltOnFailure=True))
-
-        self.env = self.gitCommitEnvironment()
-
-        return super(AddReviewerToChangeLog, self).run()
-
-    def getResultSummary(self):
-        if self.results == FAILURE:
-            return {'step': 'Failed to add reviewers to ChangeLogs'}
-        if self.results == SUCCESS:
-            return {'step': f'Reviewed by {self.reviewers()}'}
-        return super(AddReviewerToChangeLog, self).getResultSummary()
-
-    def doStepIf(self, step):
-        return self.getProperty('github.number') and self.getProperty('reviewers_full_names')
-
-    def hideStepIf(self, results, step):
-        return not self.doStepIf(step) or self.getProperty('sensitive', False)
-
-
 class ValidateCommitMessage(steps.ShellSequence, ShellMixin):
     name = 'validate-commit-message'
     haltOnFailure = False
@@ -4989,6 +4940,12 @@
     def __init__(self, **kwargs):
         super(ValidateCommitMessage, self).__init__(logEnviron=False, timeout=60, **kwargs)
 
+    def _files(self):
+        sourcestamp = self.build.getSourceStamp(self.getProperty('codebase', ''))
+        if sourcestamp and sourcestamp.changes:
+            return sourcestamp.changes[0].files
+        return []
+
     @defer.inlineCallbacks
     def run(self, BufferLogObserverClass=logobserver.BufferLogObserver):
         base_ref = self.getProperty('github.base.ref', DEFAULT_BRANCH)
@@ -5015,7 +4972,10 @@
             return rc
 
         log_text = self.log_observer.getStdout().rstrip()
-        if log_text:
+        if any(['ChangeLog' in file for file in self._files()]):
+            self.summary = 'ChangeLog modified, WebKit only allows commit messages'
+            rc = FAILURE
+        elif log_text:
             self.summary = log_text
             rc = FAILURE
         elif rc == SUCCESS:

Modified: trunk/Tools/CISupport/ews-build/steps_unittest.py (294322 => 294323)


--- trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-05-17 13:22:50 UTC (rev 294322)
+++ trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-05-17 14:10:45 UTC (rev 294323)
@@ -42,7 +42,7 @@
 from twisted.trial import unittest
 import send_email
 
-from steps import (AddAuthorToCommitMessage, AddReviewerToCommitMessage, AddReviewerToChangeLog, AnalyzeAPITestsResults, AnalyzeCompileWebKitResults,
+from steps import (AddAuthorToCommitMessage, AddReviewerToCommitMessage, AnalyzeAPITestsResults, AnalyzeCompileWebKitResults,
                    AnalyzeJSCTestsResults, AnalyzeLayoutTestsResults, ApplyPatch, ApplyWatchList, ArchiveBuiltProduct, ArchiveTestResults, BugzillaMixin,
                    Canonicalize, CheckOutPullRequest, CheckOutSource, CheckOutSpecificRevision, CheckChangeRelevance, CheckPatchStatusOnEWSQueues, CheckStyle,
                    CleanBuild, CleanUpGitIndexLock, CleanGitRepo, CleanWorkingDirectory, ClosePullRequest, CompileJSC, CompileJSCWithoutChange,
@@ -6090,121 +6090,6 @@
         return self.runStep()
 
 
-class TestAddReviewerToChangeLog(BuildStepMixinAdditions, unittest.TestCase):
-    ENV = dict(
-        GIT_COMMITTER_NAME='WebKit Committer',
-        GIT_COMMITTER_EMAIL='[email protected]',
-        FILTER_BRANCH_SQUELCH_WARNING='1',
-    )
-
-    def setUp(self):
-        self.longMessage = True
-        Contributors.load = mock_load_contributors
-        return self.setUpBuildStep()
-
-    def tearDown(self):
-        return self.tearDownBuildStep()
-
-    def test_skipped_patch(self):
-        self.setupStep(AddReviewerToChangeLog())
-        self.setProperty('patch_id', '1234')
-        self.expectOutcome(result=SKIPPED, state_string='finished (skipped)')
-        return self.runStep()
-
-    def test_success(self):
-        self.setupStep(AddReviewerToChangeLog())
-        AddReviewerToChangeLog._files = lambda x: ['+++ Tools/ChangeLog', '+++ Tools/CISupport/ews-build/steps.py']
-        self.setProperty('github.number', '1234')
-        self.setProperty('github.base.ref', 'main')
-        self.setProperty('github.head.ref', 'eng/pull-request-branch')
-        self.setProperty('reviewers_full_names', ['Aakash Jain'])
-        self.setProperty('owners', ['webkit-commit-queue'])
-        self.expectRemoteCommands(
-            ExpectShell(
-                workdir='wkdir',
-                logEnviron=False,
-                env=self.ENV,
-                timeout=60,
-                command=['sed', '-i', '', 's/NOBODY (OO*PP*S!*)/Aakash Jain/g', 'Tools/ChangeLog'],
-            ) + 0, ExpectShell(
-                workdir='wkdir',
-                logEnviron=False,
-                env=self.ENV,
-                timeout=60,
-                command=['git', 'add', '-A'],
-            ) + 0, ExpectShell(
-                workdir='wkdir',
-                logEnviron=False,
-                env=self.ENV,
-                timeout=60,
-                command=['git', 'commit', '--amend', '--date=now', '-C', 'HEAD'],
-            ) + 0,
-        )
-        self.expectOutcome(result=SUCCESS, state_string='Reviewed by Aakash Jain')
-        return self.runStep()
-
-    def test_no_changelog(self):
-        self.setupStep(AddReviewerToChangeLog())
-        AddReviewerToChangeLog._files = lambda x: ['+++ Tools/CISupport/ews-build/steps.py']
-        self.setProperty('github.number', '1234')
-        self.setProperty('github.base.ref', 'main')
-        self.setProperty('github.head.ref', 'eng/pull-request-branch')
-        self.setProperty('reviewers_full_names', ['Aakash Jain'])
-        self.setProperty('owners', ['webkit-commit-queue'])
-        self.expectRemoteCommands(
-            ExpectShell(
-                workdir='wkdir',
-                logEnviron=False,
-                env=self.ENV,
-                timeout=60,
-                command=['git', 'add', '-A'],
-            ) + 0, ExpectShell(
-                workdir='wkdir',
-                logEnviron=False,
-                env=self.ENV,
-                timeout=60,
-                command=['git', 'commit', '--amend', '--date=now', '-C', 'HEAD'],
-            ) + 0,
-        )
-        self.expectOutcome(result=SUCCESS, state_string='Reviewed by Aakash Jain')
-        return self.runStep()
-
-    def test_failure(self):
-        self.setupStep(AddReviewerToChangeLog())
-        AddReviewerToChangeLog._files = lambda x: ['+++ Tools/CISupport/ews-build/steps.py']
-        self.setProperty('github.number', '1234')
-        self.setProperty('github.base.ref', 'main')
-        self.setProperty('github.head.ref', 'eng/pull-request-branch')
-        self.setProperty('reviewers_full_names', ['Aakash Jain'])
-        self.setProperty('owners', ['webkit-commit-queue'])
-        self.expectRemoteCommands(
-            ExpectShell(
-                workdir='wkdir',
-                logEnviron=False,
-                env=self.ENV,
-                timeout=60,
-                command=['git', 'add', '-A'],
-            ) + 0, ExpectShell(
-                workdir='wkdir',
-                logEnviron=False,
-                env=self.ENV,
-                timeout=60,
-                command=['git', 'commit', '--amend', '--date=now', '-C', 'HEAD'],
-            ) + 2,
-        )
-        self.expectOutcome(result=FAILURE, state_string='Failed to add reviewers to ChangeLogs')
-        return self.runStep()
-
-    def test_no_reviewers(self):
-        self.setupStep(AddReviewerToChangeLog())
-        self.setProperty('github.number', '1234')
-        self.setProperty('github.base.ref', 'main')
-        self.setProperty('github.head.ref', 'eng/pull-request-branch')
-        self.setProperty('reviewers_full_names', [])
-        self.expectOutcome(result=SKIPPED, state_string='finished (skipped)')
-        return self.runStep()
-
-
 class TestValidateCommitMessage(BuildStepMixinAdditions, unittest.TestCase):
     def setUp(self):
         self.longMessage = True
@@ -6221,6 +6106,7 @@
 
     def test_success(self):
         self.setupStep(ValidateCommitMessage())
+        ValidateCommitMessage._files = lambda x: ['+++ Tools/CISupport/ews-build/steps.py']
         self.setProperty('github.number', '1234')
         self.setProperty('github.base.ref', 'main')
         self.setProperty('github.head.ref', 'eng/pull-request-branch')
@@ -6230,7 +6116,7 @@
                         timeout=60,
                         command=['/bin/sh', '-c', "git log eng/pull-request-branch ^main | grep -q 'OO*PP*S!' && echo 'Commit message contains (OOPS!)' || test $? -eq 1"])
             + 0, ExpectShell(workdir='wkdir',
-                        logEnviron=False,
+                logEnviron=False,
                         timeout=60,
                         command=['/bin/sh', '-c', "git log eng/pull-request-branch ^main | grep -q '\\(Reviewed by\\|Unreviewed\\|Rubber-stamped by\\|Rubber stamped by\\)' || echo 'No reviewer information in commit message'"])
             + 0
@@ -6241,6 +6127,7 @@
 
     def test_failure_oops(self):
         self.setupStep(ValidateCommitMessage())
+        ValidateCommitMessage._files = lambda x: ['+++ Tools/CISupport/ews-build/steps.py']
         self.setProperty('github.number', '1234')
         self.setProperty('github.base.ref', 'main')
         self.setProperty('github.head.ref', 'eng/pull-request-branch')
@@ -6259,6 +6146,7 @@
 
     def test_failure_no_reviewer(self):
         self.setupStep(ValidateCommitMessage())
+        ValidateCommitMessage._files = lambda x: ['+++ Tools/CISupport/ews-build/steps.py']
         self.setProperty('github.number', '1234')
         self.setProperty('github.base.ref', 'main')
         self.setProperty('github.head.ref', 'eng/pull-request-branch')
@@ -6279,7 +6167,28 @@
         self.assertEqual(self.getProperty('comment_text'), 'No reviewer information in commit message, blocking PR #1234')
         return rc
 
+    def test_failure_no_changelog(self):
+        self.setupStep(ValidateCommitMessage())
+        ValidateCommitMessage._files = lambda x: ['+++ Tools/ChangeLog', '+++ Tools/CISupport/ews-build/steps.py']
+        self.setProperty('github.number', '1234')
+        self.setProperty('github.base.ref', 'main')
+        self.setProperty('github.head.ref', 'eng/pull-request-branch')
+        self.expectRemoteCommands(
+            ExpectShell(workdir='wkdir',
+                        logEnviron=False,
+                        timeout=60,
+                        command=['/bin/sh', '-c', "git log eng/pull-request-branch ^main | grep -q 'OO*PP*S!' && echo 'Commit message contains (OOPS!)' || test $? -eq 1"])
+            + 0, ExpectShell(workdir='wkdir',
+                logEnviron=False,
+                        timeout=60,
+                        command=['/bin/sh', '-c', "git log eng/pull-request-branch ^main | grep -q '\\(Reviewed by\\|Unreviewed\\|Rubber-stamped by\\|Rubber stamped by\\)' || echo 'No reviewer information in commit message'"])
+            + 0
+            + ExpectShell.log('stdio', stdout=''),
+        )
+        self.expectOutcome(result=FAILURE, state_string='ChangeLog modified, WebKit only allows commit messages')
+        return self.runStep()
 
+
 class TestCanonicalize(BuildStepMixinAdditions, unittest.TestCase):
     def setUp(self):
         self.longMessage = True

Modified: trunk/Tools/ChangeLog (294322 => 294323)


--- trunk/Tools/ChangeLog	2022-05-17 13:22:50 UTC (rev 294322)
+++ trunk/Tools/ChangeLog	2022-05-17 14:10:45 UTC (rev 294323)
@@ -159,123 +159,25 @@
         (apply_patch): If a patch has a commit subject, it contains commit messages
         and we should apply those commit messages.
 
-2022-05-13  Jonathan Bedard  <[email protected]>
+2022-05-15  Jonathan Bedard  <[email protected]>
 
-        [webkit-patch] Include commit messages in patches
-        https://bugs.webkit.org/show_bug.cgi?id=240256
-        <rdar://92982358>
+        [Merge-Queue] Forbid ChangeLog modification
+        https://bugs.webkit.org/show_bug.cgi?id=239413
+        <rdar://problem/91839553>
 
-        Rubber-stamped by Aakash Jain.
+        Reviewed by Aakash Jain.
 
-        * Scripts/webkitpy/common/checkout/checkout.py:
-        (Checkout.commit_message_for_this_commit): If no changelogs are modified, prefer
-        the commit message.
-        * Scripts/webkitpy/common/checkout/diff_parser.py:
-        (DiffParser._parse_into_diff_files): Ignore commit message headers.
-        * Scripts/webkitpy/common/checkout/scm/git.py:
-        (Git.create_patch): Prefer `git format-patch` when local commits are available.
-        (Git.rev_parse): Determine hash for ref.
-        (Git.format_patch): Deleted.
-        (Git.request_pull): Deleted.
-        * Scripts/webkitpy/tool/steps/abstractstep.py:
-        (AbstractStep): Keep record of local commit.
-        * Scripts/webkitpy/tool/steps/editchangelog.py:
-        (EditChangeLog.run): Do not edit changelog if no changelog is present.
-        * Scripts/webkitpy/tool/steps/preparechangelog.py:
-        (PrepareChangeLog.run): Do not prepare changelog if local commit is present.
+        * CISupport/ews-build/factories.py:
+        (MergeQueueFactoryBase.__init__): Remove AddReviewerToChangeLog and ValidateChangeLogAndReviewer.
+        * CISupport/ews-build/factories_unittest.py:
+        (TestExpectedBuildSteps):
+        * CISupport/ews-build/steps.py:
+        (PushCommitToWebKitRepo.evaluateCommand): Remove AddReviewerToChangeLog.
+        (ValidateCommitMessage._files): List all modified files.
+        (ValidateCommitMessage.evaluateCommand): Fail step if no ChangeLog modified.
+        (AddReviewerToChangeLog): Deleted.
+        * CISupport/ews-build/steps_unittest.py:
 
-2022-05-13  Wenson Hsieh  <[email protected]>
-
-        ImageAnalysisQueue should reanalyze image elements whose image sources have changed
-        https://bugs.webkit.org/show_bug.cgi?id=240371
-        rdar://93175651
-
-        Reviewed by Tim Horton.
-
-        Add an API test to exercise the scenario by verifying that the same image element is reanalyzed after setting
-        the `src` to a different image URL.
-
-        * TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm:
-        (TestWebKitAPI::TEST):
-
-2022-05-13  Alex Christensen  <[email protected]>
-
-        Disable MediaLoading.CaptivePortalHLS API test
-        https://bugs.webkit.org/show_bug.cgi?id=239859
-
-        It is always timing out.
-        Disable it to speed up EWS.
-
-        * TestWebKitAPI/Tests/WebKitCocoa/MediaLoading.mm:
-        (TestWebKitAPI::TEST):
-
-2022-05-13  Yusuke Suzuki  <[email protected]>
-
-        Use None for architecture when dump-class-layout does not have `-a` option
-        https://bugs.webkit.org/show_bug.cgi?id=240395
-
-        Reviewed by Saam Barati and Simon Fraser.
-
-        We can pass None to architecture, then SBDebugger::CreateTargetWithFileAndArch
-        will call CreateTarget with nullptr architecture string. Then, TargetList constructs
-        ArchSpec based on currently selected platform automatically and it covers most of cases.
-        I tried it, and it worked with watchOS, macOS, iOS so far.
-        So, we should just pass None to CreateTargetWithFileAndArch by default.
-
-        * lldb/lldb_dump_class_layout.py:
-        (LLDBDebuggerInstance.__init__):
-        (LLDBDebuggerInstance.__del__):
-        (LLDBDebuggerInstance._get_first_file_architecture): Deleted.
-
-2022-05-13  Commit Queue  <[email protected]>
-
-        Unreviewed, reverting r294113.
-        https://bugs.webkit.org/show_bug.cgi?id=240381
-
-        This bug needs to be addressed using a different approach
-
-        Reverted changeset:
-
-        "Mail compose: right clicking an image attachment selects it"
-        https://bugs.webkit.org/show_bug.cgi?id=240315
-        https://commits.webkit.org/r294113
-
-2022-05-12  Philippe Normand  <[email protected]>
-
-        [Flatpak SDK] Sandbox access to pipewire socket
-        https://bugs.webkit.org/show_bug.cgi?id=240338
-
-        Reviewed by Adrian Perez de Castro.
-
-        Starting from version 0.5 of Bubblewrap bind mounts behavior slightly changed. Without this
-        patch the pipewire socket wouldn't be available from the default XDG runtime directory.
-
-        * flatpak/webkit-bwrap:
-
-2022-05-12  Alex Christensen  <[email protected]>
-
-        Make if-domain and unless-domain regexes only look at URL hosts
-        https://bugs.webkit.org/show_bug.cgi?id=240199
-
-        Reviewed by John Wilander.
-
-        * TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
-        (TestWebKitAPI::TEST_F):
-
-2022-05-11  Kate Cheney  <[email protected]>
-
-        Mail compose: right clicking an image attachment selects it
-        https://bugs.webkit.org/show_bug.cgi?id=240315
-        rdar://45454933
-
-        Reviewed by Wenson Hsieh.
-
-        API test coverage.
-
-        * TestWebKitAPI/Tests/mac/ContextMenuTests.mm:
-        (TestWebKitAPI::rightClick):
-        (TestWebKitAPI::TEST):
-
 2022-05-11  Wenson Hsieh  <[email protected]>
 
         ImageAnalysisQueue should extract and analyze images inside of subframes
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to