Diff
Modified: trunk/Tools/CISupport/ews-build/factories.py (288478 => 288479)
--- trunk/Tools/CISupport/ews-build/factories.py 2022-01-25 00:07:17 UTC (rev 288478)
+++ trunk/Tools/CISupport/ews-build/factories.py 2022-01-25 00:19:18 UTC (rev 288479)
@@ -24,7 +24,7 @@
from buildbot.process import factory
from buildbot.steps import trigger
-from steps import (ApplyPatch, ApplyWatchList, CheckOutPullRequest, CheckOutSource, CheckOutSpecificRevision, CheckPatchRelevance,
+from steps import (ApplyPatch, ApplyWatchList, CheckOutPullRequest, CheckOutSource, CheckOutSpecificRevision, CheckChangeRelevance,
CheckPatchStatusOnEWSQueues, CheckStyle, CleanGitRepo, CompileJSC, CompileWebKit, ConfigureBuild, CreateLocalGITCommit,
DownloadBuiltProduct, ExtractBuiltProduct, FetchBranches, FindModifiedChangeLogs, FindModifiedLayoutTests,
InstallGtkDependencies, InstallWpeDependencies, KillOldProcesses, PrintConfiguration, PushCommitToWebKitRepo,
@@ -43,7 +43,7 @@
factory.BuildFactory.__init__(self)
self.addStep(ConfigureBuild(platform=platform, configuration=configuration, architectures=architectures, buildOnly=buildOnly, triggers=triggers, triggered_by=triggered_by, remotes=remotes, additionalArguments=additionalArguments))
if checkRelevance:
- self.addStep(CheckPatchRelevance())
+ self.addStep(CheckChangeRelevance())
if self.findModifiedLayoutTests:
self.addStep(FindModifiedLayoutTests())
self.addStep(ValidateChange())
Modified: trunk/Tools/CISupport/ews-build/factories_unittest.py (288478 => 288479)
--- trunk/Tools/CISupport/ews-build/factories_unittest.py 2022-01-25 00:07:17 UTC (rev 288478)
+++ trunk/Tools/CISupport/ews-build/factories_unittest.py 2022-01-25 00:19:18 UTC (rev 288479)
@@ -142,7 +142,7 @@
],
'macOS-AppleSilicon-Big-Sur-Debug-Build-EWS': [
'configure-build',
- 'check-patch-relevance',
+ 'check-change-relevance',
'validate-change',
'configuration',
'clean-up-git-repo',
@@ -192,7 +192,7 @@
],
'macOS-Catalina-Release-WK1-Tests-EWS': [
'configure-build',
- 'check-patch-relevance',
+ 'check-change-relevance',
'validate-change',
'configuration',
'clean-up-git-repo',
@@ -269,7 +269,7 @@
],
'macOS-Catalina-Debug-WK1-Tests-EWS': [
'configure-build',
- 'check-patch-relevance',
+ 'check-change-relevance',
'validate-change',
'configuration',
'clean-up-git-repo',
@@ -347,7 +347,7 @@
],
'Windows-EWS': [
'configure-build',
- 'check-patch-relevance',
+ 'check-change-relevance',
'validate-change',
'configuration',
'clean-up-git-repo',
@@ -394,7 +394,7 @@
],
'JSC-Tests-EWS': [
'configure-build',
- 'check-patch-relevance',
+ 'check-change-relevance',
'validate-change',
'configuration',
'clean-up-git-repo',
@@ -410,7 +410,7 @@
],
'JSC-MIPSEL-32bits-Build-EWS': [
'configure-build',
- 'check-patch-relevance',
+ 'check-change-relevance',
'validate-change',
'configuration',
'clean-up-git-repo',
@@ -425,7 +425,7 @@
],
'JSC-MIPSEL-32bits-Tests-EWS': [
'configure-build',
- 'check-patch-relevance',
+ 'check-change-relevance',
'validate-change',
'configuration',
'clean-up-git-repo',
@@ -442,7 +442,7 @@
],
'JSC-ARMv7-32bits-Build-EWS': [
'configure-build',
- 'check-patch-relevance',
+ 'check-change-relevance',
'validate-change',
'configuration',
'clean-up-git-repo',
@@ -457,7 +457,7 @@
],
'JSC-ARMv7-32bits-Tests-EWS': [
'configure-build',
- 'check-patch-relevance',
+ 'check-change-relevance',
'validate-change',
'configuration',
'clean-up-git-repo',
@@ -474,7 +474,7 @@
],
'JSC-i386-32bits-EWS': [
'configure-build',
- 'check-patch-relevance',
+ 'check-change-relevance',
'validate-change',
'configuration',
'clean-up-git-repo',
@@ -489,7 +489,7 @@
],
'Bindings-Tests-EWS': [
'configure-build',
- 'check-patch-relevance',
+ 'check-change-relevance',
'validate-change',
'configuration',
'clean-up-git-repo',
@@ -503,7 +503,7 @@
],
'WebKitPy-Tests-EWS': [
'configure-build',
- 'check-patch-relevance',
+ 'check-change-relevance',
'validate-change',
'configuration',
'clean-up-git-repo',
@@ -581,7 +581,7 @@
],
'Services-EWS': [
'configure-build',
- 'check-patch-relevance',
+ 'check-change-relevance',
'validate-change',
'configuration',
'clean-up-git-repo',
Modified: trunk/Tools/CISupport/ews-build/steps.py (288478 => 288479)
--- trunk/Tools/CISupport/ews-build/steps.py 2022-01-25 00:07:17 UTC (rev 288478)
+++ trunk/Tools/CISupport/ews-build/steps.py 2022-01-25 00:19:18 UTC (rev 288479)
@@ -648,15 +648,17 @@
return super(CheckOutPullRequest, self).getResultSummary()
-class AnalyzePatch(buildstep.BuildStep):
+class AnalyzeChange(buildstep.BuildStep):
flunkOnFailure = True
haltOnFailure = True
def _get_patch(self):
sourcestamp = self.build.getSourceStamp(self.getProperty('codebase', ''))
- if not sourcestamp or not sourcestamp.patch:
- return None
- return sourcestamp.patch[1]
+ if sourcestamp and sourcestamp.changes:
+ return '\n'.join(sourcestamp.changes[0].files)
+ if sourcestamp and sourcestamp.patch:
+ return sourcestamp.patch[1]
+ return None
@defer.inlineCallbacks
def _addToLog(self, logName, message):
@@ -666,18 +668,24 @@
log = yield self.addLog(logName)
log.addStdout(message)
+ @property
+ def change_type(self):
+ if self.getProperty('github.number', False):
+ return 'Pull request'
+ return 'Patch'
+
def getResultSummary(self):
if self.results in [FAILURE, SKIPPED]:
- return {'step': 'Patch doesn\'t have relevant changes'}
+ return {'step': '{} doesn\'t have relevant changes'.format(self.change_type)}
if self.results == SUCCESS:
- return {'step': 'Patch contains relevant changes'}
+ return {'step': '{} contains relevant changes'.format(self.change_type)}
return buildstep.BuildStep.getResultSummary(self)
-class CheckPatchRelevance(AnalyzePatch):
- name = 'check-patch-relevance'
- description = ['check-patch-relevance running']
- descriptionDone = ['Patch contains relevant changes']
+class CheckChangeRelevance(AnalyzeChange):
+ name = 'check-change-relevance'
+ description = ['check-change-relevance running']
+ descriptionDone = ['Change contains relevant changes']
MAX_LINE_SIZE = 250
bindings_path_regexes = [
@@ -767,19 +775,23 @@
return None
if self._patch_is_relevant(patch, self.getProperty('buildername', '')):
- self._addToLog('stdio', 'This patch contains relevant changes.')
+ self._addToLog('stdio', 'This {} contains relevant changes.'.format(self.change_type.lower()))
self.finished(SUCCESS)
return None
- self._addToLog('stdio', 'This patch does not have relevant changes.')
+ self._addToLog('stdio', 'This {} does not have relevant changes.'.format(self.change_type.lower()))
self.finished(FAILURE)
self.build.results = SKIPPED
- self.build.buildFinished(['Patch {} doesn\'t have relevant changes'.format(self.getProperty('patch_id', ''))], SKIPPED)
+ self.build.buildFinished(['{} {} doesn\'t have relevant changes'.format(
+ self.change_type,
+ self.getProperty('patch_id', '') or self.getProperty('github.number', ''),
+ )], SKIPPED)
return None
-class FindModifiedLayoutTests(AnalyzePatch):
+class FindModifiedLayoutTests(AnalyzeChange):
name = 'find-modified-layout-tests'
+ # FIXME: This regex won't work for pull-requests
RE_LAYOUT_TEST = br'^(\+\+\+).*(LayoutTests.*\.html)'
DIRECTORIES_TO_IGNORE = ['reference', 'reftest', 'resources', 'support', 'script-tests', 'tools']
SUFFIXES_TO_IGNORE = ['-expected', '-expected-mismatch', '-ref', '-notref']
@@ -810,16 +822,19 @@
tests = self.find_test_names_from_patch(patch)
if tests:
- self._addToLog('stdio', 'This patch modifies following tests: {}'.format(tests))
+ self._addToLog('stdio', 'This change modifies following tests: {}'.format(tests))
self.setProperty('modified_tests', tests)
self.finished(SUCCESS)
return None
- self._addToLog('stdio', 'This patch does not modify any layout tests')
+ self._addToLog('stdio', 'This change does not modify any layout tests')
self.finished(SKIPPED)
if self.skipBuildIfNoResult:
self.build.results = SKIPPED
- self.build.buildFinished(['Patch {} doesn\'t have relevant changes'.format(self.getProperty('patch_id', ''))], SKIPPED)
+ self.build.buildFinished(['{} {} doesn\'t have relevant changes'.format(
+ self.change_type,
+ self.getProperty('patch_id', '') or self.getProperty('github.number', ''),
+ )], SKIPPED)
return None
Modified: trunk/Tools/CISupport/ews-build/steps_unittest.py (288478 => 288479)
--- trunk/Tools/CISupport/ews-build/steps_unittest.py 2022-01-25 00:07:17 UTC (rev 288478)
+++ trunk/Tools/CISupport/ews-build/steps_unittest.py 2022-01-25 00:19:18 UTC (rev 288479)
@@ -42,7 +42,7 @@
from steps import (AnalyzeAPITestsResults, AnalyzeCompileWebKitResults, AnalyzeJSCTestsResults,
AnalyzeLayoutTestsResults, ApplyPatch, ApplyWatchList, ArchiveBuiltProduct, ArchiveTestResults,
- CheckOutPullRequest, CheckOutSource, CheckOutSpecificRevision, CheckPatchRelevance, CheckPatchStatusOnEWSQueues, CheckStyle,
+ CheckOutPullRequest, CheckOutSource, CheckOutSpecificRevision, CheckChangeRelevance, CheckPatchStatusOnEWSQueues, CheckStyle,
CleanBuild, CleanUpGitIndexLock, CleanGitRepo, CleanWorkingDirectory, CompileJSC, CompileJSCWithoutPatch,
CompileWebKit, CompileWebKitWithoutPatch, ConfigureBuild, ConfigureBuild, Contributors, CreateLocalGITCommit,
DownloadBuiltProduct, DownloadBuiltProductFromMaster, EWS_BUILD_HOSTNAME, ExtractBuiltProduct, ExtractTestResults,
@@ -3189,7 +3189,7 @@
return self.runStep()
-class TestCheckPatchRelevance(BuildStepMixinAdditions, unittest.TestCase):
+class TestCheckChangeRelevance(BuildStepMixinAdditions, unittest.TestCase):
def setUp(self):
self.longMessage = True
return self.setUpBuildStep()
@@ -3205,12 +3205,12 @@
'Tools/Scripts/update-_javascript_core-test-results', 'Tools/Scripts/webkitdirs.pm',
'Source/cmake/OptionsJSCOnly.cmake']
- self.setupStep(CheckPatchRelevance())
+ self.setupStep(CheckChangeRelevance())
self.setProperty('buildername', 'JSC-Tests-EWS')
- self.assertEqual(CheckPatchRelevance.haltOnFailure, True)
- self.assertEqual(CheckPatchRelevance.flunkOnFailure, True)
+ self.assertEqual(CheckChangeRelevance.haltOnFailure, True)
+ self.assertEqual(CheckChangeRelevance.flunkOnFailure, True)
for file_name in file_names:
- CheckPatchRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
+ CheckChangeRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
rc = self.runStep()
return rc
@@ -3219,10 +3219,10 @@
file_names = ['Source/WebKitLegacy', 'Source/WebCore', 'Source/WebInspectorUI', 'Source/WebDriver', 'Source/WTF',
'Source/bmalloc', 'Source/_javascript_Core', 'Source/ThirdParty', 'LayoutTests', 'Tools']
- self.setupStep(CheckPatchRelevance())
+ self.setupStep(CheckChangeRelevance())
self.setProperty('buildername', 'macOS-Catalina-Release-WK1-Tests-EWS')
for file_name in file_names:
- CheckPatchRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
+ CheckChangeRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
rc = self.runStep()
return rc
@@ -3229,17 +3229,17 @@
def test_relevant_bigsur_builder_patch(self):
file_names = ['Source/xyz', 'Tools/abc']
- self.setupStep(CheckPatchRelevance())
+ self.setupStep(CheckChangeRelevance())
self.setProperty('buildername', 'macOS-BigSur-Release-Build-EWS')
for file_name in file_names:
- CheckPatchRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
+ CheckChangeRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
rc = self.runStep()
return rc
def test_relevant_windows_wk1_patch(self):
- CheckPatchRelevance._get_patch = lambda x: b'Sample patch; file: Source/WebKitLegacy'
- self.setupStep(CheckPatchRelevance())
+ CheckChangeRelevance._get_patch = lambda x: b'Sample patch; file: Source/WebKitLegacy'
+ self.setupStep(CheckChangeRelevance())
self.setProperty('buildername', 'Windows-EWS')
self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
return self.runStep()
@@ -3246,10 +3246,10 @@
def test_relevant_webkitpy_patch(self):
file_names = ['Tools/Scripts/webkitpy', 'Tools/Scripts/libraries', 'Tools/Scripts/commit-log-editor']
- self.setupStep(CheckPatchRelevance())
+ self.setupStep(CheckChangeRelevance())
self.setProperty('buildername', 'WebKitPy-Tests-EWS')
for file_name in file_names:
- CheckPatchRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
+ CheckChangeRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
rc = self.runStep()
return rc
@@ -3257,32 +3257,55 @@
def test_relevant_services_patch(self):
file_names = ['Tools/CISupport/build-webkit-org', 'Tools/CISupport/ews-build', 'Tools/CISupport/Shared',
'Tools/Scripts/libraries/resultsdbpy', 'Tools/Scripts/libraries/webkitcorepy', 'Tools/Scripts/libraries/webkitscmpy']
- self.setupStep(CheckPatchRelevance())
+ self.setupStep(CheckChangeRelevance())
self.setProperty('buildername', 'Services-EWS')
for file_name in file_names:
- CheckPatchRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
+ CheckChangeRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
rc = self.runStep()
return rc
+ def test_relevant_services_pull_request(self):
+ file_names = ['Tools/CISupport/build-webkit-org', 'Tools/CISupport/ews-build', 'Tools/CISupport/Shared',
+ 'Tools/Scripts/libraries/resultsdbpy', 'Tools/Scripts/libraries/webkitcorepy', 'Tools/Scripts/libraries/webkitscmpy']
+ self.setupStep(CheckChangeRelevance())
+ self.setProperty('buildername', 'Services-EWS')
+ self.setProperty('github.number', 1234)
+ for file_name in file_names:
+ CheckChangeRelevance._get_patch = lambda x: file_name
+ self.expectOutcome(result=SUCCESS, state_string='Pull request contains relevant changes')
+ rc = self.runStep()
+ return rc
+
def test_relevant_bindings_tests_patch(self):
file_names = ['Source/WebCore', 'Tools']
- self.setupStep(CheckPatchRelevance())
+ self.setupStep(CheckChangeRelevance())
self.setProperty('buildername', 'Bindings-Tests-EWS')
for file_name in file_names:
- CheckPatchRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
+ CheckChangeRelevance._get_patch = lambda x: 'Sample patch; file: {}'.format(file_name)
self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
rc = self.runStep()
return rc
+ def test_relevant_bindings_tests_pull_request(self):
+ file_names = ['Source/WebCore', 'Tools']
+ self.setupStep(CheckChangeRelevance())
+ self.setProperty('buildername', 'Bindings-Tests-EWS')
+ self.setProperty('github.number', 1234)
+ for file_name in file_names:
+ CheckChangeRelevance._get_patch = lambda x: file_name
+ self.expectOutcome(result=SUCCESS, state_string='Pull request contains relevant changes')
+ rc = self.runStep()
+ return rc
+
def test_queues_without_relevance_info(self):
- CheckPatchRelevance._get_patch = lambda x: 'Sample patch'
+ CheckChangeRelevance._get_patch = lambda x: 'Sample patch'
queues = ['Commit-Queue', 'Style-EWS', 'Apply-WatchList-EWS', 'GTK-Build-EWS', 'GTK-WK2-Tests-EWS',
'iOS-13-Build-EWS', 'iOS-13-Simulator-Build-EWS', 'iOS-13-Simulator-WK2-Tests-EWS',
'macOS-Catalina-Release-Build-EWS', 'macOS-Catalina-Release-WK2-Tests-EWS', 'macOS-Catalina-Debug-Build-EWS',
'WinCairo-EWS', 'WPE-EWS', 'WebKitPerl-Tests-EWS']
for queue in queues:
- self.setupStep(CheckPatchRelevance())
+ self.setupStep(CheckChangeRelevance())
self.setProperty('buildername', queue)
self.expectOutcome(result=SUCCESS, state_string='Patch contains relevant changes')
rc = self.runStep()
@@ -3289,17 +3312,29 @@
return rc
def test_non_relevant_patch_on_various_queues(self):
- CheckPatchRelevance._get_patch = lambda x: 'Sample patch'
+ CheckChangeRelevance._get_patch = lambda x: 'Sample patch'
queues = ['Bindings-Tests-EWS', 'JSC-Tests-EWS', 'macOS-BigSur-Release-Build-EWS',
'macOS-Catalina-Debug-WK1-Tests-EWS', 'Services-EWS', 'WebKitPy-Tests-EWS']
for queue in queues:
- self.setupStep(CheckPatchRelevance())
+ self.setupStep(CheckChangeRelevance())
self.setProperty('buildername', queue)
self.expectOutcome(result=FAILURE, state_string='Patch doesn\'t have relevant changes')
rc = self.runStep()
return rc
+ def test_non_relevant_pull_request_on_various_queues(self):
+ CheckChangeRelevance._get_patch = lambda x: '\n'
+ queues = ['Bindings-Tests-EWS', 'JSC-Tests-EWS', 'macOS-BigSur-Release-Build-EWS',
+ 'macOS-Catalina-Debug-WK1-Tests-EWS', 'Services-EWS', 'WebKitPy-Tests-EWS']
+ for queue in queues:
+ self.setupStep(CheckChangeRelevance())
+ self.setProperty('buildername', queue)
+ self.setProperty('github.number', 1234)
+ self.expectOutcome(result=FAILURE, state_string='Pull request doesn\'t have relevant changes')
+ rc = self.runStep()
+ return rc
+
class TestFindModifiedLayoutTests(BuildStepMixinAdditions, unittest.TestCase):
def setUp(self):
self.longMessage = True
Modified: trunk/Tools/ChangeLog (288478 => 288479)
--- trunk/Tools/ChangeLog 2022-01-25 00:07:17 UTC (rev 288478)
+++ trunk/Tools/ChangeLog 2022-01-25 00:19:18 UTC (rev 288479)
@@ -1,3 +1,24 @@
+2022-01-20 Jonathan Bedard <[email protected]>
+
+ [EWS] Support pull request in AnaylzePatch
+ https://bugs.webkit.org/show_bug.cgi?id=235411
+ <rdar://problem/87839638>
+
+ Reviewed by Aakash Jain.
+
+ * CISupport/ews-build/factories.py:
+ (Factory.__init__): Rename AnalyzePatch to AnalyzeChange.
+ * CISupport/ews-build/factories_unittest.py:
+ (TestExpectedBuildSteps): Rename AnalyzePatch to AnalyzeChange.
+ * CISupport/ews-build/steps.py:
+ (AnalyzeChange): Renamed from AnalyzePatch.
+ (AnalyzeChange._get_patch): Create a parseable string including the files changed.
+ (CheckChangeRelevance): Renamed from CheckPatchRelevance.
+ (FindModifiedLayoutTests): Inherit from AnalyzeChange.
+ (AnalyzePatch): Renamed to AnalyzeChange.
+ (CheckPatchRelevance): Renamed to CheckChangeRelevance.
+ * CISupport/ews-build/steps_unittest.py:
+
2022-01-24 Sihui Liu <[email protected]>
Regression (r286936): SessionStorage data is not cleared when deleting website data by modification time