Diff
Deleted: trunk/Tools/CISupport/build-webkit-org/committer_auth_unittest.py (270261 => 270262)
--- trunk/Tools/CISupport/build-webkit-org/committer_auth_unittest.py 2020-11-30 21:42:48 UTC (rev 270261)
+++ trunk/Tools/CISupport/build-webkit-org/committer_auth_unittest.py 2020-11-30 21:45:39 UTC (rev 270262)
@@ -1,220 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2011 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
-# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import StringIO
-import __builtin__
-import buildbot.status.web.auth
-import contextlib
-import os
-import unittest
-
-from committer_auth import CommitterAuth
-
-
-# This subclass of StringIO supports the context manager protocol so it works
-# with "with" statements, just like real files.
-class CMStringIO(StringIO.StringIO):
- def __enter__(self):
- return self
-
- def __exit__(self, exception, value, traceback):
- self.close()
-
-
[email protected]
-def open_override(func):
- original_open = __builtin__.open
- __builtin__.open = func
- yield
- __builtin__.open = original_open
-
-
-class CommitterAuthTest(unittest.TestCase):
- def setUp(self):
- self.auth = CommitterAuth('path/to/auth.json')
- self.auth.open_auth_json_file = self.fake_auth_json_file
- self.auth.open_webkit_committers_file = self.fake_committers_file
- self.auth.open_trac_credentials_file = self.fake_htdigest_file
-
- def fake_open_function(self, expected_filename):
- def fake_open(name, mode='r'):
- self.fake_open_was_called = True
- self.assertEqual(expected_filename, name)
- return fake_open
-
- def test_authentication_success(self):
- self.assertTrue(self.auth.authenticate('[email protected]', 'committerpassword'))
- self.assertEqual('', self.auth.errmsg())
- self.assertTrue(self.auth.authenticate('[email protected]', 'committer2password'))
- self.assertEqual('', self.auth.errmsg())
-
- def test_committer_without_trac_credentials_fails(self):
- self.assertFalse(self.auth.authenticate('[email protected]', 'committer3password'))
- self.assertEqual('Invalid username/password', self.auth.errmsg())
-
- def test_fail_to_open_auth_json_file(self):
- def raise_IOError():
- raise IOError(2, 'No such file or directory', 'path/to/auth.json')
- auth = CommitterAuth('path/to/auth.json')
- auth.open_auth_json_file = raise_IOError
- self.assertFalse(auth.authenticate('[email protected]', 'committerpassword'))
- self.assertEqual('Error opening auth.json file: No such file or directory', auth.errmsg())
-
- def test_fail_to_open_trac_credentials_file(self):
- def raise_IOError():
- raise IOError(2, 'No such file or directory', 'path/to/trac/credentials')
- self.auth.open_trac_credentials_file = raise_IOError
- self.assertFalse(self.auth.authenticate('[email protected]', 'committerpassword'))
- self.assertEqual('Error opening Trac credentials file: No such file or directory', self.auth.errmsg())
-
- def test_fail_to_open_webkit_committers_file(self):
- def raise_IOError():
- raise IOError(2, 'No such file or directory', 'path/to/webkit/committers')
- self.auth.open_webkit_committers_file = raise_IOError
- self.assertFalse(self.auth.authenticate('[email protected]', 'committerpassword'))
- self.assertEqual('Error opening WebKit committers file: No such file or directory', self.auth.errmsg())
-
- def test_implements_IAuth(self):
- self.assertTrue(buildbot.status.web.auth.IAuth.implementedBy(CommitterAuth))
-
- def test_invalid_auth_json_file(self):
- auth = CommitterAuth('path/to/auth.json')
- auth.open_auth_json_file = self.invalid_auth_json_file
- self.assertFalse(auth.authenticate('[email protected]', 'committerpassword'))
- self.assertEqual('Error parsing auth.json file: No JSON object could be decoded', auth.errmsg())
-
- def test_invalid_committers_file(self):
- self.auth.open_webkit_committers_file = self.invalid_committers_file
- self.assertFalse(self.auth.authenticate('[email protected]', 'committerpassword'))
- self.assertEqual('Error parsing WebKit committers file', self.auth.errmsg())
-
- def test_invalid_trac_credentials_file(self):
- self.auth.open_trac_credentials_file = self.invalid_htdigest_file
- self.assertFalse(self.auth.authenticate('[email protected]', 'committerpassword'))
- self.assertEqual('Error parsing Trac credentials file', self.auth.errmsg())
-
- def test_missing_auth_json_keys(self):
- auth = CommitterAuth('path/to/auth.json')
- auth.open_auth_json_file = lambda: CMStringIO('{ "trac_credentials": "path/to/trac/credentials" }')
- self.assertFalse(auth.authenticate('[email protected]', 'committerpassword'))
- self.assertEqual('auth.json file is missing "webkit_committers" key', auth.errmsg())
-
- auth.open_auth_json_file = lambda: CMStringIO('{ "webkit_committers": "path/to/webkit/committers" }')
- auth.open_webkit_committers_file = self.fake_committers_file
- self.assertFalse(auth.authenticate('[email protected]', 'committerpassword'))
- self.assertEqual('auth.json file is missing "trac_credentials" key', auth.errmsg())
-
- def test_open_auth_json_file(self):
- auth = CommitterAuth('path/to/auth.json')
- self.fake_open_was_called = False
- with open_override(self.fake_open_function(auth.auth_json_filename())):
- auth.open_auth_json_file()
- self.assertTrue(self.fake_open_was_called)
-
- def test_open_trac_credentials_file(self):
- auth = CommitterAuth('path/to/auth.json')
- auth.trac_credentials_filename = lambda: 'trac credentials filename'
- self.fake_open_was_called = False
- with open_override(self.fake_open_function(auth.trac_credentials_filename())):
- auth.open_trac_credentials_file()
- self.assertTrue(self.fake_open_was_called)
-
- def test_open_webkit_committers_file(self):
- auth = CommitterAuth('path/to/auth.json')
- auth.webkit_committers_filename = lambda: 'webkit committers filename'
- self.fake_open_was_called = False
- with open_override(self.fake_open_function(auth.webkit_committers_filename())):
- auth.open_webkit_committers_file()
- self.assertTrue(self.fake_open_was_called)
-
- def test_non_committer_fails(self):
- self.assertFalse(self.auth.authenticate('[email protected]', 'noncommitterpassword'))
- self.assertEqual('Invalid username/password', self.auth.errmsg())
-
- def test_trac_credentials_filename(self):
- self.assertEqual('path/to/trac/credentials', self.auth.trac_credentials_filename())
-
- def test_unknown_user_fails(self):
- self.assertFalse(self.auth.authenticate('[email protected]', 'nobodypassword'))
- self.assertEqual('Invalid username/password', self.auth.errmsg())
-
- def test_username_is_prefix_of_valid_user(self):
- self.assertFalse(self.auth.authenticate('[email protected]', 'committerpassword'))
- self.assertEqual('Invalid username/password', self.auth.errmsg())
-
- def test_webkit_committers(self):
- self.assertEqual(['[email protected]', '[email protected]', '[email protected]'], self.auth.webkit_committers())
-
- def test_webkit_committers_filename(self):
- self.assertEqual('path/to/webkit/committers', self.auth.webkit_committers_filename())
-
- def test_wrong_password_fails(self):
- self.assertFalse(self.auth.authenticate('[email protected]', 'wrongpassword'))
- self.assertEqual('Invalid username/password', self.auth.errmsg())
-
- def fake_auth_json_file(self):
- return CMStringIO("""{
- "trac_credentials": "path/to/trac/credentials",
- "webkit_committers": "path/to/webkit/committers"
-}""")
-
- def invalid_auth_json_file(self):
- return CMStringIO('~!@#$%^&*()_+')
-
- def fake_committers_file(self):
- return CMStringIO("""[groups]
-group1 = [email protected],[email protected]
-group2 = [email protected]
-
-group3 =
-group4 =
-
-webkit = [email protected],[email protected],[email protected]
-
-[service:/]
-* = r
-""")
-
- def invalid_committers_file(self):
- return CMStringIO("""[groups]
-
-[[groups2]
-""")
-
- def fake_htdigest_file(self):
- return CMStringIO("""[email protected]:Mac OS Forge:761c8dcb7d9b5908007ed142f62fe73a
[email protected]:Mac OS Forge:faeee69acc2e49af3a0dbb15bd593ef4
[email protected]:Mac OS Forge:b99aa7ad32306a654ca4d57839fde9c1
-""")
-
- def invalid_htdigest_file(self):
- return CMStringIO("""[email protected]:Mac OS Forge:761c8dcb7d9b5908007ed142f62fe73a
[email protected]:Mac OS Forge:faeee69acc2e49af3a0dbb15bd593ef4
[email protected]:Mac OS Forge:b99aa7ad32306a654ca4d57839fde9c1
[email protected]:Mac OS Forge:::
-""")
-
-
-if __name__ == '__main__':
- unittest.main()
Copied: trunk/Tools/CISupport/build-webkit-org/committer_auth_unittest_old.py (from rev 270258, trunk/Tools/CISupport/build-webkit-org/committer_auth_unittest.py) (0 => 270262)
--- trunk/Tools/CISupport/build-webkit-org/committer_auth_unittest_old.py (rev 0)
+++ trunk/Tools/CISupport/build-webkit-org/committer_auth_unittest_old.py 2020-11-30 21:45:39 UTC (rev 270262)
@@ -0,0 +1,220 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2011 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import StringIO
+import __builtin__
+import buildbot.status.web.auth
+import contextlib
+import os
+import unittest
+
+from committer_auth import CommitterAuth
+
+
+# This subclass of StringIO supports the context manager protocol so it works
+# with "with" statements, just like real files.
+class CMStringIO(StringIO.StringIO):
+ def __enter__(self):
+ return self
+
+ def __exit__(self, exception, value, traceback):
+ self.close()
+
+
[email protected]
+def open_override(func):
+ original_open = __builtin__.open
+ __builtin__.open = func
+ yield
+ __builtin__.open = original_open
+
+
+class CommitterAuthTest(unittest.TestCase):
+ def setUp(self):
+ self.auth = CommitterAuth('path/to/auth.json')
+ self.auth.open_auth_json_file = self.fake_auth_json_file
+ self.auth.open_webkit_committers_file = self.fake_committers_file
+ self.auth.open_trac_credentials_file = self.fake_htdigest_file
+
+ def fake_open_function(self, expected_filename):
+ def fake_open(name, mode='r'):
+ self.fake_open_was_called = True
+ self.assertEqual(expected_filename, name)
+ return fake_open
+
+ def test_authentication_success(self):
+ self.assertTrue(self.auth.authenticate('[email protected]', 'committerpassword'))
+ self.assertEqual('', self.auth.errmsg())
+ self.assertTrue(self.auth.authenticate('[email protected]', 'committer2password'))
+ self.assertEqual('', self.auth.errmsg())
+
+ def test_committer_without_trac_credentials_fails(self):
+ self.assertFalse(self.auth.authenticate('[email protected]', 'committer3password'))
+ self.assertEqual('Invalid username/password', self.auth.errmsg())
+
+ def test_fail_to_open_auth_json_file(self):
+ def raise_IOError():
+ raise IOError(2, 'No such file or directory', 'path/to/auth.json')
+ auth = CommitterAuth('path/to/auth.json')
+ auth.open_auth_json_file = raise_IOError
+ self.assertFalse(auth.authenticate('[email protected]', 'committerpassword'))
+ self.assertEqual('Error opening auth.json file: No such file or directory', auth.errmsg())
+
+ def test_fail_to_open_trac_credentials_file(self):
+ def raise_IOError():
+ raise IOError(2, 'No such file or directory', 'path/to/trac/credentials')
+ self.auth.open_trac_credentials_file = raise_IOError
+ self.assertFalse(self.auth.authenticate('[email protected]', 'committerpassword'))
+ self.assertEqual('Error opening Trac credentials file: No such file or directory', self.auth.errmsg())
+
+ def test_fail_to_open_webkit_committers_file(self):
+ def raise_IOError():
+ raise IOError(2, 'No such file or directory', 'path/to/webkit/committers')
+ self.auth.open_webkit_committers_file = raise_IOError
+ self.assertFalse(self.auth.authenticate('[email protected]', 'committerpassword'))
+ self.assertEqual('Error opening WebKit committers file: No such file or directory', self.auth.errmsg())
+
+ def test_implements_IAuth(self):
+ self.assertTrue(buildbot.status.web.auth.IAuth.implementedBy(CommitterAuth))
+
+ def test_invalid_auth_json_file(self):
+ auth = CommitterAuth('path/to/auth.json')
+ auth.open_auth_json_file = self.invalid_auth_json_file
+ self.assertFalse(auth.authenticate('[email protected]', 'committerpassword'))
+ self.assertEqual('Error parsing auth.json file: No JSON object could be decoded', auth.errmsg())
+
+ def test_invalid_committers_file(self):
+ self.auth.open_webkit_committers_file = self.invalid_committers_file
+ self.assertFalse(self.auth.authenticate('[email protected]', 'committerpassword'))
+ self.assertEqual('Error parsing WebKit committers file', self.auth.errmsg())
+
+ def test_invalid_trac_credentials_file(self):
+ self.auth.open_trac_credentials_file = self.invalid_htdigest_file
+ self.assertFalse(self.auth.authenticate('[email protected]', 'committerpassword'))
+ self.assertEqual('Error parsing Trac credentials file', self.auth.errmsg())
+
+ def test_missing_auth_json_keys(self):
+ auth = CommitterAuth('path/to/auth.json')
+ auth.open_auth_json_file = lambda: CMStringIO('{ "trac_credentials": "path/to/trac/credentials" }')
+ self.assertFalse(auth.authenticate('[email protected]', 'committerpassword'))
+ self.assertEqual('auth.json file is missing "webkit_committers" key', auth.errmsg())
+
+ auth.open_auth_json_file = lambda: CMStringIO('{ "webkit_committers": "path/to/webkit/committers" }')
+ auth.open_webkit_committers_file = self.fake_committers_file
+ self.assertFalse(auth.authenticate('[email protected]', 'committerpassword'))
+ self.assertEqual('auth.json file is missing "trac_credentials" key', auth.errmsg())
+
+ def test_open_auth_json_file(self):
+ auth = CommitterAuth('path/to/auth.json')
+ self.fake_open_was_called = False
+ with open_override(self.fake_open_function(auth.auth_json_filename())):
+ auth.open_auth_json_file()
+ self.assertTrue(self.fake_open_was_called)
+
+ def test_open_trac_credentials_file(self):
+ auth = CommitterAuth('path/to/auth.json')
+ auth.trac_credentials_filename = lambda: 'trac credentials filename'
+ self.fake_open_was_called = False
+ with open_override(self.fake_open_function(auth.trac_credentials_filename())):
+ auth.open_trac_credentials_file()
+ self.assertTrue(self.fake_open_was_called)
+
+ def test_open_webkit_committers_file(self):
+ auth = CommitterAuth('path/to/auth.json')
+ auth.webkit_committers_filename = lambda: 'webkit committers filename'
+ self.fake_open_was_called = False
+ with open_override(self.fake_open_function(auth.webkit_committers_filename())):
+ auth.open_webkit_committers_file()
+ self.assertTrue(self.fake_open_was_called)
+
+ def test_non_committer_fails(self):
+ self.assertFalse(self.auth.authenticate('[email protected]', 'noncommitterpassword'))
+ self.assertEqual('Invalid username/password', self.auth.errmsg())
+
+ def test_trac_credentials_filename(self):
+ self.assertEqual('path/to/trac/credentials', self.auth.trac_credentials_filename())
+
+ def test_unknown_user_fails(self):
+ self.assertFalse(self.auth.authenticate('[email protected]', 'nobodypassword'))
+ self.assertEqual('Invalid username/password', self.auth.errmsg())
+
+ def test_username_is_prefix_of_valid_user(self):
+ self.assertFalse(self.auth.authenticate('[email protected]', 'committerpassword'))
+ self.assertEqual('Invalid username/password', self.auth.errmsg())
+
+ def test_webkit_committers(self):
+ self.assertEqual(['[email protected]', '[email protected]', '[email protected]'], self.auth.webkit_committers())
+
+ def test_webkit_committers_filename(self):
+ self.assertEqual('path/to/webkit/committers', self.auth.webkit_committers_filename())
+
+ def test_wrong_password_fails(self):
+ self.assertFalse(self.auth.authenticate('[email protected]', 'wrongpassword'))
+ self.assertEqual('Invalid username/password', self.auth.errmsg())
+
+ def fake_auth_json_file(self):
+ return CMStringIO("""{
+ "trac_credentials": "path/to/trac/credentials",
+ "webkit_committers": "path/to/webkit/committers"
+}""")
+
+ def invalid_auth_json_file(self):
+ return CMStringIO('~!@#$%^&*()_+')
+
+ def fake_committers_file(self):
+ return CMStringIO("""[groups]
+group1 = [email protected],[email protected]
+group2 = [email protected]
+
+group3 =
+group4 =
+
+webkit = [email protected],[email protected],[email protected]
+
+[service:/]
+* = r
+""")
+
+ def invalid_committers_file(self):
+ return CMStringIO("""[groups]
+
+[[groups2]
+""")
+
+ def fake_htdigest_file(self):
+ return CMStringIO("""[email protected]:Mac OS Forge:761c8dcb7d9b5908007ed142f62fe73a
[email protected]:Mac OS Forge:faeee69acc2e49af3a0dbb15bd593ef4
[email protected]:Mac OS Forge:b99aa7ad32306a654ca4d57839fde9c1
+""")
+
+ def invalid_htdigest_file(self):
+ return CMStringIO("""[email protected]:Mac OS Forge:761c8dcb7d9b5908007ed142f62fe73a
[email protected]:Mac OS Forge:faeee69acc2e49af3a0dbb15bd593ef4
[email protected]:Mac OS Forge:b99aa7ad32306a654ca4d57839fde9c1
[email protected]:Mac OS Forge:::
+""")
+
+
+if __name__ == '__main__':
+ unittest.main()
Deleted: trunk/Tools/CISupport/build-webkit-org/steps_unittest.py (270261 => 270262)
--- trunk/Tools/CISupport/build-webkit-org/steps_unittest.py 2020-11-30 21:42:48 UTC (rev 270261)
+++ trunk/Tools/CISupport/build-webkit-org/steps_unittest.py 2020-11-30 21:45:39 UTC (rev 270262)
@@ -1,696 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2011-2020 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
-# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import sys
-import os
-import unittest
-import json
-
-# Show DepricationWarnings come from buildbot - it isn't default with Python 2.7 or newer.
-# See https://bugs.webkit.org/show_bug.cgi?id=90161 for details.
-import warnings
-warnings.simplefilter('default')
-
-
-class BuildBotConfigLoader(object):
- def _add_webkitpy_to_sys_path(self):
- # When files are passed to the python interpreter on the command line (e.g. python test.py) __file__ is a relative path.
- absolute_file_path = os.path.abspath(__file__)
- webkit_org_config_dir = os.path.dirname(absolute_file_path)
- worker_support_dir = os.path.dirname(webkit_org_config_dir)
- webkit_tools_dir = os.path.dirname(worker_support_dir)
- scripts_dir = os.path.join(webkit_tools_dir, 'Scripts')
- sys.path.append(scripts_dir)
-
- def _add_dependent_modules_to_sys_modules(self):
- self._add_webkitpy_to_sys_path()
- from webkitpy.autoinstalled import buildbot
- sys.modules['buildbot'] = buildbot
-
-
-class RunWebKitTestsTest(unittest.TestCase):
- def test_nrwt_leaks_parsing(self):
- run_webkit_tests = RunWebKitTests() # pylint is confused by the way we import the module ... pylint: disable-msg=E0602
- log_text = """
-12:44:24.295 77706 13981 total leaks found for a total of 197,936 bytes.
-12:44:24.295 77706 1 unique leaks found.
-"""
- expected_incorrect_lines = [
- '13981 total leaks found for a total of 197,936 bytes.',
- '1 unique leaks found.',
- ]
- run_webkit_tests._parseRunWebKitTestsOutput(log_text)
- self.assertEqual(run_webkit_tests.incorrectLayoutLines, expected_incorrect_lines)
-
- def test_nrwt_missing_results(self):
- run_webkit_tests = RunWebKitTests() # pylint is confused by the way we import the module ... pylint: disable-msg=E0602
- log_text = """
-Expected to fail, but passed: (2)
- animations/additive-transform-animations.html
- animations/cross-fade-webkit-mask-box-image.html
-
-Unexpected flakiness: text-only failures (2)
- fast/events/touch/touch-inside-iframe.html [ Failure Pass ]
- http/tests/inspector-enabled/console-clear-arguments-on-frame-navigation.html [ Failure Pass ]
-
-Unexpected flakiness: timeouts (1)
- svg/text/foreignObject-repaint.xml [ Timeout Pass ]
-
-Regressions: Unexpected missing results (1)
- svg/custom/zero-path-square-cap-rendering2.svg [ Missing ]
-
-Regressions: Unexpected text-only failures (1)
- svg/custom/zero-path-square-cap-rendering2.svg [ Failure ]
-"""
- run_webkit_tests._parseRunWebKitTestsOutput(log_text)
- self.assertEqual(set(run_webkit_tests.incorrectLayoutLines),
- set(['2 new passes', '3 flakes', '1 missing results', '1 failures']))
-
-
-class StubStdio(object):
- def __init__(self, stdio):
- self._stdio = stdio
-
- def getText(self):
- return self._stdio
-
-
-class StubRemoteCommand(object):
- def __init__(self, rc, stdio):
- self.rc = rc
- self.logs = {'stdio': StubStdio(stdio)}
-
-
-class RunJavaScriptCoreTestsTest(unittest.TestCase):
- def assertResults(self, expected_result, expected_text, rc, stdio):
- cmd = StubRemoteCommand(rc, stdio)
- step = RunJavaScriptCoreTests()
- step.commandComplete(cmd)
- actual_results = step.evaluateCommand(cmd)
- actual_text = step.getText2(cmd, actual_results)
-
- self.assertEqual(expected_result, actual_results)
- self.assertEqual(actual_text, expected_text)
-
- def test_no_regressions_old_output(self):
- self.assertResults(SUCCESS, ["jscore-test"], 0, """Results for Mozilla tests:
- 0 regressions found.
- 0 tests fixed.
- OK.""")
-
- def test_no_failure_new_output(self):
- self.assertResults(SUCCESS, ["jscore-test"], 0, """Results for JSC stress tests:
- 0 failures found.
- OK.""")
-
- def test_mozilla_failure_old_output(self):
- self.assertResults(FAILURE, ["1 JSC test failed"], 1, """Results for Mozilla tests:
- 1 regression found.
- 0 tests fixed.""")
-
- def test_mozilla_failures_old_output(self):
- self.assertResults(FAILURE, ["2 JSC tests failed"], 1, """Results for Mozilla tests:
- 2 regressions found.
- 0 tests fixed.""")
-
- def test_jsc_stress_failure_new_output(self):
- self.assertResults(FAILURE, ["1 JSC test failed"], 1, """Results for JSC stress tests:
- 1 failure found.""")
-
- def test_jsc_stress_failures_new_output(self):
- self.assertResults(FAILURE, ["5 JSC tests failed"], 1, """Results for JSC stress tests:
- 5 failures found.""")
-
- def test_jsc_stress_failures_with_binary_results_output(self):
- self.assertResults(FAILURE, ["8 JSC tests failed"], 1, """Results for JSC stress tests:
- 5 failures found.
-Results for JSC test binaries:
- 3 failures found.""")
-
- def test_jsc_stress_failures_with_binary_result_output(self):
- self.assertResults(FAILURE, ["6 JSC tests failed"], 1, """Results for JSC stress tests:
- 5 failures found.
-Results for JSC test binaries:
- 1 failure found.""")
-
-
-class RunTest262TestsTest(unittest.TestCase):
- def assertResults(self, expected_result, expected_text, rc, stdio):
- cmd = StubRemoteCommand(rc, stdio)
- step = RunTest262Tests()
- step.commandComplete(cmd)
- actual_results = step.evaluateCommand(cmd)
- actual_text = step.getText2(cmd, actual_results)
-
- self.assertEqual(expected_result, actual_results)
- self.assertEqual(actual_text, expected_text)
-
- def test_no_regressions_output(self):
- self.assertResults(SUCCESS, ["test262-test"], 0, """
--------------------------Settings------------------------
-Test262 Dir: JSTests/test262
-JSC: WebKitBuild/Release/jsc
-DYLD_FRAMEWORK_PATH: WebKitBuild/Release
-Child Processes: 32
-Config file: Tools/Scripts/test262/config.yaml
-Expectations file: Tools/Scripts/test262/expectations.yaml
---------------------------------------------------------
-
-NEW PASS: test/annexB/built-ins/Date/prototype/getYear/length.js (default)
-NEW PASS test/language/expressions/class/fields-after-same-line-static-method-computed-symbol-names.js (default)
-
-Run with --save to save a new expectations file
-Saved all the results in Tools/Scripts/test262/results.yaml
-Summarizing results...
-See summarized results in Tools/Scripts/test262/results-summary.txt
-
-56071 tests ran
-0 expected tests failed
-0 tests newly fail
-2546 tests newly pass
-1241 test files skipped
-Done in 247 seconds!
-""")
-
- def test_failure_output(self):
- self.assertResults(FAILURE, ["1 Test262 test failed"], 0, """
--------------------------Settings------------------------
-Test262 Dir: JSTests/test262
-JSC: WebKitBuild/Release/jsc
-DYLD_FRAMEWORK_PATH: WebKitBuild/Release
-Child Processes: 32
-Config file: Tools/Scripts/test262/config.yaml
-Expectations file: Tools/Scripts/test262/expectations.yaml
---------------------------------------------------------
-
-! NEW FAIL: test/annexB/built-ins/Date/prototype/getYear/length.js (default)
-NEW PASS test/language/expressions/class/fields-after-same-line-static-method-computed-symbol-names.js (default)
-
-Run with --save to save a new expectations file
-Saved all the results in Tools/Scripts/test262/results.yaml
-Summarizing results...
-See summarized results in Tools/Scripts/test262/results-summary.txt
-
-56071 tests ran
-0 expected tests failed
-0 tests newly fail
-2546 tests newly pass
-1241 test files skipped
-Done in 247 seconds!
-""")
-
- def test_failures_output(self):
- self.assertResults(FAILURE, ["2 Test262 tests failed"], 0, """
--------------------------Settings------------------------
-Test262 Dir: JSTests/test262
-JSC: WebKitBuild/Release/jsc
-DYLD_FRAMEWORK_PATH: WebKitBuild/Release
-Child Processes: 32
-Config file: Tools/Scripts/test262/config.yaml
-Expectations file: Tools/Scripts/test262/expectations.yaml
---------------------------------------------------------
-
-NEW PASS test/language/statements/class/fields-after-same-line-static-async-gen-computed-names.js (default)
-! NEW FAIL: test/annexB/built-ins/Date/prototype/getYear/length.js (default)
-! NEW FAIL: test/annexB/built-ins/Date/prototype/getYear/length.js (strict mode)
-NEW PASS test/language/expressions/class/fields-after-same-line-static-method-computed-symbol-names.js (default)
-
-Run with --save to save a new expectations file
-Saved all the results in Tools/Scripts/test262/results.yaml
-Summarizing results...
-See summarized results in Tools/Scripts/test262/results-summary.txt
-
-56071 tests ran
-0 expected tests failed
-0 tests newly fail
-2546 tests newly pass
-1241 test files skipped
-Done in 247 seconds!
-""")
-
-
-class RunLLINTCLoopTestsTest(unittest.TestCase):
- def assertResults(self, expected_result, expected_text, rc, stdio):
- cmd = StubRemoteCommand(rc, stdio)
- step = RunLLINTCLoopTests()
- step.commandComplete(cmd)
- actual_results = step.evaluateCommand(cmd)
- actual_text = step.getText2(cmd, actual_results)
-
- self.assertEqual(expected_result, actual_results)
- self.assertEqual(actual_text, expected_text)
-
- def test_failures(self):
- self.assertResults(FAILURE, ['5 regressions found.'], 1, ' 5 regressions found.')
-
- def test_failure(self):
- self.assertResults(FAILURE, ['1 regression found.'], 1, ' 1 regression found.')
-
- def test_no_failure(self):
- self.assertResults(SUCCESS, ['webkit-jsc-cloop-test'], 0, ' 0 regressions found.')
-
-
-class Run32bitJSCTestsTest(unittest.TestCase):
- def assertResults(self, expected_result, expected_text, rc, stdio):
- cmd = StubRemoteCommand(rc, stdio)
- step = Run32bitJSCTests()
- step.commandComplete(cmd)
- actual_results = step.evaluateCommand(cmd)
- actual_text = step.getText2(cmd, actual_results)
-
- self.assertEqual(expected_result, actual_results)
- self.assertEqual(actual_text, expected_text)
-
- def test_failures(self):
- self.assertResults(FAILURE, ['5 regressions found.'], 1, ' 5 failures found.')
-
- def test_failure(self):
- self.assertResults(FAILURE, ['1 regression found.'], 1, ' 1 failure found.')
-
- def test_no_failure(self):
- self.assertResults(SUCCESS, ['webkit-32bit-jsc-test'], 0, ' 0 failures found.')
-
-
-class RunAPITestsTest(unittest.TestCase):
- def assertFailures(self, expected_failure_count, stdio):
- if expected_failure_count:
- rc = 1
- expected_results = FAILURE
- plural_suffix = "" if expected_failure_count == 1 else "s"
- expected_text = '%d api test%s failed or timed out' % (expected_failure_count, plural_suffix)
- else:
- rc = 0
- expected_results = SUCCESS
- expected_text = 'run-api-tests'
-
- cmd = StubRemoteCommand(rc, stdio)
- step = RunAPITests()
- step.commandComplete(cmd)
- actual_results = step.evaluateCommand(cmd)
- actual_failure_count = step.failedTestCount
- actual_text = step.getText(cmd, actual_results)[0]
-
- self.assertEqual(expected_results, actual_results)
- self.assertEqual(expected_failure_count, actual_failure_count)
- self.assertEqual(expected_text, actual_text)
-
- def test_no_failures_or_timeouts(self):
- self.assertFailures(0, """...
-worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
-worker/0 TestWTF.WTF_Variant.Ref Passed
-worker/0 TestWTF.WTF_Variant.RefPtr Passed
-worker/0 TestWTF.WTF_Variant.RetainPtr Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
-worker/0 exiting
-Ran 1888 tests of 1888 with 1888 successful
-------------------------------
-All tests successfully passed!
-""")
-
- def test_no_failures_or_timeouts_with_disabled(self):
- self.assertFailures(0, """...
-worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
-worker/0 TestWTF.WTF_Variant.Ref Passed
-worker/0 TestWTF.WTF_Variant.RefPtr Passed
-worker/0 TestWTF.WTF_Variant.RetainPtr Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
-worker/0 exiting
-Ran 1881 tests of 1888 with 1881 successful
-------------------------------
-All tests successfully passed!
-""")
-
- def test_one_failure(self):
- self.assertFailures(1, """...
-worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
-worker/0 TestWTF.WTF_Variant.Ref Passed
-worker/0 TestWTF.WTF_Variant.RefPtr Passed
-worker/0 TestWTF.WTF_Variant.RetainPtr Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
-worker/0 exiting
-Ran 1888 tests of 1888 with 1887 successful
-------------------------------
-Test suite failed
-
-Crashed
-
- TestWTF.WTF.StringConcatenate_Unsigned
- **FAIL** WTF.StringConcatenate_Unsigned
-
- C:\\cygwin\\home\\buildbot\\worker\\win-release\\build\\Tools\\TestWebKitAPI\\Tests\\WTF\\StringConcatenate.cpp:84
- Value of: makeString("hello ", static_cast<unsigned short>(42) , " world")
- Actual: hello 42 world
- Expected: "hello * world"
- Which is: 74B00C9C
-
-Testing completed, Exit status: 3
-""")
-
- def test_multiple_failures(self):
- self.assertFailures(2, """...
-worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
-worker/0 TestWTF.WTF_Variant.Ref Passed
-worker/0 TestWTF.WTF_Variant.RefPtr Passed
-worker/0 TestWTF.WTF_Variant.RetainPtr Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
-worker/0 exiting
-Ran 1888 tests of 1888 with 1886 successful
-------------------------------
-Test suite failed
-
-Crashed
-
- TestWTF.WTF.StringConcatenate_Unsigned
- **FAIL** WTF.StringConcatenate_Unsigned
-
- C:\\cygwin\\home\\buildbot\\worker\\win-release\\build\\Tools\\TestWebKitAPI\\Tests\\WTF\\StringConcatenate.cpp:84
- Value of: makeString("hello ", static_cast<unsigned short>(42) , " world")
- Actual: hello 42 world
- Expected: "hello * world"
- Which is: 74B00C9C
-
- TestWTF.WTF_Expected.Unexpected
- **FAIL** WTF_Expected.Unexpected
-
- C:\\cygwin\\home\\buildbot\\worker\\win-release\\build\\Tools\\TestWebKitAPI\\Tests\\WTF\\Expected.cpp:96
- Value of: s1
- Actual: oops
- Expected: s0
- Which is: oops
-
-Testing completed, Exit status: 3
-""")
-
- def test_one_timeout(self):
- self.assertFailures(1, """...
-worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
-worker/0 TestWTF.WTF_Variant.Ref Passed
-worker/0 TestWTF.WTF_Variant.RefPtr Passed
-worker/0 TestWTF.WTF_Variant.RetainPtr Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
-worker/0 exiting
-Ran 1888 tests of 1888 with 1887 successful
-------------------------------
-Test suite failed
-
-Timeout
-
- TestWTF.WTF_PoisonedUniquePtrForTriviallyDestructibleArrays.Assignment
-
-Testing completed, Exit status: 3
-""")
-
- def test_multiple_timeouts(self):
- self.assertFailures(2, """...
-worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
-worker/0 TestWTF.WTF_Variant.Ref Passed
-worker/0 TestWTF.WTF_Variant.RefPtr Passed
-worker/0 TestWTF.WTF_Variant.RetainPtr Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
-worker/0 exiting
-Ran 1888 tests of 1888 with 1886 successful
-------------------------------
-Test suite failed
-
-Timeout
-
- TestWTF.WTF_PoisonedUniquePtrForTriviallyDestructibleArrays.Assignment
- TestWTF.WTF_Lock.ContendedShortSection
-
-Testing completed, Exit status: 3
-""")
-
- def test_multiple_failures_and_timeouts(self):
- self.assertFailures(4, """...
-worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
-worker/0 TestWTF.WTF_Variant.Ref Passed
-worker/0 TestWTF.WTF_Variant.RefPtr Passed
-worker/0 TestWTF.WTF_Variant.RetainPtr Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
-worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
-worker/0 exiting
-Ran 1888 tests of 1888 with 1884 successful
-------------------------------
-Test suite failed
-
-Crashed
-
- TestWTF.WTF.StringConcatenate_Unsigned
- **FAIL** WTF.StringConcatenate_Unsigned
-
- C:\\cygwin\\home\\buildbot\\worker\\win-release\\build\\Tools\\TestWebKitAPI\\Tests\\WTF\\StringConcatenate.cpp:84
- Value of: makeString("hello ", static_cast<unsigned short>(42) , " world")
- Actual: hello 42 world
- Expected: "hello * world"
- Which is: 74B00C9C
-
- TestWTF.WTF_Expected.Unexpected
- **FAIL** WTF_Expected.Unexpected
-
- C:\\cygwin\\home\\buildbot\\worker\\win-release\\build\\Tools\\TestWebKitAPI\\Tests\\WTF\\Expected.cpp:96
- Value of: s1
- Actual: oops
- Expected: s0
- Which is: oops
-
-Timeout
-
- TestWTF.WTF_PoisonedUniquePtrForTriviallyDestructibleArrays.Assignment
- TestWTF.WTF_Lock.ContendedShortSection
-
-Testing completed, Exit status: 3
-""")
-
-
-class BuildStepsConstructorTest(unittest.TestCase):
- # "Passing a BuildStep subclass to factory.addStep is deprecated. Please pass a BuildStep instance instead. Support will be dropped in v0.8.7."
- # It checks if all builder's all buildsteps can be insantiated after migration.
- # https://bugs.webkit.org/show_bug.cgi?id=89001
- # http://buildbot.net/buildbot/docs/0.8.6p1/manual/customization.html#writing-buildstep-constructors
-
- @staticmethod
- def generateTests():
- for builderNumber, builder in enumerate(c['builders']):
- for stepNumber, step in enumerate(builder['factory'].steps):
- builderName = builder['name'].encode('ascii', 'ignore')
- setattr(BuildStepsConstructorTest, 'test_builder%02d_step%02d' % (builderNumber, stepNumber), BuildStepsConstructorTest.createTest(builderName, step))
-
- @staticmethod
- def createTest(builderName, step):
- def doTest(self):
- try:
- buildStepFactory, kwargs = step
- buildStepFactory(**kwargs)
- except TypeError as e:
- buildStepName = str(buildStepFactory).split('.')[-1]
- self.fail("Error during instantiation %s buildstep for %s builder: %s\n" % (buildStepName, builderName, e))
- return doTest
-
-
-expected_build_steps = {
- 'Apple-Win-10-Debug-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile', 'download-built-product', 'extract-built-product', 'jscore-test', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-Win-10-Release-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile', 'download-built-product', 'extract-built-product', 'jscore-test', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-Win-10-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'Apple-Win-10-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
-
- 'Apple-BigSur-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'Apple-BigSur-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'Apple-BigSur-Debug-WK1-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-BigSur-Debug-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-BigSur-Release-WK1-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-BigSur-Release-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
-
- 'Apple-Catalina-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'Apple-Catalina-Debug-JSC-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'jscore-test'],
- 'Apple-Catalina-Debug-Test262-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'test262-test'],
- 'Apple-Catalina-Debug-WK1-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-Catalina-Debug-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-Catalina-Debug-WK2-GPUProcess-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-Catalina-LLINT-CLoop-BuildAndTest': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'webkit-jsc-cloop-test'],
- 'Apple-Catalina-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'Apple-Catalina-Release-JSC-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'jscore-test'],
- 'Apple-Catalina-Release-Test262-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'test262-test'],
- 'Apple-Catalina-Release-WK1-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-Catalina-Release-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-Catalina-Release-WK2-Perf': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'perf-test'],
- 'Apple-Catalina-Release-WK2-WebGL-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
-
- 'Apple-Mojave-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'Apple-Mojave-Debug-WK1-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-Mojave-Debug-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-Mojave-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'Apple-Mojave-Release-WK1-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-Mojave-Release-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-Mojave-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
-
- 'Apple-iOS-14-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
- 'Apple-iOS-14-Simulator-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'Apple-iOS-14-Simulator-Release-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
-
- 'Apple-iOS-14-Simulator-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'Apple-iOS-14-Simulator-Debug-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
-
- 'Apple-iPadOS-14-Simulator-Release-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
- 'Apple-iPadOS-14-Simulator-Debug-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
-
- 'Apple-tvOS-14-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
- 'Apple-tvOS-Simulator-14-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
-
- 'Apple-watchOS-7-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
- 'Apple-watchOS-Simulator-7-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
-
- 'JSCOnly-Linux-ARMv7-Thumb2-Release': ['configure-build', 'svn', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'jscore-test'],
- 'JSCOnly-Linux-ARMv7-Thumb2-SoftFP-Release': ['configure-build', 'svn', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'jscore-test'],
- 'JSCOnly-Linux-AArch64-Release': ['configure-build', 'svn', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'jscore-test'],
- 'JSCOnly-Linux-MIPS32el-Release': ['configure-build', 'svn', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'jscore-test'],
-
- 'GTK-Linux-64-bit-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'GTK-Linux-64-bit-Debug-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'layout-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'archive-test-results', 'upload', 'extract-test-results', 'API-tests'],
- 'GTK-Linux-64-bit-Debug-WebDriver-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'webdriver-test'],
- 'GTK-Linux-64-bit-Debug-JS-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'jscore-test', 'test262-test'],
- 'GTK-Linux-64-bit-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'generate-jsc-bundle', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'GTK-Linux-64-bit-Release-Perf': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'perf-test', 'benchmark-test'],
- 'GTK-Linux-64-bit-Release-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'layout-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'archive-test-results', 'upload', 'extract-test-results', 'API-tests'],
- 'GTK-Linux-64-bit-Release-WebDriver-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'webdriver-test'],
- 'GTK-Linux-64-bit-Release-JS-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'jscore-test', 'test262-test'],
- 'GTK-Linux-64-bit-Release-Wayland-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'layout-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'archive-test-results', 'upload', 'extract-test-results', 'API-tests', 'webdriver-test'],
- 'GTK-Linux-64-bit-Release-Ubuntu-LTS-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
- 'GTK-Linux-64-bit-Release-Debian-Stable-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
- 'GTK-Linux-64-bit-Release-GTK4-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'layout-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'archive-test-results', 'upload', 'extract-test-results', 'API-tests', 'webdriver-test'],
-
- 'PlayStation-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
- 'PlayStation-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
-
- 'WinCairo-64-bit-JSC-Debug-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'jscore-test'],
- 'WinCairo-64-bit-JSC-Release-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'jscore-test'],
- 'WinCairo-64-bit-WKL-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'WinCairo-64-bit-WKL-Debug-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wincairo-requirements', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'archive-test-results', 'upload', 'extract-test-results'],
- 'WinCairo-64-bit-WKL-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'WinCairo-64-bit-WKL-Release-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wincairo-requirements', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'archive-test-results', 'upload', 'extract-test-results'],
-
- 'WPE-Linux-64-bit-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'WPE-Linux-64-bit-Release-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'layout-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'archive-test-results', 'upload', 'extract-test-results', 'API-tests', 'webdriver-test'],
- 'WPE-Linux-64-bit-Release-JS-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'jscore-test', 'test262-test'],
- 'WPE-Linux-64-bit-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
- 'WPE-Linux-64-bit-Debug-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'layout-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'archive-test-results', 'upload', 'extract-test-results', 'API-tests', 'webdriver-test'],
- 'WPE-Linux-64-bit-Debug-JS-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'jscore-test', 'test262-test'],
- 'GTK-Linux-64bit-Release-Packaging-Nightly-Ubuntu1804': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'generate-minibrowser-bundle'],
- 'GTK-Linux-64bit-Release-Packaging-Nightly-Ubuntu2004': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'generate-minibrowser-bundle'],
- 'WPE-Linux-64bit-Release-Packaging-Nightly-Ubuntu1804': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'generate-minibrowser-bundle'],
- 'WPE-Linux-64bit-Release-Packaging-Nightly-Ubuntu2004': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'generate-minibrowser-bundle'],
-}
-
-
-class BuildStepsTest(unittest.TestCase):
- @staticmethod
- def generateTests():
- for builder in c['builders']:
- builderName = builder['name'].encode('ascii', 'ignore')
- setattr(BuildStepsTest, 'test_builder %s' % builderName, BuildStepsTest.createTest(builder))
-
- @staticmethod
- def createTest(builder):
- def doTest(self):
- buildSteps = []
- for step in builder['factory'].steps:
- buildSteps.append(step[0].name)
- self.assertTrue(builder['name'] in expected_build_steps, "Missing expected result for builder: %s\n Actual result is %s" % (builder['name'], buildSteps))
- self.assertListEqual(expected_build_steps[builder['name']], buildSteps)
-
- return doTest
-
- def test_unnecessary_expected_results(self):
- builders = set()
- for builder in c['builders']:
- builders.add(builder['name'].encode('ascii', 'ignore'))
-
- for builder in expected_build_steps:
- self.assertTrue(builder in builders, "Builder %s doesn't exist, but has unnecessary expected results" % builder)
-
-
-class RunAndUploadPerfTestsTest(unittest.TestCase):
- def assertResults(self, rc, expected_text):
- cmd = StubRemoteCommand(rc, expected_text)
- step = RunAndUploadPerfTests()
- step.commandComplete(cmd)
- actual_results = step.evaluateCommand(cmd)
- actual_text = str(step.getText2(cmd, actual_results)[0])
- self.assertEqual(expected_text, actual_text)
-
- def test_success(self):
- self.assertResults(0, "perf-test")
-
- def test_tests_failed(self):
- self.assertResults(5, "5 perf tests failed")
-
- def test_build_bad_build(self):
- self.assertResults(255, "build not up to date")
-
- def test_build_bad_source_json(self):
- self.assertResults(254, "worker config JSON error")
-
- def test_build_bad_marge(self):
- self.assertResults(253, "output JSON merge error")
-
- def test_build_bad_failed_uploading(self):
- self.assertResults(252, "upload error")
-
- def test_build_bad_preparation(self):
- self.assertResults(251, "system dependency error")
-
- def test_buildbot_timeout(self):
- self.assertResults(-1, "timeout")
-
-
-class RunBenchmarkTest(unittest.TestCase):
- def assertResults(self, rc, expected_text):
- cmd = StubRemoteCommand(rc, expected_text)
- step = RunBenchmarkTests()
- step.commandComplete(cmd)
- actual_results = step.evaluateCommand(cmd)
- actual_text = str(step.getText2(cmd, actual_results)[0])
- self.assertEqual(expected_text, actual_text)
-
- def test_success(self):
- self.assertResults(0, "benchmark-test")
-
- def test_tests_failed(self):
- self.assertResults(7, "7 benchmark tests failed")
-
-
-# FIXME: We should run this file as part of test-webkitpy.
-if __name__ == '__main__':
- BuildBotConfigLoader()._add_dependent_modules_to_sys_modules()
- from loadConfig import *
- c = {}
- loadBuilderConfig(c, is_test_mode_enabled=True)
- BuildStepsConstructorTest.generateTests()
- BuildStepsTest.generateTests()
- unittest.main()
Copied: trunk/Tools/CISupport/build-webkit-org/steps_unittest_old.py (from rev 270258, trunk/Tools/CISupport/build-webkit-org/steps_unittest.py) (0 => 270262)
--- trunk/Tools/CISupport/build-webkit-org/steps_unittest_old.py (rev 0)
+++ trunk/Tools/CISupport/build-webkit-org/steps_unittest_old.py 2020-11-30 21:45:39 UTC (rev 270262)
@@ -0,0 +1,696 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2011-2020 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import sys
+import os
+import unittest
+import json
+
+# Show DepricationWarnings come from buildbot - it isn't default with Python 2.7 or newer.
+# See https://bugs.webkit.org/show_bug.cgi?id=90161 for details.
+import warnings
+warnings.simplefilter('default')
+
+
+class BuildBotConfigLoader(object):
+ def _add_webkitpy_to_sys_path(self):
+ # When files are passed to the python interpreter on the command line (e.g. python test.py) __file__ is a relative path.
+ absolute_file_path = os.path.abspath(__file__)
+ webkit_org_config_dir = os.path.dirname(absolute_file_path)
+ worker_support_dir = os.path.dirname(webkit_org_config_dir)
+ webkit_tools_dir = os.path.dirname(worker_support_dir)
+ scripts_dir = os.path.join(webkit_tools_dir, 'Scripts')
+ sys.path.append(scripts_dir)
+
+ def _add_dependent_modules_to_sys_modules(self):
+ self._add_webkitpy_to_sys_path()
+ from webkitpy.autoinstalled import buildbot
+ sys.modules['buildbot'] = buildbot
+
+
+class RunWebKitTestsTest(unittest.TestCase):
+ def test_nrwt_leaks_parsing(self):
+ run_webkit_tests = RunWebKitTests() # pylint is confused by the way we import the module ... pylint: disable-msg=E0602
+ log_text = """
+12:44:24.295 77706 13981 total leaks found for a total of 197,936 bytes.
+12:44:24.295 77706 1 unique leaks found.
+"""
+ expected_incorrect_lines = [
+ '13981 total leaks found for a total of 197,936 bytes.',
+ '1 unique leaks found.',
+ ]
+ run_webkit_tests._parseRunWebKitTestsOutput(log_text)
+ self.assertEqual(run_webkit_tests.incorrectLayoutLines, expected_incorrect_lines)
+
+ def test_nrwt_missing_results(self):
+ run_webkit_tests = RunWebKitTests() # pylint is confused by the way we import the module ... pylint: disable-msg=E0602
+ log_text = """
+Expected to fail, but passed: (2)
+ animations/additive-transform-animations.html
+ animations/cross-fade-webkit-mask-box-image.html
+
+Unexpected flakiness: text-only failures (2)
+ fast/events/touch/touch-inside-iframe.html [ Failure Pass ]
+ http/tests/inspector-enabled/console-clear-arguments-on-frame-navigation.html [ Failure Pass ]
+
+Unexpected flakiness: timeouts (1)
+ svg/text/foreignObject-repaint.xml [ Timeout Pass ]
+
+Regressions: Unexpected missing results (1)
+ svg/custom/zero-path-square-cap-rendering2.svg [ Missing ]
+
+Regressions: Unexpected text-only failures (1)
+ svg/custom/zero-path-square-cap-rendering2.svg [ Failure ]
+"""
+ run_webkit_tests._parseRunWebKitTestsOutput(log_text)
+ self.assertEqual(set(run_webkit_tests.incorrectLayoutLines),
+ set(['2 new passes', '3 flakes', '1 missing results', '1 failures']))
+
+
+class StubStdio(object):
+ def __init__(self, stdio):
+ self._stdio = stdio
+
+ def getText(self):
+ return self._stdio
+
+
+class StubRemoteCommand(object):
+ def __init__(self, rc, stdio):
+ self.rc = rc
+ self.logs = {'stdio': StubStdio(stdio)}
+
+
+class RunJavaScriptCoreTestsTest(unittest.TestCase):
+ def assertResults(self, expected_result, expected_text, rc, stdio):
+ cmd = StubRemoteCommand(rc, stdio)
+ step = RunJavaScriptCoreTests()
+ step.commandComplete(cmd)
+ actual_results = step.evaluateCommand(cmd)
+ actual_text = step.getText2(cmd, actual_results)
+
+ self.assertEqual(expected_result, actual_results)
+ self.assertEqual(actual_text, expected_text)
+
+ def test_no_regressions_old_output(self):
+ self.assertResults(SUCCESS, ["jscore-test"], 0, """Results for Mozilla tests:
+ 0 regressions found.
+ 0 tests fixed.
+ OK.""")
+
+ def test_no_failure_new_output(self):
+ self.assertResults(SUCCESS, ["jscore-test"], 0, """Results for JSC stress tests:
+ 0 failures found.
+ OK.""")
+
+ def test_mozilla_failure_old_output(self):
+ self.assertResults(FAILURE, ["1 JSC test failed"], 1, """Results for Mozilla tests:
+ 1 regression found.
+ 0 tests fixed.""")
+
+ def test_mozilla_failures_old_output(self):
+ self.assertResults(FAILURE, ["2 JSC tests failed"], 1, """Results for Mozilla tests:
+ 2 regressions found.
+ 0 tests fixed.""")
+
+ def test_jsc_stress_failure_new_output(self):
+ self.assertResults(FAILURE, ["1 JSC test failed"], 1, """Results for JSC stress tests:
+ 1 failure found.""")
+
+ def test_jsc_stress_failures_new_output(self):
+ self.assertResults(FAILURE, ["5 JSC tests failed"], 1, """Results for JSC stress tests:
+ 5 failures found.""")
+
+ def test_jsc_stress_failures_with_binary_results_output(self):
+ self.assertResults(FAILURE, ["8 JSC tests failed"], 1, """Results for JSC stress tests:
+ 5 failures found.
+Results for JSC test binaries:
+ 3 failures found.""")
+
+ def test_jsc_stress_failures_with_binary_result_output(self):
+ self.assertResults(FAILURE, ["6 JSC tests failed"], 1, """Results for JSC stress tests:
+ 5 failures found.
+Results for JSC test binaries:
+ 1 failure found.""")
+
+
+class RunTest262TestsTest(unittest.TestCase):
+ def assertResults(self, expected_result, expected_text, rc, stdio):
+ cmd = StubRemoteCommand(rc, stdio)
+ step = RunTest262Tests()
+ step.commandComplete(cmd)
+ actual_results = step.evaluateCommand(cmd)
+ actual_text = step.getText2(cmd, actual_results)
+
+ self.assertEqual(expected_result, actual_results)
+ self.assertEqual(actual_text, expected_text)
+
+ def test_no_regressions_output(self):
+ self.assertResults(SUCCESS, ["test262-test"], 0, """
+-------------------------Settings------------------------
+Test262 Dir: JSTests/test262
+JSC: WebKitBuild/Release/jsc
+DYLD_FRAMEWORK_PATH: WebKitBuild/Release
+Child Processes: 32
+Config file: Tools/Scripts/test262/config.yaml
+Expectations file: Tools/Scripts/test262/expectations.yaml
+--------------------------------------------------------
+
+NEW PASS: test/annexB/built-ins/Date/prototype/getYear/length.js (default)
+NEW PASS test/language/expressions/class/fields-after-same-line-static-method-computed-symbol-names.js (default)
+
+Run with --save to save a new expectations file
+Saved all the results in Tools/Scripts/test262/results.yaml
+Summarizing results...
+See summarized results in Tools/Scripts/test262/results-summary.txt
+
+56071 tests ran
+0 expected tests failed
+0 tests newly fail
+2546 tests newly pass
+1241 test files skipped
+Done in 247 seconds!
+""")
+
+ def test_failure_output(self):
+ self.assertResults(FAILURE, ["1 Test262 test failed"], 0, """
+-------------------------Settings------------------------
+Test262 Dir: JSTests/test262
+JSC: WebKitBuild/Release/jsc
+DYLD_FRAMEWORK_PATH: WebKitBuild/Release
+Child Processes: 32
+Config file: Tools/Scripts/test262/config.yaml
+Expectations file: Tools/Scripts/test262/expectations.yaml
+--------------------------------------------------------
+
+! NEW FAIL: test/annexB/built-ins/Date/prototype/getYear/length.js (default)
+NEW PASS test/language/expressions/class/fields-after-same-line-static-method-computed-symbol-names.js (default)
+
+Run with --save to save a new expectations file
+Saved all the results in Tools/Scripts/test262/results.yaml
+Summarizing results...
+See summarized results in Tools/Scripts/test262/results-summary.txt
+
+56071 tests ran
+0 expected tests failed
+0 tests newly fail
+2546 tests newly pass
+1241 test files skipped
+Done in 247 seconds!
+""")
+
+ def test_failures_output(self):
+ self.assertResults(FAILURE, ["2 Test262 tests failed"], 0, """
+-------------------------Settings------------------------
+Test262 Dir: JSTests/test262
+JSC: WebKitBuild/Release/jsc
+DYLD_FRAMEWORK_PATH: WebKitBuild/Release
+Child Processes: 32
+Config file: Tools/Scripts/test262/config.yaml
+Expectations file: Tools/Scripts/test262/expectations.yaml
+--------------------------------------------------------
+
+NEW PASS test/language/statements/class/fields-after-same-line-static-async-gen-computed-names.js (default)
+! NEW FAIL: test/annexB/built-ins/Date/prototype/getYear/length.js (default)
+! NEW FAIL: test/annexB/built-ins/Date/prototype/getYear/length.js (strict mode)
+NEW PASS test/language/expressions/class/fields-after-same-line-static-method-computed-symbol-names.js (default)
+
+Run with --save to save a new expectations file
+Saved all the results in Tools/Scripts/test262/results.yaml
+Summarizing results...
+See summarized results in Tools/Scripts/test262/results-summary.txt
+
+56071 tests ran
+0 expected tests failed
+0 tests newly fail
+2546 tests newly pass
+1241 test files skipped
+Done in 247 seconds!
+""")
+
+
+class RunLLINTCLoopTestsTest(unittest.TestCase):
+ def assertResults(self, expected_result, expected_text, rc, stdio):
+ cmd = StubRemoteCommand(rc, stdio)
+ step = RunLLINTCLoopTests()
+ step.commandComplete(cmd)
+ actual_results = step.evaluateCommand(cmd)
+ actual_text = step.getText2(cmd, actual_results)
+
+ self.assertEqual(expected_result, actual_results)
+ self.assertEqual(actual_text, expected_text)
+
+ def test_failures(self):
+ self.assertResults(FAILURE, ['5 regressions found.'], 1, ' 5 regressions found.')
+
+ def test_failure(self):
+ self.assertResults(FAILURE, ['1 regression found.'], 1, ' 1 regression found.')
+
+ def test_no_failure(self):
+ self.assertResults(SUCCESS, ['webkit-jsc-cloop-test'], 0, ' 0 regressions found.')
+
+
+class Run32bitJSCTestsTest(unittest.TestCase):
+ def assertResults(self, expected_result, expected_text, rc, stdio):
+ cmd = StubRemoteCommand(rc, stdio)
+ step = Run32bitJSCTests()
+ step.commandComplete(cmd)
+ actual_results = step.evaluateCommand(cmd)
+ actual_text = step.getText2(cmd, actual_results)
+
+ self.assertEqual(expected_result, actual_results)
+ self.assertEqual(actual_text, expected_text)
+
+ def test_failures(self):
+ self.assertResults(FAILURE, ['5 regressions found.'], 1, ' 5 failures found.')
+
+ def test_failure(self):
+ self.assertResults(FAILURE, ['1 regression found.'], 1, ' 1 failure found.')
+
+ def test_no_failure(self):
+ self.assertResults(SUCCESS, ['webkit-32bit-jsc-test'], 0, ' 0 failures found.')
+
+
+class RunAPITestsTest(unittest.TestCase):
+ def assertFailures(self, expected_failure_count, stdio):
+ if expected_failure_count:
+ rc = 1
+ expected_results = FAILURE
+ plural_suffix = "" if expected_failure_count == 1 else "s"
+ expected_text = '%d api test%s failed or timed out' % (expected_failure_count, plural_suffix)
+ else:
+ rc = 0
+ expected_results = SUCCESS
+ expected_text = 'run-api-tests'
+
+ cmd = StubRemoteCommand(rc, stdio)
+ step = RunAPITests()
+ step.commandComplete(cmd)
+ actual_results = step.evaluateCommand(cmd)
+ actual_failure_count = step.failedTestCount
+ actual_text = step.getText(cmd, actual_results)[0]
+
+ self.assertEqual(expected_results, actual_results)
+ self.assertEqual(expected_failure_count, actual_failure_count)
+ self.assertEqual(expected_text, actual_text)
+
+ def test_no_failures_or_timeouts(self):
+ self.assertFailures(0, """...
+worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
+worker/0 TestWTF.WTF_Variant.Ref Passed
+worker/0 TestWTF.WTF_Variant.RefPtr Passed
+worker/0 TestWTF.WTF_Variant.RetainPtr Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
+worker/0 exiting
+Ran 1888 tests of 1888 with 1888 successful
+------------------------------
+All tests successfully passed!
+""")
+
+ def test_no_failures_or_timeouts_with_disabled(self):
+ self.assertFailures(0, """...
+worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
+worker/0 TestWTF.WTF_Variant.Ref Passed
+worker/0 TestWTF.WTF_Variant.RefPtr Passed
+worker/0 TestWTF.WTF_Variant.RetainPtr Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
+worker/0 exiting
+Ran 1881 tests of 1888 with 1881 successful
+------------------------------
+All tests successfully passed!
+""")
+
+ def test_one_failure(self):
+ self.assertFailures(1, """...
+worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
+worker/0 TestWTF.WTF_Variant.Ref Passed
+worker/0 TestWTF.WTF_Variant.RefPtr Passed
+worker/0 TestWTF.WTF_Variant.RetainPtr Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
+worker/0 exiting
+Ran 1888 tests of 1888 with 1887 successful
+------------------------------
+Test suite failed
+
+Crashed
+
+ TestWTF.WTF.StringConcatenate_Unsigned
+ **FAIL** WTF.StringConcatenate_Unsigned
+
+ C:\\cygwin\\home\\buildbot\\worker\\win-release\\build\\Tools\\TestWebKitAPI\\Tests\\WTF\\StringConcatenate.cpp:84
+ Value of: makeString("hello ", static_cast<unsigned short>(42) , " world")
+ Actual: hello 42 world
+ Expected: "hello * world"
+ Which is: 74B00C9C
+
+Testing completed, Exit status: 3
+""")
+
+ def test_multiple_failures(self):
+ self.assertFailures(2, """...
+worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
+worker/0 TestWTF.WTF_Variant.Ref Passed
+worker/0 TestWTF.WTF_Variant.RefPtr Passed
+worker/0 TestWTF.WTF_Variant.RetainPtr Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
+worker/0 exiting
+Ran 1888 tests of 1888 with 1886 successful
+------------------------------
+Test suite failed
+
+Crashed
+
+ TestWTF.WTF.StringConcatenate_Unsigned
+ **FAIL** WTF.StringConcatenate_Unsigned
+
+ C:\\cygwin\\home\\buildbot\\worker\\win-release\\build\\Tools\\TestWebKitAPI\\Tests\\WTF\\StringConcatenate.cpp:84
+ Value of: makeString("hello ", static_cast<unsigned short>(42) , " world")
+ Actual: hello 42 world
+ Expected: "hello * world"
+ Which is: 74B00C9C
+
+ TestWTF.WTF_Expected.Unexpected
+ **FAIL** WTF_Expected.Unexpected
+
+ C:\\cygwin\\home\\buildbot\\worker\\win-release\\build\\Tools\\TestWebKitAPI\\Tests\\WTF\\Expected.cpp:96
+ Value of: s1
+ Actual: oops
+ Expected: s0
+ Which is: oops
+
+Testing completed, Exit status: 3
+""")
+
+ def test_one_timeout(self):
+ self.assertFailures(1, """...
+worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
+worker/0 TestWTF.WTF_Variant.Ref Passed
+worker/0 TestWTF.WTF_Variant.RefPtr Passed
+worker/0 TestWTF.WTF_Variant.RetainPtr Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
+worker/0 exiting
+Ran 1888 tests of 1888 with 1887 successful
+------------------------------
+Test suite failed
+
+Timeout
+
+ TestWTF.WTF_PoisonedUniquePtrForTriviallyDestructibleArrays.Assignment
+
+Testing completed, Exit status: 3
+""")
+
+ def test_multiple_timeouts(self):
+ self.assertFailures(2, """...
+worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
+worker/0 TestWTF.WTF_Variant.Ref Passed
+worker/0 TestWTF.WTF_Variant.RefPtr Passed
+worker/0 TestWTF.WTF_Variant.RetainPtr Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
+worker/0 exiting
+Ran 1888 tests of 1888 with 1886 successful
+------------------------------
+Test suite failed
+
+Timeout
+
+ TestWTF.WTF_PoisonedUniquePtrForTriviallyDestructibleArrays.Assignment
+ TestWTF.WTF_Lock.ContendedShortSection
+
+Testing completed, Exit status: 3
+""")
+
+ def test_multiple_failures_and_timeouts(self):
+ self.assertFailures(4, """...
+worker/0 TestWTF.WTF_Variant.OperatorAmpersand Passed
+worker/0 TestWTF.WTF_Variant.Ref Passed
+worker/0 TestWTF.WTF_Variant.RefPtr Passed
+worker/0 TestWTF.WTF_Variant.RetainPtr Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingMakeVisitor Passed
+worker/0 TestWTF.WTF_Variant.VisitorUsingSwitchOn Passed
+worker/0 exiting
+Ran 1888 tests of 1888 with 1884 successful
+------------------------------
+Test suite failed
+
+Crashed
+
+ TestWTF.WTF.StringConcatenate_Unsigned
+ **FAIL** WTF.StringConcatenate_Unsigned
+
+ C:\\cygwin\\home\\buildbot\\worker\\win-release\\build\\Tools\\TestWebKitAPI\\Tests\\WTF\\StringConcatenate.cpp:84
+ Value of: makeString("hello ", static_cast<unsigned short>(42) , " world")
+ Actual: hello 42 world
+ Expected: "hello * world"
+ Which is: 74B00C9C
+
+ TestWTF.WTF_Expected.Unexpected
+ **FAIL** WTF_Expected.Unexpected
+
+ C:\\cygwin\\home\\buildbot\\worker\\win-release\\build\\Tools\\TestWebKitAPI\\Tests\\WTF\\Expected.cpp:96
+ Value of: s1
+ Actual: oops
+ Expected: s0
+ Which is: oops
+
+Timeout
+
+ TestWTF.WTF_PoisonedUniquePtrForTriviallyDestructibleArrays.Assignment
+ TestWTF.WTF_Lock.ContendedShortSection
+
+Testing completed, Exit status: 3
+""")
+
+
+class BuildStepsConstructorTest(unittest.TestCase):
+ # "Passing a BuildStep subclass to factory.addStep is deprecated. Please pass a BuildStep instance instead. Support will be dropped in v0.8.7."
+ # It checks if all builder's all buildsteps can be insantiated after migration.
+ # https://bugs.webkit.org/show_bug.cgi?id=89001
+ # http://buildbot.net/buildbot/docs/0.8.6p1/manual/customization.html#writing-buildstep-constructors
+
+ @staticmethod
+ def generateTests():
+ for builderNumber, builder in enumerate(c['builders']):
+ for stepNumber, step in enumerate(builder['factory'].steps):
+ builderName = builder['name'].encode('ascii', 'ignore')
+ setattr(BuildStepsConstructorTest, 'test_builder%02d_step%02d' % (builderNumber, stepNumber), BuildStepsConstructorTest.createTest(builderName, step))
+
+ @staticmethod
+ def createTest(builderName, step):
+ def doTest(self):
+ try:
+ buildStepFactory, kwargs = step
+ buildStepFactory(**kwargs)
+ except TypeError as e:
+ buildStepName = str(buildStepFactory).split('.')[-1]
+ self.fail("Error during instantiation %s buildstep for %s builder: %s\n" % (buildStepName, builderName, e))
+ return doTest
+
+
+expected_build_steps = {
+ 'Apple-Win-10-Debug-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile', 'download-built-product', 'extract-built-product', 'jscore-test', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-Win-10-Release-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile', 'download-built-product', 'extract-built-product', 'jscore-test', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-Win-10-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'Apple-Win-10-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+
+ 'Apple-BigSur-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'Apple-BigSur-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'Apple-BigSur-Debug-WK1-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-BigSur-Debug-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-BigSur-Release-WK1-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-BigSur-Release-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+
+ 'Apple-Catalina-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'Apple-Catalina-Debug-JSC-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'jscore-test'],
+ 'Apple-Catalina-Debug-Test262-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'test262-test'],
+ 'Apple-Catalina-Debug-WK1-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-Catalina-Debug-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-Catalina-Debug-WK2-GPUProcess-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-Catalina-LLINT-CLoop-BuildAndTest': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'webkit-jsc-cloop-test'],
+ 'Apple-Catalina-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'Apple-Catalina-Release-JSC-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'jscore-test'],
+ 'Apple-Catalina-Release-Test262-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'test262-test'],
+ 'Apple-Catalina-Release-WK1-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-Catalina-Release-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-Catalina-Release-WK2-Perf': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'perf-test'],
+ 'Apple-Catalina-Release-WK2-WebGL-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+
+ 'Apple-Mojave-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'Apple-Mojave-Debug-WK1-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-Mojave-Debug-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-Mojave-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'Apple-Mojave-Release-WK1-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-Mojave-Release-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'lldb-webkit-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-Mojave-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+
+ 'Apple-iOS-14-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
+ 'Apple-iOS-14-Simulator-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'Apple-iOS-14-Simulator-Release-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+
+ 'Apple-iOS-14-Simulator-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'Apple-iOS-14-Simulator-Debug-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+
+ 'Apple-iPadOS-14-Simulator-Release-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'Apple-iPadOS-14-Simulator-Debug-WK2-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wait-for-crash-collection', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'trigger-crash-log-submission', 'archive-test-results', 'upload', 'extract-test-results'],
+
+ 'Apple-tvOS-14-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
+ 'Apple-tvOS-Simulator-14-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
+
+ 'Apple-watchOS-7-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
+ 'Apple-watchOS-Simulator-7-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
+
+ 'JSCOnly-Linux-ARMv7-Thumb2-Release': ['configure-build', 'svn', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'jscore-test'],
+ 'JSCOnly-Linux-ARMv7-Thumb2-SoftFP-Release': ['configure-build', 'svn', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'jscore-test'],
+ 'JSCOnly-Linux-AArch64-Release': ['configure-build', 'svn', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'jscore-test'],
+ 'JSCOnly-Linux-MIPS32el-Release': ['configure-build', 'svn', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'jscore-test'],
+
+ 'GTK-Linux-64-bit-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'GTK-Linux-64-bit-Debug-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'layout-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'archive-test-results', 'upload', 'extract-test-results', 'API-tests'],
+ 'GTK-Linux-64-bit-Debug-WebDriver-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'webdriver-test'],
+ 'GTK-Linux-64-bit-Debug-JS-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'jscore-test', 'test262-test'],
+ 'GTK-Linux-64-bit-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'generate-jsc-bundle', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'GTK-Linux-64-bit-Release-Perf': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'perf-test', 'benchmark-test'],
+ 'GTK-Linux-64-bit-Release-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'layout-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'archive-test-results', 'upload', 'extract-test-results', 'API-tests'],
+ 'GTK-Linux-64-bit-Release-WebDriver-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'webdriver-test'],
+ 'GTK-Linux-64-bit-Release-JS-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'jscore-test', 'test262-test'],
+ 'GTK-Linux-64-bit-Release-Wayland-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'layout-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'archive-test-results', 'upload', 'extract-test-results', 'API-tests', 'webdriver-test'],
+ 'GTK-Linux-64-bit-Release-Ubuntu-LTS-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
+ 'GTK-Linux-64-bit-Release-Debian-Stable-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
+ 'GTK-Linux-64-bit-Release-GTK4-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'layout-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'archive-test-results', 'upload', 'extract-test-results', 'API-tests', 'webdriver-test'],
+
+ 'PlayStation-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
+ 'PlayStation-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit'],
+
+ 'WinCairo-64-bit-JSC-Debug-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'jscore-test'],
+ 'WinCairo-64-bit-JSC-Release-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'jscore-test'],
+ 'WinCairo-64-bit-WKL-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'WinCairo-64-bit-WKL-Debug-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wincairo-requirements', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'archive-test-results', 'upload', 'extract-test-results'],
+ 'WinCairo-64-bit-WKL-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'WinCairo-64-bit-WKL-Release-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'download-built-product', 'extract-built-product', 'wincairo-requirements', 'layout-test', 'run-api-tests', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'archive-test-results', 'upload', 'extract-test-results'],
+
+ 'WPE-Linux-64-bit-Release-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'WPE-Linux-64-bit-Release-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'layout-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'archive-test-results', 'upload', 'extract-test-results', 'API-tests', 'webdriver-test'],
+ 'WPE-Linux-64-bit-Release-JS-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'jscore-test', 'test262-test'],
+ 'WPE-Linux-64-bit-Debug-Build': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'archive-built-product', 'upload', 'transfer-to-s3', 'trigger'],
+ 'WPE-Linux-64-bit-Debug-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'layout-test', 'webkitpy-test', 'webkitperl-test', 'bindings-generation-tests', 'builtins-generator-tests', 'dashboard-tests', 'archive-test-results', 'upload', 'extract-test-results', 'API-tests', 'webdriver-test'],
+ 'WPE-Linux-64-bit-Debug-JS-Tests': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'download-built-product', 'extract-built-product', 'jscore-test', 'test262-test'],
+ 'GTK-Linux-64bit-Release-Packaging-Nightly-Ubuntu1804': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'generate-minibrowser-bundle'],
+ 'GTK-Linux-64bit-Release-Packaging-Nightly-Ubuntu2004': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'generate-minibrowser-bundle'],
+ 'WPE-Linux-64bit-Release-Packaging-Nightly-Ubuntu1804': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'generate-minibrowser-bundle'],
+ 'WPE-Linux-64bit-Release-Packaging-Nightly-Ubuntu2004': ['configure-build', 'svn', 'kill-old-processes', 'delete-WebKitBuild-directory', 'delete-stale-build-files', 'jhbuild', 'compile-webkit', 'generate-minibrowser-bundle'],
+}
+
+
+class BuildStepsTest(unittest.TestCase):
+ @staticmethod
+ def generateTests():
+ for builder in c['builders']:
+ builderName = builder['name'].encode('ascii', 'ignore')
+ setattr(BuildStepsTest, 'test_builder %s' % builderName, BuildStepsTest.createTest(builder))
+
+ @staticmethod
+ def createTest(builder):
+ def doTest(self):
+ buildSteps = []
+ for step in builder['factory'].steps:
+ buildSteps.append(step[0].name)
+ self.assertTrue(builder['name'] in expected_build_steps, "Missing expected result for builder: %s\n Actual result is %s" % (builder['name'], buildSteps))
+ self.assertListEqual(expected_build_steps[builder['name']], buildSteps)
+
+ return doTest
+
+ def test_unnecessary_expected_results(self):
+ builders = set()
+ for builder in c['builders']:
+ builders.add(builder['name'].encode('ascii', 'ignore'))
+
+ for builder in expected_build_steps:
+ self.assertTrue(builder in builders, "Builder %s doesn't exist, but has unnecessary expected results" % builder)
+
+
+class RunAndUploadPerfTestsTest(unittest.TestCase):
+ def assertResults(self, rc, expected_text):
+ cmd = StubRemoteCommand(rc, expected_text)
+ step = RunAndUploadPerfTests()
+ step.commandComplete(cmd)
+ actual_results = step.evaluateCommand(cmd)
+ actual_text = str(step.getText2(cmd, actual_results)[0])
+ self.assertEqual(expected_text, actual_text)
+
+ def test_success(self):
+ self.assertResults(0, "perf-test")
+
+ def test_tests_failed(self):
+ self.assertResults(5, "5 perf tests failed")
+
+ def test_build_bad_build(self):
+ self.assertResults(255, "build not up to date")
+
+ def test_build_bad_source_json(self):
+ self.assertResults(254, "worker config JSON error")
+
+ def test_build_bad_marge(self):
+ self.assertResults(253, "output JSON merge error")
+
+ def test_build_bad_failed_uploading(self):
+ self.assertResults(252, "upload error")
+
+ def test_build_bad_preparation(self):
+ self.assertResults(251, "system dependency error")
+
+ def test_buildbot_timeout(self):
+ self.assertResults(-1, "timeout")
+
+
+class RunBenchmarkTest(unittest.TestCase):
+ def assertResults(self, rc, expected_text):
+ cmd = StubRemoteCommand(rc, expected_text)
+ step = RunBenchmarkTests()
+ step.commandComplete(cmd)
+ actual_results = step.evaluateCommand(cmd)
+ actual_text = str(step.getText2(cmd, actual_results)[0])
+ self.assertEqual(expected_text, actual_text)
+
+ def test_success(self):
+ self.assertResults(0, "benchmark-test")
+
+ def test_tests_failed(self):
+ self.assertResults(7, "7 benchmark tests failed")
+
+
+# FIXME: We should run this file as part of test-webkitpy.
+if __name__ == '__main__':
+ BuildBotConfigLoader()._add_dependent_modules_to_sys_modules()
+ from loadConfig import *
+ c = {}
+ loadBuilderConfig(c, is_test_mode_enabled=True)
+ BuildStepsConstructorTest.generateTests()
+ BuildStepsTest.generateTests()
+ unittest.main()
Modified: trunk/Tools/CISupport/ews-build/steps.py (270261 => 270262)
--- trunk/Tools/CISupport/ews-build/steps.py 2020-11-30 21:42:48 UTC (rev 270261)
+++ trunk/Tools/CISupport/ews-build/steps.py 2020-11-30 21:45:39 UTC (rev 270262)
@@ -1125,9 +1125,9 @@
class RunBuildWebKitOrgUnitTests(shell.ShellCommand):
- name = 'build-webkit-org-unit-tests'
+ name = 'build-webkit-old-unit-tests'
description = ['build-webkit-unit-tests running']
- command = ['python', 'steps_unittest.py']
+ command = ['python', 'steps_unittest_old.py']
def __init__(self, **kwargs):
shell.ShellCommand.__init__(self, workdir='build/Tools/CISupport/build-webkit-org', timeout=2 * 60, logEnviron=False, **kwargs)
@@ -1134,8 +1134,8 @@
def getResultSummary(self):
if self.results == SUCCESS:
- return {u'step': u'Passed build.webkit.org unit tests'}
- return {u'step': u'Failed build.webkit.org unit tests'}
+ return {u'step': u'Passed build.webkit.org old unit tests'}
+ return {u'step': u'Failed build.webkit.org old unit tests'}
class RunEWSUnitTests(shell.ShellCommand):
Modified: trunk/Tools/CISupport/ews-build/steps_unittest.py (270261 => 270262)
--- trunk/Tools/CISupport/ews-build/steps_unittest.py 2020-11-30 21:42:48 UTC (rev 270261)
+++ trunk/Tools/CISupport/ews-build/steps_unittest.py 2020-11-30 21:45:39 UTC (rev 270262)
@@ -737,11 +737,11 @@
ExpectShell(workdir='build/Tools/CISupport/build-webkit-org',
timeout=120,
logEnviron=False,
- command=['python', 'steps_unittest.py'],
+ command=['python', 'steps_unittest_old.py'],
)
+ 0,
)
- self.expectOutcome(result=SUCCESS, state_string='Passed build.webkit.org unit tests')
+ self.expectOutcome(result=SUCCESS, state_string='Passed build.webkit.org old unit tests')
return self.runStep()
def test_failure(self):
@@ -750,12 +750,12 @@
ExpectShell(workdir='build/Tools/CISupport/build-webkit-org',
timeout=120,
logEnviron=False,
- command=['python', 'steps_unittest.py'],
+ command=['python', 'steps_unittest_old.py'],
)
+ ExpectShell.log('stdio', stdout='Unhandled Error. Traceback (most recent call last): Keys in cmd missing from expectation: [logfiles.json]')
+ 2,
)
- self.expectOutcome(result=FAILURE, state_string='Failed build.webkit.org unit tests')
+ self.expectOutcome(result=FAILURE, state_string='Failed build.webkit.org old unit tests')
return self.runStep()
Modified: trunk/Tools/ChangeLog (270261 => 270262)
--- trunk/Tools/ChangeLog 2020-11-30 21:42:48 UTC (rev 270261)
+++ trunk/Tools/ChangeLog 2020-11-30 21:45:39 UTC (rev 270262)
@@ -1,3 +1,19 @@
+2020-11-30 Aakash Jain <[email protected]>
+
+ [build.webkit.org] Move old buildbot unittests to steps_unittest_old.py
+ https://bugs.webkit.org/show_bug.cgi?id=219364
+
+ Reviewed by Jonathan Bedard.
+
+ * CISupport/build-webkit-org/committer_auth_unittest.py: Removed.
+ * CISupport/build-webkit-org/committer_auth_unittest_old.py: Moved from Tools/CISupport/build-webkit-org/committer_auth_unittest.py.
+ * CISupport/build-webkit-org/steps_unittest.py: Removed.
+ * CISupport/build-webkit-org/steps_unittest_old.py: Moved from Tools/CISupport/build-webkit-org/steps_unittest.py.
+ * CISupport/ews-build/steps.py:
+ (RunBuildWebKitOrgUnitTests): Updated ews configuration appropriately.
+ (RunBuildWebKitOrgUnitTests.getResultSummary):
+ * CISupport/ews-build/steps_unittest.py: Updated ews unit-tests.
+
2020-11-30 Jonathan Bedard <[email protected]>
[webkitscmpy] Support remote repositories in git-webkit