Title: [291013] trunk/Tools
Revision
291013
Author
jbed...@apple.com
Date
2022-03-08 14:18:01 -0800 (Tue, 08 Mar 2022)

Log Message

[git-webkit] Prompt user when GitHub credentials are likely incorrect
https://bugs.webkit.org/show_bug.cgi?id=237450
<rdar://problem/89781069>

Reviewed by Dewei Zhu.

GitHub doesn't make it obvious when credentials are invalid, but our scripts
can make an educated guess when invalid credentials are the root cause.

* Tools/Scripts/libraries/webkitbugspy/setup.py: Bump version.
* Tools/Scripts/libraries/webkitbugspy/webkitbugspy/__init__.py: Ditto.
* Tools/Scripts/libraries/webkitbugspy/webkitbugspy/github.py:
(Tracker): Add REFRESH_TOKEN_PROMPT.
* Tools/Scripts/libraries/webkitscmpy/setup.py: Bump version.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Ditto.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:
(GitHub.PRGenerator.create):
(GitHub.PRGenerator.update):
(GitHub.request):
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/checkout_unittest.py:
(TestCheckout.test_no_pr_github):

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

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (291012 => 291013)


--- trunk/Tools/ChangeLog	2022-03-08 22:06:42 UTC (rev 291012)
+++ trunk/Tools/ChangeLog	2022-03-08 22:18:01 UTC (rev 291013)
@@ -1,5 +1,29 @@
 2022-03-08  Jonathan Bedard  <jbed...@apple.com>
 
+        [git-webkit] Prompt user when GitHub credentials are likely incorrect
+        https://bugs.webkit.org/show_bug.cgi?id=237450
+        <rdar://problem/89781069>
+
+        Reviewed by Dewei Zhu.
+
+        GitHub doesn't make it obvious when credentials are invalid, but our scripts
+        can make an educated guess when invalid credentials are the root cause.
+
+        * Scripts/libraries/webkitbugspy/setup.py: Bump version.
+        * Scripts/libraries/webkitbugspy/webkitbugspy/__init__.py: Ditto.
+        * Scripts/libraries/webkitbugspy/webkitbugspy/github.py:
+        (Tracker): Add REFRESH_TOKEN_PROMPT.
+        * Scripts/libraries/webkitscmpy/setup.py: Bump version.
+        * Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Ditto.
+        * Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:
+        (GitHub.PRGenerator.create):
+        (GitHub.PRGenerator.update):
+        (GitHub.request):
+        * Scripts/libraries/webkitscmpy/webkitscmpy/test/checkout_unittest.py:
+        (TestCheckout.test_no_pr_github):
+
+2022-03-08  Jonathan Bedard  <jbed...@apple.com>
+
         [git-webkit] Set bug tracker usernames from contributors.json
         https://bugs.webkit.org/show_bug.cgi?id=237608
         <rdar://problem/89971547>

Modified: trunk/Tools/Scripts/libraries/webkitbugspy/setup.py (291012 => 291013)


--- trunk/Tools/Scripts/libraries/webkitbugspy/setup.py	2022-03-08 22:06:42 UTC (rev 291012)
+++ trunk/Tools/Scripts/libraries/webkitbugspy/setup.py	2022-03-08 22:18:01 UTC (rev 291013)
@@ -30,7 +30,7 @@
 
 setup(
     name='webkitbugspy',
-    version='0.4.0',
+    version='0.4.1',
     description='Library containing a shared API for various bug trackers.',
     long_description=readme(),
     classifiers=[

Modified: trunk/Tools/Scripts/libraries/webkitbugspy/webkitbugspy/__init__.py (291012 => 291013)


--- trunk/Tools/Scripts/libraries/webkitbugspy/webkitbugspy/__init__.py	2022-03-08 22:06:42 UTC (rev 291012)
+++ trunk/Tools/Scripts/libraries/webkitbugspy/webkitbugspy/__init__.py	2022-03-08 22:18:01 UTC (rev 291013)
@@ -46,7 +46,7 @@
         "Please install webkitcorepy with `pip install webkitcorepy --extra-index-url <package index URL>`"
     )
 
-version = Version(0, 4, 0)
+version = Version(0, 4, 1)
 
 from .user import User
 from .issue import Issue

Modified: trunk/Tools/Scripts/libraries/webkitbugspy/webkitbugspy/github.py (291012 => 291013)


--- trunk/Tools/Scripts/libraries/webkitbugspy/webkitbugspy/github.py	2022-03-08 22:06:42 UTC (rev 291012)
+++ trunk/Tools/Scripts/libraries/webkitbugspy/webkitbugspy/github.py	2022-03-08 22:18:01 UTC (rev 291013)
@@ -45,6 +45,7 @@
         r'\Ahttps?://api.github.{}/repos/{}/{}/issues/(?P<id>\d+)\Z',
         r'\Aapi.github.{}/repos/{}/{}/issues/(?P<id>\d+)\Z',
     ]
+    REFRESH_TOKEN_PROMPT = "Is your API token out of date? Run 'git-webkit setup' to refresh credentials\n"
 
     class Encoder(GenericTracker.Encoder):
         @webkitcorepy.decorators.hybridmethod
@@ -151,6 +152,8 @@
             message = response.json().get('message')
             if message:
                 sys.stderr.write('Message: {}\n'.format(message))
+            if auth:
+                sys.stderr.write(self.REFRESH_TOKEN_PROMPT)
             return None
         result = response.json()
 
@@ -170,14 +173,14 @@
         if not username:
             raise RuntimeError("Failed to find username for '{}'".format(name or email))
 
