Changeset 286576 in webkit
- Timestamp:
- Dec 6, 2021, 4:18:20 PM (5 years ago)
- Location:
- trunk/Tools
- Files:
-
- 9 added
- 8 edited
- 6 copied
-
ChangeLog (modified) (1 diff)
-
Scripts/libraries/reporelaypy (added)
-
Scripts/libraries/reporelaypy/reporelaypy (added)
-
Scripts/libraries/reporelaypy/reporelaypy/__init__.py (copied) (copied from trunk/Tools/Scripts/libraries/webkitflaskpy/webkitflaskpy/__init__.py ) (3 diffs)
-
Scripts/libraries/reporelaypy/reporelaypy/checkout.py (added)
-
Scripts/libraries/reporelaypy/reporelaypy/checkoutroute.py (added)
-
Scripts/libraries/reporelaypy/reporelaypy/database.py (added)
-
Scripts/libraries/reporelaypy/reporelaypy/tests (added)
-
Scripts/libraries/reporelaypy/reporelaypy/tests/checkout_unittest.py (copied) (copied from trunk/Tools/Scripts/libraries/webkitflaskpy/setup.py ) (2 diffs)
-
Scripts/libraries/reporelaypy/reporelaypy/tests/checkoutroute_unittest.py (added)
-
Scripts/libraries/reporelaypy/reporelaypy/tests/database_unittest.py (added)
-
Scripts/libraries/reporelaypy/reporelaypy/webserver.py (copied) (copied from trunk/Tools/Scripts/libraries/webkitflaskpy/setup.py ) (2 diffs)
-
Scripts/libraries/reporelaypy/run (added)
-
Scripts/libraries/reporelaypy/setup.py (copied) (copied from trunk/Tools/Scripts/libraries/webkitflaskpy/setup.py ) (3 diffs)
-
Scripts/libraries/resultsdbpy/resultsdbpy/__init__.py (modified) (1 diff)
-
Scripts/libraries/resultsdbpy/resultsdbpy/flask_support/flask_testcase.py (modified) (3 diffs)
-
Scripts/libraries/resultsdbpy/setup.py (modified) (1 diff)
-
Scripts/libraries/webkitflaskpy/setup.py (modified) (1 diff)
-
Scripts/libraries/webkitflaskpy/webkitflaskpy/__init__.py (modified) (2 diffs)
-
Scripts/libraries/webkitflaskpy/webkitflaskpy/mock_app.py (copied) (copied from trunk/Tools/Scripts/libraries/webkitflaskpy/setup.py ) (2 diffs)
-
Scripts/libraries/webkitflaskpy/webkitflaskpy/response.py (copied) (copied from trunk/Tools/Scripts/libraries/webkitflaskpy/setup.py ) (2 diffs)
-
Scripts/webkitpy/__init__.py (modified) (1 diff)
-
Scripts/webkitpy/test/main.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r286569 r286576 1 2021-12-04 Jonathan Bedard <jbedard@apple.com> 2 3 [reporelaypy] Add implementation of commits.webkit.org 4 https://bugs.webkit.org/show_bug.cgi?id=233734 5 <rdar://problem/85945101> 6 7 Reviewed by Dewei Zhu. 8 9 As commits.webkit.org becomes more important to WebKit development, we need to apply 10 our normal robust testing and review to the code backing it. 11 12 * Scripts/libraries/reporelaypy/reporelaypy/__init__.py: Add entrypoint to library. 13 * Scripts/libraries/reporelaypy/reporelaypy/checkout.py: Added. 14 (Checkout): Abstraction managing local repository checkout. 15 * Scripts/libraries/reporelaypy/reporelaypy/checkoutroute.py: Added. 16 (Redirector): Generates redirects for certain SCM services. 17 (CheckoutRoute): http routes returning information based on a checkout. 18 * Scripts/libraries/reporelaypy/reporelaypy/database.py: Added. 19 (Database): A connection to a true Redis or TinyRedis database. 20 * Scripts/libraries/reporelaypy/reporelaypy/tests/checkout_unittest.py: 21 (CheckoutUnittest): 22 * Scripts/libraries/reporelaypy/reporelaypy/tests/checkoutroute_unittest.py: Added. 23 (RedirectorUnittest): 24 (CheckoutRouteUnittest): 25 * Scripts/libraries/reporelaypy/reporelaypy/tests/database_unittest.py: Added. 26 (DatabaseUnittest): 27 * Scripts/libraries/reporelaypy/reporelaypy/webserver.py: Copied from Tools/Scripts/libraries/webkitflaskpy/setup.py. 28 (health): 29 * Scripts/libraries/reporelaypy/run: Added. 30 * Scripts/libraries/reporelaypy/setup.py: Added. 31 * Scripts/libraries/resultsdbpy/resultsdbpy/__init__.py: Bump version. 32 * Scripts/libraries/resultsdbpy/resultsdbpy/flask_support/flask_testcase.py: 33 (FlaskTestCase.run_with_mock_webserver.decorator.real_method): 34 (FlaskRequestsResponse): Moved to webkitflaskpy. 35 * Scripts/libraries/webkitflaskpy/setup.py: Bump version, update library description. 36 * Scripts/libraries/webkitflaskpy/webkitflaskpy/__init__.py: Bump version. 37 * Scripts/libraries/webkitflaskpy/webkitflaskpy/mock_app.py: Added. 38 (mock_app): Setup a flask app for testing. 39 * Scripts/libraries/webkitflaskpy/webkitflaskpy/response.py: Added. 40 (Response): Move FlaskRequestsResponse to more generic location. 41 * Scripts/webkitpy/__init__.py: Include reporelaypy for testing. 42 * Scripts/webkitpy/test/main.py: 43 (main): Include reporelaypy for testing. 44 (Tester._run_tests): Ditto. 45 1 46 2021-12-06 Ryan Haddad <ryanhaddad@apple.com> 2 47 -
trunk/Tools/Scripts/libraries/reporelaypy/reporelaypy/__init__.py
r286574 r286576 1 # Copyright (C) 202 0Apple Inc. All rights reserved.1 # Copyright (C) 2021 Apple Inc. All rights reserved. 2 2 # 3 3 # Redistribution and use in source and binary forms, with or without … … 25 25 26 26 27 def _maybe_add_webkit corepy_path():28 # Hopefully we're beside webkit corepy, otherwise webkitcorepy will need to be installed.27 def _maybe_add_webkit_python_library_paths(): 28 # Hopefully we're beside webkit*py libraries, otherwise webkit*py will need to be installed. 29 29 libraries_path = os.path.dirname(os.path.dirname(os.path.abspath(os.path.dirname(__file__)))) 30 webkitcorepy_path = os.path.join(libraries_path, 'webkitcorepy') 31 if os.path.isdir(webkitcorepy_path) and os.path.isdir(os.path.join(webkitcorepy_path, 'webkitcorepy')) and webkitcorepy_path not in sys.path: 32 sys.path.insert(0, webkitcorepy_path) 30 for library in ['webkitcorepy', 'webkitscmpy', 'webkitflaskpy']: 31 library_path = os.path.join(libraries_path, library) 32 if os.path.isdir(library_path) and os.path.isdir(os.path.join(library_path, library)) and library_path not in sys.path: 33 sys.path.insert(0, library_path) 33 34 34 35 35 _maybe_add_webkit corepy_path()36 _maybe_add_webkit_python_library_paths() 36 37 37 38 try: … … 44 45 ) 45 46 46 version = Version(0, 2, 0)47 version = Version(0, 1, 0) 47 48 48 AutoInstall.register(Package('click', Version(7, 1, 2))) 49 AutoInstall.register(Package('flask', Version(1, 1, 2))) 50 AutoInstall.register(Package('itsdangerous', Version(1, 1, 0))) 51 AutoInstall.register(Package('jinja2', Version(2, 11, 3))) 52 AutoInstall.register(Package('markupsafe', Version(1, 1, 1))) 53 AutoInstall.register(Package('werkzeug', Version(1, 0, 1))) 49 import webkitflaskpy 54 50 55 from webkitflaskpy.authed_blueprint import AuthedBlueprint # noqa: E402 51 from reporelaypy.checkout import Checkout 52 from reporelaypy.database import Database 53 from reporelaypy.checkoutroute import CheckoutRoute, Redirector 56 54 57 name = 'webkitflaskpy' 55 AutoInstall.register(Package('fakeredis', Version(1, 5, 2))) 56 AutoInstall.register(Package('hiredis', Version(1, 1, 0))) 57 AutoInstall.register(Package('redis', Version(3, 5, 3))) 58 59 name = 'reporelaypy' -
trunk/Tools/Scripts/libraries/reporelaypy/reporelaypy/tests/checkout_unittest.py
r286574 r286576 1 # Copyright (C) 202 0Apple Inc. All rights reserved.1 # Copyright (C) 2021 Apple Inc. All rights reserved. 2 2 # 3 3 # Redistribution and use in source and binary forms, with or without … … 21 21 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 22 23 from setuptools import setup 23 import os 24 import unittest 25 26 from reporelaypy import Checkout 27 from webkitcorepy import testing, OutputCapture 28 from webkitscmpy import mocks 24 29 25 30 26 def readme(): 27 with open('README.md') as f: 28 return f.read() 31 class CheckoutUnittest(testing.PathTestCase): 32 basepath = 'mock/repository' 29 33 34 def setUp(self): 35 super(CheckoutUnittest, self).setUp() 36 os.mkdir(os.path.join(self.path, '.git')) 30 37 31 setup( 32 name='webkitflaskpy', 33 version='0.2.0', 34 description='Library for visualizing, processing and storing test results.', 35 long_description=readme(), 36 classifiers=[ 37 'Development Status :: 4 - Beta', 38 'Framework :: Flask', 39 'Intended Audience :: Developers', 40 'License :: OSI Approved :: BSD License', 41 'Operating System :: MacOS', 42 'Natural Language :: English', 43 'Programming Language :: Python :: 3 :: Only', 44 'Topic :: Software Development :: Libraries :: Python Modules', 45 'Topic :: Software Development :: Testing', 46 ], 47 keywords='web javascript webkit', 48 url='https://github.com/WebKit/WebKit/tree/main/Tools/Scripts/libraries/webkitflaskpy', 49 author='Jonathan Bedard', 50 author_email='jbedard@apple.com', 51 license='Modified BSD', 52 packages=[ 53 'webkitflaskpy', 54 ], 55 install_requires=[ 56 'Flask', 57 'Flask-Cors', 58 'gunicorn', 59 'webkitcorepy', 60 ], 61 include_package_data=True, 62 zip_safe=False, 63 ) 38 def test_constructor_sentinal(self): 39 with mocks.local.Git(self.path) as repo, OutputCapture(): 40 with open(os.path.join(os.path.dirname(self.path), 'cloned'), 'w') as sentinal: 41 sentinal.write('yes\n') 42 Checkout(path=self.path, url=repo.remote, sentinal=True) 43 44 def test_constructor_no_sentinal(self): 45 with mocks.local.Git(self.path) as repo: 46 Checkout(path=self.path, url=repo.remote, sentinal=False) 47 48 with self.assertRaises(Checkout.Exception): 49 Checkout(path=self.path, url=None, sentinal=True) -
trunk/Tools/Scripts/libraries/reporelaypy/reporelaypy/webserver.py
r286574 r286576 1 # Copyright (C) 202 0Apple Inc. All rights reserved.1 # Copyright (C) 2021 Apple Inc. All rights reserved. 2 2 # 3 3 # Redistribution and use in source and binary forms, with or without … … 21 21 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 22 23 from setuptools import setup 23 import os 24 25 autoinstall_path = os.environ.get('AUTOINSTALL_PATH') 26 if autoinstall_path: 27 from webkitcorepy import AutoInstall 28 AutoInstall.set_directory(autoinstall_path) 29 30 from flask import Flask, current_app, json as fjson 31 from reporelaypy import Checkout, CheckoutRoute, Database, Redirector 32 33 app = Flask(__name__) 34 35 database = Database() 36 checkout = Checkout.from_json(os.environ.get('CHECKOUT', '{}')) 37 checkout_routes = CheckoutRoute( 38 checkout, redirectors=Redirector.from_json(os.environ.get('REDIRECTORS', '[]')), 39 import_name=__name__, database=database, 40 ) 24 41 25 42 26 def readme(): 27 with open('README.md') as f:28 return f.read()43 @app.route('/__health') 44 def health(): 45 return 'ready' if checkout.repository else 'cloning' 29 46 30 47 31 setup( 32 name='webkitflaskpy', 33 version='0.2.0', 34 description='Library for visualizing, processing and storing test results.', 35 long_description=readme(), 36 classifiers=[ 37 'Development Status :: 4 - Beta', 38 'Framework :: Flask', 39 'Intended Audience :: Developers', 40 'License :: OSI Approved :: BSD License', 41 'Operating System :: MacOS', 42 'Natural Language :: English', 43 'Programming Language :: Python :: 3 :: Only', 44 'Topic :: Software Development :: Libraries :: Python Modules', 45 'Topic :: Software Development :: Testing', 46 ], 47 keywords='web javascript webkit', 48 url='https://github.com/WebKit/WebKit/tree/main/Tools/Scripts/libraries/webkitflaskpy', 49 author='Jonathan Bedard', 50 author_email='jbedard@apple.com', 51 license='Modified BSD', 52 packages=[ 53 'webkitflaskpy', 54 ], 55 install_requires=[ 56 'Flask', 57 'Flask-Cors', 58 'gunicorn', 59 'webkitcorepy', 60 ], 61 include_package_data=True, 62 zip_safe=False, 63 ) 48 app.register_blueprint(checkout_routes) 49 50 51 if __name__ == '__main__': 52 port = int(os.environ.get('PORT', 5000)) 53 app.run(host='0.0.0.0', port=port) -
trunk/Tools/Scripts/libraries/reporelaypy/setup.py
r286574 r286576 1 # Copyright (C) 202 0Apple Inc. All rights reserved.1 # Copyright (C) 2021 Apple Inc. All rights reserved. 2 2 # 3 3 # Redistribution and use in source and binary forms, with or without … … 30 30 31 31 setup( 32 name=' webkitflaskpy',33 version='0. 2.0',32 name='reporelaypy', 33 version='0.1.0', 34 34 description='Library for visualizing, processing and storing test results.', 35 35 long_description=readme(), … … 43 43 'Programming Language :: Python :: 3 :: Only', 44 44 'Topic :: Software Development :: Libraries :: Python Modules', 45 'Topic :: Software Development :: Testing',45 'Topic :: Software Development :: Version Control :: Git', 46 46 ], 47 keywords=' web javascriptwebkit',48 url='https://github.com/WebKit/WebKit/tree/main/Tools/Scripts/libraries/ webkitflaskpy',47 keywords='git hook mirror webkit', 48 url='https://github.com/WebKit/WebKit/tree/main/Tools/Scripts/libraries/reporelaypy', 49 49 author='Jonathan Bedard', 50 50 author_email='jbedard@apple.com', 51 51 license='Modified BSD', 52 52 packages=[ 53 'webkitflaskpy', 53 'reporelaypy', 54 'reporelaypy.test', 54 55 ], 55 56 install_requires=[ 56 ' Flask',57 ' Flask-Cors',58 ' gunicorn',57 'fakeredis', 58 'redis', 59 'xmltodict', 59 60 'webkitcorepy', 61 'webkitscmpy', 62 'webkitflaskpy', 60 63 ], 61 64 include_package_data=True, -
trunk/Tools/Scripts/libraries/resultsdbpy/resultsdbpy/__init__.py
r286074 r286576 45 45 ) 46 46 47 version = Version(3, 1, 5)47 version = Version(3, 1, 6) 48 48 49 49 import webkitflaskpy -
trunk/Tools/Scripts/libraries/resultsdbpy/resultsdbpy/flask_support/flask_testcase.py
r273834 r286576 22 22 23 23 import atexit 24 import json25 24 import os 26 25 import requests … … 28 27 29 28 from flask import Flask 30 from flask.wrappers import Response31 29 from selenium import webdriver 32 30 from selenium.common.exceptions import WebDriverException 33 31 from resultsdbpy.flask_support.flask_test_context import FlaskTestContext 34 35 36 class FlaskRequestsResponse(Response): 37 @property 38 def text(self): 39 return self.data.decode('utf-8') 40 41 @property 42 def content(self): 43 return self.data 44 45 def json(self): 46 return json.loads(self.text) 32 from webkitflaskpy import Response 47 33 48 34 … … 105 91 def real_method(val, method=method, **kwargs): 106 92 app = Flask('testing') 107 app.response_class = FlaskRequestsResponse93 app.response_class = Response 108 94 app.config['TESTING'] = True 109 95 val.setup_webserver(app, **kwargs) -
trunk/Tools/Scripts/libraries/resultsdbpy/setup.py
r286074 r286576 31 31 setup( 32 32 name='resultsdbpy', 33 version='3.1. 5',33 version='3.1.6', 34 34 description='Library for visualizing, processing and storing test results.', 35 35 long_description=readme(), -
trunk/Tools/Scripts/libraries/webkitflaskpy/setup.py
r286074 r286576 31 31 setup( 32 32 name='webkitflaskpy', 33 version='0. 2.0',34 description= 'Library for visualizing, processing and storing test results.',33 version='0.3.0', 34 description="Library supporting the WebKit Team's flask based web services.", 35 35 long_description=readme(), 36 36 classifiers=[ -
trunk/Tools/Scripts/libraries/webkitflaskpy/webkitflaskpy/__init__.py
r286217 r286576 44 44 ) 45 45 46 version = Version(0, 2, 0)46 version = Version(0, 3, 0) 47 47 48 48 AutoInstall.register(Package('click', Version(7, 1, 2))) … … 54 54 55 55 from webkitflaskpy.authed_blueprint import AuthedBlueprint # noqa: E402 56 from webkitflaskpy.response import Response 57 from webkitflaskpy.mock_app import mock_app 56 58 57 59 name = 'webkitflaskpy' -
trunk/Tools/Scripts/libraries/webkitflaskpy/webkitflaskpy/mock_app.py
r286574 r286576 1 # Copyright (C) 202 0Apple Inc. All rights reserved.1 # Copyright (C) 2021 Apple Inc. All rights reserved. 2 2 # 3 3 # Redistribution and use in source and binary forms, with or without … … 21 21 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 22 23 from setuptools import setup 23 from flask import Flask 24 25 from .response import Response 24 26 25 27 26 def readme(): 27 with open('README.md') as f: 28 return f.read() 28 def mock_app(method): 29 def real_method(val, method=method, **kwargs): 30 app = Flask('testing') 31 app.response_class = Response 32 app.config['TESTING'] = True 33 app.add_url_rule('/__health', 'health', lambda: 'ok', methods=('GET',)) 34 return method(val, app=app, client=app.test_client(), **kwargs) 29 35 30 31 setup( 32 name='webkitflaskpy', 33 version='0.2.0', 34 description='Library for visualizing, processing and storing test results.', 35 long_description=readme(), 36 classifiers=[ 37 'Development Status :: 4 - Beta', 38 'Framework :: Flask', 39 'Intended Audience :: Developers', 40 'License :: OSI Approved :: BSD License', 41 'Operating System :: MacOS', 42 'Natural Language :: English', 43 'Programming Language :: Python :: 3 :: Only', 44 'Topic :: Software Development :: Libraries :: Python Modules', 45 'Topic :: Software Development :: Testing', 46 ], 47 keywords='web javascript webkit', 48 url='https://github.com/WebKit/WebKit/tree/main/Tools/Scripts/libraries/webkitflaskpy', 49 author='Jonathan Bedard', 50 author_email='jbedard@apple.com', 51 license='Modified BSD', 52 packages=[ 53 'webkitflaskpy', 54 ], 55 install_requires=[ 56 'Flask', 57 'Flask-Cors', 58 'gunicorn', 59 'webkitcorepy', 60 ], 61 include_package_data=True, 62 zip_safe=False, 63 ) 36 real_method.__name__ = method.__name__ 37 return real_method -
trunk/Tools/Scripts/libraries/webkitflaskpy/webkitflaskpy/response.py
r286574 r286576 1 # Copyright (C) 202 0Apple Inc. All rights reserved.1 # Copyright (C) 2021 Apple Inc. All rights reserved. 2 2 # 3 3 # Redistribution and use in source and binary forms, with or without … … 21 21 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 22 23 from setuptools import setup 23 import json 24 25 from flask.wrappers import Response as FlaskResponse 24 26 25 27 26 def readme(): 27 with open('README.md') as f: 28 return f.read() 28 class Response(FlaskResponse): 29 @property 30 def text(self): 31 return self.data.decode('utf-8') 29 32 33 @property 34 def content(self): 35 return self.data 30 36 31 setup( 32 name='webkitflaskpy', 33 version='0.2.0', 34 description='Library for visualizing, processing and storing test results.', 35 long_description=readme(), 36 classifiers=[ 37 'Development Status :: 4 - Beta', 38 'Framework :: Flask', 39 'Intended Audience :: Developers', 40 'License :: OSI Approved :: BSD License', 41 'Operating System :: MacOS', 42 'Natural Language :: English', 43 'Programming Language :: Python :: 3 :: Only', 44 'Topic :: Software Development :: Libraries :: Python Modules', 45 'Topic :: Software Development :: Testing', 46 ], 47 keywords='web javascript webkit', 48 url='https://github.com/WebKit/WebKit/tree/main/Tools/Scripts/libraries/webkitflaskpy', 49 author='Jonathan Bedard', 50 author_email='jbedard@apple.com', 51 license='Modified BSD', 52 packages=[ 53 'webkitflaskpy', 54 ], 55 install_requires=[ 56 'Flask', 57 'Flask-Cors', 58 'gunicorn', 59 'webkitcorepy', 60 ], 61 include_package_data=True, 62 zip_safe=False, 63 ) 37 def json(self): 38 return json.loads(self.text) -
trunk/Tools/Scripts/webkitpy/__init__.py
r284964 r286576 81 81 AutoInstall.register(Package('zope.interface', Version(5, 1, 0), aliases=['zope'], pypi_name='zope-interface')) 82 82 83 if sys.version_info > (3, 0): 84 AutoInstall.register(Package('reporelaypy', Version(0, 1, 0)), local=True) 85 86 AutoInstall.register(Package('webkitflaskpy', Version(0, 1, 1)), local=True) 83 87 AutoInstall.register(Package('webkitscmpy', Version(0, 12, 5)), local=True) 84 88 -
trunk/Tools/Scripts/webkitpy/test/main.py
r276434 r286576 66 66 tester.add_tree(os.path.join(_webkit_root, 'Tools', 'Scripts', 'libraries', 'webkitscmpy'), 'webkitscmpy') 67 67 tester.add_tree(os.path.join(_webkit_root, 'Tools', 'Scripts', 'libraries', 'webkitflaskpy'), 'webkitflaskpy') 68 if sys.version_info > (3, 0): 69 tester.add_tree(os.path.join(_webkit_root, 'Tools', 'Scripts', 'libraries', 'reporelaypy'), 'reporelaypy') 68 70 69 71 # AppleWin is the only platform that does not support Modern WebKit … … 189 191 190 192 from webkitcorepy import AutoInstall 193 194 # Force registration of all autoinstalled packages. 195 if sys.version_info > (3, 0): 196 import reporelaypy 197 import webkitflaskpy 198 191 199 AutoInstall.install_everything() 192 200
Note:
See TracChangeset
for help on using the changeset viewer.