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/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