+        url = ''.format(api_url=self.api_url, username=username)
         response = requests.get(
-            '{api_url}/users/{username}'.format(
-                api_url=self.api_url,
-                username=username,
-            ), auth=HTTPBasicAuth(*self.credentials(required=True)),
+            url, auth=HTTPBasicAuth(*self.credentials(required=True)),
             headers=dict(Accept='application/vnd.github.v3+json'),
         )
         if response.status_code // 100 != 2:
+            sys.stderr.write("Request to '{}' returned status code '{}'\n".format(url, response.status_code))
+            sys.stderr.write(self.REFRESH_TOKEN_PROMPT)
             return None
 
         data = ""
@@ -320,6 +323,7 @@
                 if opened is not None:
                     issue._opened = None
                 sys.stderr.write("Failed to modify '{}'\n".format(issue))
+                sys.stderr.write(self.REFRESH_TOKEN_PROMPT)
                 return None
 
         return self.add_comment(issue, why) if why else issue
@@ -338,6 +342,7 @@
         )
         if response.status_code // 100 != 2:
             sys.stderr.write("Failed to add comment to '{}'\n".format(issue))
+            sys.stderr.write(self.REFRESH_TOKEN_PROMPT)
             return None
 
         data = ""

Modified: trunk/Tools/Scripts/libraries/webkitscmpy/setup.py (291012 => 291013)


--- trunk/Tools/Scripts/libraries/webkitscmpy/setup.py	2022-03-08 22:06:42 UTC (rev 291012)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/setup.py	2022-03-08 22:18:01 UTC (rev 291013)
@@ -29,7 +29,7 @@
 
 setup(
     name='webkitscmpy',
-    version='4.3.11',
+    version='4.3.12',
     description='Library designed to interact with git and svn repositories.',
     long_description=readme(),
     classifiers=[

Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py (291012 => 291013)


--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py	2022-03-08 22:06:42 UTC (rev 291012)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py	2022-03-08 22:18:01 UTC (rev 291013)
@@ -46,7 +46,7 @@
         "Please install webkitcorepy with `pip install webkitcorepy --extra-index-url <package index URL>`"
     )
 
-version = Version(4, 3, 11)
+version = Version(4, 3, 12)
 
 AutoInstall.register(Package('fasteners', Version(0, 15, 0)))
 AutoInstall.register(Package('jinja2', Version(2, 11, 3)))

Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py (291012 => 291013)


--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py	2022-03-08 22:06:42 UTC (rev 291012)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py	2022-03-08 22:18:01 UTC (rev 291013)
@@ -96,12 +96,13 @@
                     raise ValueError("Must define '{}' when creating pull-request".format(key))
 
             user, _ = self.repository.credentials(required=True)
+            url = ''.format(
+                api_url=self.repository.api_url,
+                owner=self.repository.owner,
+                name=self.repository.name,
+            )
             response = requests.post(
-                '{api_url}/repos/{owner}/{name}/pulls'.format(
-                    api_url=self.repository.api_url,
-                    owner=self.repository.owner,
-                    name=self.repository.name,
-                ), auth=HTTPBasicAuth(*self.repository.credentials(required=True)),
+                url, auth=HTTPBasicAuth(*self.repository.credentials(required=True)),
                 headers=dict(Accept='application/vnd.github.v3+json'),
                 json=dict(
                     title=title,
@@ -112,6 +113,8 @@
                 ),
             )
             if response.status_code // 100 != 2:
+                sys.stderr.write("Request to '{}' returned status code '{}'\n".format(url, response.status_code))
+                sys.stderr.write(Tracker.REFRESH_TOKEN_PROMPT)
                 return None
             result = self.PullRequest(response.json())
 
@@ -139,13 +142,14 @@
                 updates['body'] = PullRequest.create_body(body, commits)
             if opened is not None:
                 updates['state'] = 'open' if opened else 'closed'
+            url = ''.format(
+                api_url=self.repository.api_url,
+                owner=self.repository.owner,
+                name=self.repository.name,
+                number=pull_request.number,
+            )
             response = requests.post(
-                '{api_url}/repos/{owner}/{name}/pulls/{number}'.format(
-                    api_url=self.repository.api_url,
-                    owner=self.repository.owner,
-                    name=self.repository.name,
-                    number=pull_request.number,
-                ), auth=HTTPBasicAuth(*self.repository.credentials(required=True)),
+                url, auth=HTTPBasicAuth(*self.repository.credentials(required=True)),
                 headers=dict(Accept='application/vnd.github.v3+json'),
                 json=updates,
             )
@@ -153,6 +157,8 @@
                 pull_request._opened = False
                 return pull_request
             if response.status_code // 100 != 2:
+                sys.stderr.write("Request to '{}' returned status code '{}'\n".format(url, response.status_code))
+                sys.stderr.write(Tracker.REFRESH_TOKEN_PROMPT)
                 return None
             data = ""
 
@@ -315,6 +321,8 @@
             message = response.json().get('message')
             if message:
                 sys.stderr.write('Message: {}\n'.format(message))
+            if auth:
+                sys.stderr.write(Tracker.REFRESH_TOKEN_PROMPT)
             return None
         result = response.json()
 

Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/checkout_unittest.py (291012 => 291013)


--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/checkout_unittest.py	2022-03-08 22:06:42 UTC (rev 291012)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/checkout_unittest.py	2022-03-08 22:18:01 UTC (rev 291013)
@@ -69,6 +69,7 @@
         self.assertEqual(
             "Request to 'https://api.github.example.com/repos/WebKit/WebKit/pulls/1' returned status code '404'\n"
             "Message: Not found\n"
+            "Is your API token out of date? Run 'git-webkit setup' to refresh credentials\n"
             "Failed to find 'PR-1' associated with this repository\n",
             captured.stderr.getvalue(),
         )
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to