Changeset 283428 in webkit
- Timestamp:
- Oct 1, 2021, 5:53:30 PM (5 years ago)
- Location:
- trunk/Tools
- Files:
-
- 8 edited
-
ChangeLog (modified) (1 diff)
-
Scripts/libraries/webkitscmpy/setup.py (modified) (1 diff)
-
Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py (modified) (1 diff)
-
Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/git_hub.py (modified) (4 diffs)
-
Scripts/libraries/webkitscmpy/webkitscmpy/remote/bitbucket.py (modified) (3 diffs)
-
Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py (modified) (3 diffs)
-
Scripts/libraries/webkitscmpy/webkitscmpy/remote/scm.py (modified) (1 diff)
-
Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r283427 r283428 1 2021-10-01 Jonathan Bedard <jbedard@apple.com> 2 3 [webkitscmpy] Get pull-request by number 4 https://bugs.webkit.org/show_bug.cgi?id=231039 5 <rdar://problem/83740215> 6 7 Reviewed by Stephanie Lewis. 8 9 * Scripts/libraries/webkitscmpy/setup.py: Bump version. 10 * Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Ditto. 11 * Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/git_hub.py: 12 (GitHub.request): Add pull-request access by number. 13 * Scripts/libraries/webkitscmpy/webkitscmpy/remote/bitbucket.py: 14 (BitBucket.PRGenerator.PullRequest): Shared JSON pull-request generator. 15 (BitBucket.PRGenerator.get): Get pull-request by number. 16 (BitBucket.PRGenerator.find): Use shared pull-request generator. 17 (BitBucket.PRGenerator.create): Ditto. 18 * Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py: 19 (GitHub.PRGenerator.PullRequest): Shared JSON pull-request generator. 20 (GitHub.PRGenerator.get): Get pull-request by number. 21 (GitHub.PRGenerator.find): Use shared pull-request generator. 22 (GitHub.PRGenerator.create): 23 * Scripts/libraries/webkitscmpy/webkitscmpy/remote/scm.py: 24 (Scm.PRGenerator.get): 25 * Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py: 26 (TestNetworkPullRequestGitHub): Added. 27 1 28 2021-10-01 Alex Christensen <achristensen@webkit.org> 2 29 -
trunk/Tools/Scripts/libraries/webkitscmpy/setup.py
r283373 r283428 30 30 setup( 31 31 name='webkitscmpy', 32 version='2.2. 3',32 version='2.2.4', 33 33 description='Library designed to interact with git and svn repositories.', 34 34 long_description=readme(), -
trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py
r283373 r283428 47 47 ) 48 48 49 version = Version(2, 2, 3)49 version = Version(2, 2, 4) 50 50 51 51 AutoInstall.register(Package('fasteners', Version(0, 15, 0))) -
trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/git_hub.py
r281695 r283428 336 336 if username: 337 337 self.forks.append(username) 338 return mocks.Response.fromJson({} ) if username else mocks.Response.create404(url)338 return mocks.Response.fromJson({}, url=url) if username else mocks.Response.create404(url) 339 339 340 340 # All pull-requests … … 353 353 continue 354 354 prs.append(candidate) 355 return mocks.Response.fromJson(prs) 355 return mocks.Response.fromJson(prs, url=url) 356 357 # Pull-request by number 358 if method == 'GET' and stripped_url.startswith(pr_base): 359 for candidate in self.pull_requests: 360 if stripped_url.split('/')[-1] == str(candidate['number']): 361 return mocks.Response.fromJson(candidate, url=url) 362 return mocks.Response.create404(url) 356 363 357 364 # Create/update pull-request … … 380 387 pr['user'] = dict(login=auth.username) 381 388 self.pull_requests.append(pr) 382 return mocks.Response.fromJson(pr )389 return mocks.Response.fromJson(pr, url=url) 383 390 384 391 # Update specifically … … 392 399 return mocks.Response.create404(url) 393 400 self.pull_requests[existing].update(pr) 394 return mocks.Response.fromJson(self.pull_requests[i] )401 return mocks.Response.fromJson(self.pull_requests[i], url=url) 395 402 396 403 return mocks.Response.create404(url) -
trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/bitbucket.py
r283373 r283428 40 40 BODY_CHAR_LIMIT = 32766 41 41 42 def PullRequest(self, data): 43 if not data: 44 return None 45 return PullRequest( 46 number=data['id'], 47 title=data.get('title'), 48 body=data.get('description'), 49 author=self.repository.contributors.create( 50 data['author']['user']['displayName'], 51 data['author']['user']['emailAddress'], 52 ), head=data['fromRef']['displayId'], 53 base=data['toRef']['displayId'], 54 ) 55 56 def get(self, number): 57 return self.PullRequest(self.repository.request('pull-requests/{}'.format(int(number)))) 58 42 59 def find(self, state=None, head=None, base=None): 43 60 params = dict( … … 57 74 if base and not datum['toRef']['id'].endswith(base): 58 75 continue 59 yield PullRequest( 60 number=datum['id'], 61 title=datum.get('title'), 62 body=datum.get('description'), 63 author=self.repository.contributors.create( 64 datum['author']['user']['displayName'], 65 datum['author']['user']['emailAddress'], 66 ), head=datum['fromRef']['displayId'], 67 base=datum['toRef']['displayId'], 68 ) 76 yield self.PullRequest(datum) 69 77 70 78 def create(self, head, title, body=None, commits=None, base=None): … … 103 111 if response.status_code // 100 != 2: 104 112 return None 105 data = response.json() 106 return PullRequest( 107 number=data['id'], 108 title=data.get('title'), 109 body=data.get('description'), 110 author=self.repository.contributors.create( 111 data['author']['user']['displayName'], 112 data['author']['user']['emailAddress'], 113 ), head=data['fromRef']['displayId'], 114 base=data['toRef']['displayId'], 115 ) 113 return self.PullRequest(response.json()) 116 114 117 115 def update(self, pull_request, head=None, title=None, body=None, commits=None, base=None): -
trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py
r281695 r283428 40 40 41 41 class PRGenerator(Scm.PRGenerator): 42 def PullRequest(self, data): 43 if not data: 44 return None 45 return PullRequest( 46 number=data['number'], 47 title=data.get('title'), 48 body=data.get('body'), 49 author=self.repository.contributors.create(data['user']['login']), 50 head=data['head']['ref'], 51 base=data['base']['ref'], 52 ) 53 54 def get(self, number): 55 return self.PullRequest(self.repository.request('pulls/{}'.format(int(number)))) 56 42 57 def find(self, state=None, head=None, base=None): 43 58 if not state: … … 52 67 if base and datum['base']['ref'] != base: 53 68 continue 54 if head and not datum['head']['ref'].endswith(head ):69 if head and not datum['head']['ref'].endswith(head.split(':')[-1]): 55 70 continue 56 yield PullRequest( 57 number=datum['number'], 58 title=datum.get('title'), 59 body=datum.get('body'), 60 author=self.repository.contributors.create(datum['user']['login']), 61 head=datum['head']['ref'], 62 base=datum['base']['ref'], 63 ) 71 yield self.PullRequest(datum) 64 72 65 73 def create(self, head, title, body=None, commits=None, base=None): … … 85 93 if response.status_code // 100 != 2: 86 94 return None 87 data = response.json() 88 return PullRequest( 89 number=data['number'], 90 title=data.get('title'), 91 body=data.get('body'), 92 author=self.repository.contributors.create(data['user']['login']), 93 head=data['head']['ref'], 94 base=data['base']['ref'], 95 ) 95 return self.PullRequest(response.json()) 96 96 97 97 def update(self, pull_request, head=None, title=None, body=None, commits=None, base=None): -
trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/scm.py
r281695 r283428 31 31 self.repository = repository 32 32 33 def get(self, number): 34 raise NotImplementedError() 35 33 36 def find(self, state=None, head=None, base=None): 34 37 raise NotImplementedError() -
trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py
r283373 r283428 26 26 27 27 from webkitcorepy import OutputCapture, testing 28 from webkitscmpy import Commit, PullRequest, program, mocks 28 from webkitscmpy import Commit, PullRequest, program, mocks, remote 29 29 30 30 … … 426 426 ], 427 427 ) 428 429 430 class TestNetworkPullRequestGitHub(unittest.TestCase): 431 remote = 'https://github.example.com/WebKit/WebKit' 432 433 @classmethod 434 def webserver(cls): 435 result = mocks.remote.GitHub() 436 result.pull_requests = [dict( 437 number=1, 438 state='open', 439 title='Example Change', 440 user=dict(login='tcontributor'), 441 body='''#### 95507e3a1a4a919d1a156abbc279fdf6d24b13f5 442 <pre> 443 Example Change 444 <a href="https://bugs.webkit.org/show_bug.cgi?id=1234">https://bugs.webkit.org/show_bug.cgi?id=1234</a> 445 446 Reviewed by NOBODY (OOPS!). 447 448 * Source/file.cpp: 449 </pre> 450 ''', 451 head=dict(ref='eng/pull-request'), 452 base=dict(ref='main'), 453 )] 454 return result 455 456 def test_find(self): 457 with self.webserver(): 458 prs = list(remote.GitHub(self.remote).pull_requests.find()) 459 self.assertEqual(len(prs), 1) 460 self.assertEqual(prs[0].number, 1) 461 self.assertEqual(prs[0].title, 'Example Change') 462 self.assertEqual(prs[0].head, 'eng/pull-request') 463 self.assertEqual(prs[0].base, 'main') 464 465 def test_get(self): 466 with self.webserver(): 467 pr = remote.GitHub(self.remote).pull_requests.get(1) 468 self.assertEqual(pr.number, 1) 469 self.assertEqual(pr.title, 'Example Change') 470 self.assertEqual(pr.head, 'eng/pull-request') 471 self.assertEqual(pr.base, 'main') 472 473 474 class TestNetworkPullRequestBitBucket(unittest.TestCase): 475 remote = 'https://bitbucket.example.com/projects/WEBKIT/repos/webkit' 476 477 @classmethod 478 def webserver(cls): 479 result = mocks.remote.BitBucket() 480 result.pull_requests = [dict( 481 id=1, 482 state='OPEN', 483 title='Example Change', 484 author=dict( 485 user=dict( 486 name='tcontributor', 487 emailAddress='tcontributor@apple.com', 488 displayName='Tim Contributor', 489 ), 490 ), body='''#### 95507e3a1a4a919d1a156abbc279fdf6d24b13f5 491 ``` 492 Example Change 493 https://bugs.webkit.org/show_bug.cgi?id=1234 494 495 Reviewed by NOBODY (OOPS!). 496 497 * Source/file.cpp: 498 ``` 499 ''', 500 fromRef=dict(displayId='eng/pull-request'), 501 toRef=dict(displayId='main'), 502 )] 503 return result 504 505 def test_find(self): 506 with self.webserver(): 507 with self.webserver(): 508 prs = list(remote.BitBucket(self.remote).pull_requests.find()) 509 self.assertEqual(len(prs), 1) 510 self.assertEqual(prs[0].number, 1) 511 self.assertEqual(prs[0].title, 'Example Change') 512 self.assertEqual(prs[0].head, 'eng/pull-request') 513 self.assertEqual(prs[0].base, 'main') 514 515 def test_get(self): 516 with self.webserver(): 517 pr = remote.BitBucket(self.remote).pull_requests.get(1) 518 self.assertEqual(pr.number, 1) 519 self.assertEqual(pr.title, 'Example Change') 520 self.assertEqual(pr.head, 'eng/pull-request') 521 self.assertEqual(pr.base, 'main')
Note:
See TracChangeset
for help on using the changeset viewer.