Diff
Modified: trunk/Tools/ChangeLog (288965 => 288966)
--- trunk/Tools/ChangeLog 2022-02-02 18:45:56 UTC (rev 288965)
+++ trunk/Tools/ChangeLog 2022-02-02 18:46:01 UTC (rev 288966)
@@ -1,5 +1,20 @@
2022-01-26 Jonathan Bedard <[email protected]>
+ [git-webkit] Improve user prompts (Part 2)
+ https://bugs.webkit.org/show_bug.cgi?id=235655
+ <rdar://problem/88082697>
+
+ Reviewed by Aakash Jain and Dewei Zhu.
+
+ * Scripts/libraries/webkitcorepy/setup.py: Bump version.
+ * Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py: Ditto.
+ * Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py:
+ (Terminal.input): Gracefully handle keyboard interrupt
+ * Scripts/libraries/webkitcorepy/webkitcorepy/tests/terminal_unittest.py:
+ (TerminalTests.test_interrupt):
+
+2022-01-26 Jonathan Bedard <[email protected]>
+
[git-webkit] Improve user prompts (Part 1)
https://bugs.webkit.org/show_bug.cgi?id=235655
<rdar://problem/88082697>
Modified: trunk/Tools/Scripts/libraries/webkitcorepy/setup.py (288965 => 288966)
--- trunk/Tools/Scripts/libraries/webkitcorepy/setup.py 2022-02-02 18:45:56 UTC (rev 288965)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/setup.py 2022-02-02 18:46:01 UTC (rev 288966)
@@ -30,7 +30,7 @@
setup(
name='webkitcorepy',
- version='0.12.7',
+ version='0.12.8',
description='Library containing various Python support classes and functions.',
long_description=readme(),
classifiers=[
Modified: trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py (288965 => 288966)
--- trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py 2022-02-02 18:45:56 UTC (rev 288965)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py 2022-02-02 18:46:01 UTC (rev 288966)
@@ -44,7 +44,7 @@
from webkitcorepy.editor import Editor
from webkitcorepy.file_lock import FileLock
-version = Version(0, 12, 7)
+version = Version(0, 12, 8)
from webkitcorepy.autoinstall import Package, AutoInstall
if sys.version_info > (3, 0):
Modified: trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py (288965 => 288966)
--- trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py 2022-02-02 18:45:56 UTC (rev 288965)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py 2022-02-02 18:46:01 UTC (rev 288966)
@@ -1,4 +1,4 @@
-# Copyright (C) 2021 Apple Inc. All rights reserved.
+# Copyright (C) 2021, 2022 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -36,7 +36,11 @@
@classmethod
def input(cls, *args, **kwargs):
- return (input if sys.version_info > (3, 0) else raw_input)(*args, **kwargs)
+ try:
+ return (input if sys.version_info > (3, 0) else raw_input)(*args, **kwargs)
+ except KeyboardInterrupt:
+ sys.stderr.write('\nUser interrupted program\n')
+ sys.exit(1)
@classmethod
def choose(cls, prompt, options=None, default=None, strict=False, numbered=False):
Modified: trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/terminal_unittest.py (288965 => 288966)
--- trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/terminal_unittest.py 2022-02-02 18:45:56 UTC (rev 288965)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/terminal_unittest.py 2022-02-02 18:46:01 UTC (rev 288966)
@@ -1,4 +1,4 @@
-# Copyright (C) 2021 Apple Inc. All rights reserved.
+# Copyright (C) 2021, 2022 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -20,6 +20,7 @@
# (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 unittest
from mock import patch
@@ -91,3 +92,22 @@
with mocks.Terminal.input('2'), OutputCapture() as captured:
self.assertEqual('Beta', Terminal.choose('Pick', options=('Alpha', 'Beta', 'Charlie', 'Delta'), numbered=True))
self.assertEqual(captured.stdout.getvalue(), 'Pick:\n 1) Alpha\n 2) Beta\n 3) Charlie\n 4) Delta\n: \n')
+
+ def test_interrupt(self):
+ from mock import patch
+
+ def do_interrupt(output):
+ print(output)
+ raise KeyboardInterrupt
+
+ if sys.version_info > (3, 0):
+ mocked = patch('builtins.input', new=do_interrupt)
+ else:
+ import __builtin__
+ mocked = patch.object(__builtin__, 'raw_input', new=do_interrupt)
+
+ with OutputCapture() as captured, self.assertRaises(SystemExit) as caught, mocked:
+ Terminal.choose('Continue')
+
+ self.assertEqual(caught.exception.code, 1)
+ self.assertEqual(captured.stderr.getvalue(), '\nUser interrupted program\n')