Title: [288966] trunk/Tools
Revision
288966
Author
[email protected]
Date
2022-02-02 10:46:01 -0800 (Wed, 02 Feb 2022)

Log Message

[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.

* Tools/Scripts/libraries/webkitcorepy/setup.py: Bump version.
* Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py: Ditto.
* Tools/Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py:
(Terminal.input): Gracefully handle keyboard interrupt
* Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/terminal_unittest.py:
(TerminalTests.test_interrupt):

Canonical link: https://commits.webkit.org/246695@main

Modified Paths

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')
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to