Changeset 280640 in webkit
- Timestamp:
- Aug 4, 2021, 10:58:51 AM (5 years ago)
- Location:
- trunk/Tools
- Files:
-
- 2 added
- 7 edited
- 1 copied
-
ChangeLog (modified) (1 diff)
-
Scripts/libraries/webkitcorepy/setup.py (modified) (1 diff)
-
Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py (modified) (1 diff)
-
Scripts/libraries/webkitcorepy/webkitcorepy/credentials.py (modified) (3 diffs)
-
Scripts/libraries/webkitcorepy/webkitcorepy/mocks/__init__.py (modified) (1 diff)
-
Scripts/libraries/webkitcorepy/webkitcorepy/mocks/terminal.py (copied) (copied from trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/mocks/__init__.py ) (2 diffs)
-
Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py (added)
-
Scripts/libraries/webkitcorepy/webkitcorepy/tests/terminal_unittest.py (added)
-
Scripts/webkitpy/common/system/user.py (modified) (6 diffs)
-
Scripts/webkitpy/common/system/user_mock.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r280635 r280640 1 2021-08-04 Jonathan Bedard <jbedard@apple.com> 2 3 [webkitcorepy] Add shared terminal input code 4 https://bugs.webkit.org/show_bug.cgi?id=226024 5 <rdar://problem/78261645> 6 7 Reviewed by Dewei Zhu. 8 9 * Scripts/libraries/webkitcorepy/setup.py: Bump version. 10 * Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py: Export Terminal object, bump version. 11 * Scripts/libraries/webkitcorepy/webkitcorepy/credentials.py: 12 (credentials): Use Terminal.input. 13 * Scripts/libraries/webkitcorepy/webkitcorepy/mocks/__init__.py: 14 * Scripts/libraries/webkitcorepy/webkitcorepy/mocks/terminal.py: Added. 15 (Terminal): 16 (Terminal.input): Mocking input and raw_input requires so specialized knowledge, 17 so we should generalize it. 18 * Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py: Added. 19 (Terminal): 20 (Terminal.input): Python 2/3 compatible input function. 21 (Terminal.choose): Generic multiple-choice input prompt. 22 * Scripts/libraries/webkitcorepy/webkitcorepy/tests/terminal_unittest.py: Added. 23 (TerminalTests): 24 (TerminalTests.test_choose_basic): 25 (TerminalTests.test_choose_strict): 26 (TerminalTests.test_choose_default): 27 (TerminalTests.test_choose_triple): 28 (TerminalTests.test_choose_number): 29 * Scripts/webkitpy/common/system/user.py: 30 (User.prompt): Use Terminal.input. 31 (User.prompt_with_multiple_lists): Ditto. 32 (User.prompt_with_list): Ditto. 33 (User.confirm): Ditto. 34 * Scripts/webkitpy/common/system/user_mock.py: 35 (MockUser.prompt): Use Terminal.input. 36 (MockUser.prompt_with_list): Ditto. 37 1 38 2021-08-04 Andres Gonzalez <andresg_22@apple.com> 2 39 -
trunk/Tools/Scripts/libraries/webkitcorepy/setup.py
r280550 r280640 31 31 setup( 32 32 name='webkitcorepy', 33 version='0. 7.4',33 version='0.8.0', 34 34 description='Library containing various Python support classes and functions.', 35 35 long_description=readme(), -
trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py
r280550 r280640 36 36 from webkitcorepy.output_capture import LoggerCapture, OutputCapture, OutputDuplicate 37 37 from webkitcorepy.task_pool import TaskPool 38 from webkitcorepy.terminal import Terminal 38 39 from webkitcorepy.credentials import credentials 39 40 from webkitcorepy.measure_time import MeasureTime 40 41 from webkitcorepy.nested_fuzzy_dict import NestedFuzzyDict 41 42 42 version = Version(0, 7, 4)43 version = Version(0, 8, 0) 43 44 44 45 from webkitcorepy.autoinstall import Package, AutoInstall -
trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/credentials.py
r280435 r280640 26 26 27 27 from subprocess import CalledProcessError 28 from webkitcorepy import OutputCapture 28 from webkitcorepy import OutputCapture, Terminal 29 29 30 30 _cache = dict() … … 65 65 sys.stderr.write("Authentication required to use {}\n".format(prompt or name)) 66 66 sys.stderr.write('Username: ') 67 username = (input if sys.version_info > (3, 0) else raw_input)()67 username = Terminal.input() 68 68 username_prompted = True 69 69 … … 86 86 if keyring and (username_prompted or key_prompted): 87 87 sys.stderr.write('Store username and {} in system keyring for {}? (Y/N): '.format(key_name, url)) 88 response = (input if sys.version_info > (3, 0) else raw_input)()88 response = Terminal.input() 89 89 if response.lower() in ['y', 'yes', 'ok']: 90 90 sys.stderr.write('Storing credentials...\n') -
trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/mocks/__init__.py
r269919 r280640 26 26 27 27 from webkitcorepy.mocks.requests_ import Response, Requests 28 from webkitcorepy.mocks.terminal import Terminal -
trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/mocks/terminal.py
r280639 r280640 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 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 22 23 from webkitcorepy.mocks.context_stack import ContextStack 24 from webkitcorepy.mocks.time_ import Time 25 from webkitcorepy.mocks.subprocess import ProcessCompletion, Subprocess 23 import sys 26 24 27 from webkitcorepy.mocks.requests_ import Response, Requests 25 26 class Terminal(object): 27 index = 0 28 29 @classmethod 30 def input(cls, *args): 31 from mock import patch 32 33 cls.index = 0 34 35 def function(output): 36 print(output) 37 cls.index += 1 38 return args[cls.index - 1] 39 40 if sys.version_info > (3, 0): 41 return patch('builtins.input', new=function) 42 43 import __builtin__ 44 return patch.object(__builtin__, 'raw_input', new=function) -
trunk/Tools/Scripts/webkitpy/common/system/user.py
r277853 r280640 37 37 import webbrowser 38 38 39 from webkitcorepy import Terminal 40 39 41 from webkitpy.common.system.executive import Executive 40 42 from webkitpy.common.system.platforminfo import PlatformInfo … … 51 53 _log.warn("Unable to import readline.") 52 54 53 if sys.version_info > (3, 0):54 input_func = input55 else:56 input_func = raw_input57 58 55 59 56 class User(object): … … 68 65 # FIXME: These are @classmethods because bugzilla.py doesn't have a Tool object (thus no User instance). 69 66 @classmethod 70 def prompt(cls, message, repeat=1, raw_input= input_func):67 def prompt(cls, message, repeat=1, raw_input=Terminal.input): 71 68 response = None 72 69 while (repeat and not response): … … 80 77 81 78 @classmethod 82 def prompt_with_multiple_lists(cls, list_title, subtitles, lists, can_choose_multiple=False, raw_input= input_func):79 def prompt_with_multiple_lists(cls, list_title, subtitles, lists, can_choose_multiple=False, raw_input=Terminal.input): 83 80 item_index = 0 84 81 cumulated_list = [] … … 120 117 121 118 @classmethod 122 def prompt_with_list(cls, list_title, list_items, can_choose_multiple=False, raw_input= input_func):119 def prompt_with_list(cls, list_title, list_items, can_choose_multiple=False, raw_input=Terminal.input): 123 120 print(list_title) 124 121 i = 0 … … 162 159 pass 163 160 164 def confirm(self, message=None, default=DEFAULT_YES, raw_input= input_func):161 def confirm(self, message=None, default=DEFAULT_YES, raw_input=Terminal.input): 165 162 if not message: 166 163 message = "Continue?" -
trunk/Tools/Scripts/webkitpy/common/system/user_mock.py
r250375 r280640 30 30 import sys 31 31 32 from webkitcorepy import Terminal 33 32 34 _log = logging.getLogger(__name__) 33 34 if sys.version_info < (3, 0):35 input = raw_input36 35 37 36 … … 39 38 40 39 @classmethod 41 def prompt(cls, message, repeat=1, raw_input= input):40 def prompt(cls, message, repeat=1, raw_input=Terminal.input): 42 41 return "Mock user response" 43 42 44 43 @classmethod 45 def prompt_with_list(cls, list_title, list_items, can_choose_multiple=False, raw_input= input):44 def prompt_with_list(cls, list_title, list_items, can_choose_multiple=False, raw_input=Terminal.input): 46 45 pass 47 46
Note:
See TracChangeset
for help on using the changeset viewer.