Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(341)

Side by Side Diff: appengine/findit/lib/gitiles/test/gitiles_repository_test.py

Issue 2344443005: [Findit] Factoring the gitiles (etc) stuff out into its own directory (Closed)
Patch Set: reordering imports Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « appengine/findit/lib/gitiles/test/diff_test.py ('k') | appengine/findit/lib/test/__init__.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import base64 5 import base64
6 from datetime import datetime 6 from datetime import datetime
7 import json 7 import json
8 import re 8 import re
9 9
10 from testing_utils import testing 10 from testing_utils import testing
11 11
12 from common import git_repository 12 # TODO(http://crbug.com/660474): Nothing in ./lib should depend on things
13 # in ./common
13 from common import retry_http_client 14 from common import retry_http_client
14 from common.change_log import ChangeLog 15 from lib.gitiles import gitiles_repository
16 from lib.gitiles.change_log import ChangeLog
15 17
16 18
17 COMMIT_MESSAGE = ('Add popover for snapshot canvas log.\n\n' 19 COMMIT_MESSAGE = ('Add popover for snapshot canvas log.\n\n'
18 'Review URL: https://codereview.chromium.org/320423004\n\n' 20 'Review URL: https://codereview.chromium.org/320423004\n\n'
19 'Review URL: https://codereview.chromium.org/328113005\n\n' 21 'Review URL: https://codereview.chromium.org/328113005\n\n'
20 'Cr-Commit-Position: refs/heads/master@{#175976}') 22 'Cr-Commit-Position: refs/heads/master@{#175976}')
21 23
22 COMMIT_LOG = """)]}' 24 COMMIT_LOG = """)]}'
23 { 25 {
24 "commit": "bcfd5a12eea05588aee98b7cf7e032d8cb5b58bb", 26 "commit": "bcfd5a12eea05588aee98b7cf7e032d8cb5b58bb",
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 def _Put(self, *_): # pragma: no cover 282 def _Put(self, *_): # pragma: no cover
281 pass 283 pass
282 284
283 285
284 class GitRepositoryTest(testing.AppengineTestCase): 286 class GitRepositoryTest(testing.AppengineTestCase):
285 287
286 def setUp(self): 288 def setUp(self):
287 super(GitRepositoryTest, self).setUp() 289 super(GitRepositoryTest, self).setUp()
288 self.http_client_for_git = HttpClientForGit() 290 self.http_client_for_git = HttpClientForGit()
289 self.repo_url = 'https://repo.test' 291 self.repo_url = 'https://repo.test'
290 self.git_repo = git_repository.GitRepository(self.repo_url, 292 self.git_repo = gitiles_repository.GitilesRepository(self.repo_url,
291 self.http_client_for_git) 293 self.http_client_for_git)
292 294
293 def testGitRepositoryPropertySetters(self): 295 def testGitRepositoryPropertySetters(self):
294 http_client_for_git = HttpClientForGit() 296 http_client_for_git = HttpClientForGit()
295 git_repo = git_repository.GitRepository(http_client=http_client_for_git) 297 git_repo = gitiles_repository.GitilesRepository(
298 http_client=http_client_for_git)
296 git_repo.repo_url = 'https://repo' 299 git_repo.repo_url = 'https://repo'
297 self.assertEqual(git_repo.repo_url, 'https://repo') 300 self.assertEqual(git_repo.repo_url, 'https://repo')
298 301
299 self.assertEqual(git_repo. http_client, http_client_for_git) 302 self.assertEqual(git_repo. http_client, http_client_for_git)
300 303
301 def testExtractCommitPositionAndCodeReviewUrl(self): 304 def testExtractCommitPositionAndCodeReviewUrl(self):
302 testcases = [ 305 testcases = [
303 { 306 {
304 'message': 307 'message':
305 'balabala...\n' 308 'balabala...\n'
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 ] 348 ]
346 349
347 for testcase in testcases: 350 for testcase in testcases:
348 (commit_position, 351 (commit_position,
349 code_review_url) = self.git_repo.ExtractCommitPositionAndCodeReviewUrl( 352 code_review_url) = self.git_repo.ExtractCommitPositionAndCodeReviewUrl(
350 testcase['message']) 353 testcase['message'])
351 self.assertEqual(commit_position, testcase['commit_position']) 354 self.assertEqual(commit_position, testcase['commit_position'])
352 self.assertEqual(code_review_url, testcase['code_review_url']) 355 self.assertEqual(code_review_url, testcase['code_review_url'])
353 356
354 def testEndingSlashInRepoUrl(self): 357 def testEndingSlashInRepoUrl(self):
355 git_repo1 = git_repository.GitRepository(self.repo_url, 358 git_repo1 = gitiles_repository.GitilesRepository(
356 self.http_client_for_git) 359 self.repo_url, self.http_client_for_git)
357 self.assertEqual(self.repo_url, git_repo1.repo_url) 360 self.assertEqual(self.repo_url, git_repo1.repo_url)
358 361
359 git_repo2 = git_repository.GitRepository('%s/' % self.repo_url, 362 git_repo2 = gitiles_repository.GitilesRepository(
360 self.http_client_for_git) 363 '%s/' % self.repo_url, self.http_client_for_git)
361 self.assertEqual(self.repo_url, git_repo2.repo_url) 364 self.assertEqual(self.repo_url, git_repo2.repo_url)
362 365
363 def testMalformattedJsonReponse(self): 366 def testMalformattedJsonReponse(self):
364 self.http_client_for_git.SetResponseForUrl( 367 self.http_client_for_git.SetResponseForUrl(
365 '%s/+/%s?format=json' % (self.repo_url, 'aaa'), 'abcde{"a": 1}') 368 '%s/+/%s?format=json' % (self.repo_url, 'aaa'), 'abcde{"a": 1}')
366 self.assertRaisesRegexp( 369 self.assertRaisesRegexp(
367 Exception, re.escape('Response does not begin with )]}\'\n'), 370 Exception, re.escape('Response does not begin with )]}\'\n'),
368 self.git_repo.GetChangeLog, 'aaa') 371 self.git_repo.GetChangeLog, 'aaa')
369 372
370 def testGetChangeLog(self): 373 def testGetChangeLog(self):
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 self.assertIsNone(reverted_revision) 485 self.assertIsNone(reverted_revision)
483 486
484 def testGetCommitsBetweenRevisions(self): 487 def testGetCommitsBetweenRevisions(self):
485 def _MockSendRequestForJsonResponse(*_): 488 def _MockSendRequestForJsonResponse(*_):
486 return { 489 return {
487 'log': [ 490 'log': [
488 {'commit': '3'}, 491 {'commit': '3'},
489 {'commit': '2'}, 492 {'commit': '2'},
490 {'commit': '1'}] 493 {'commit': '1'}]
491 } 494 }
492 self.mock(git_repository.GitRepository, '_SendRequestForJsonResponse', 495 self.mock(gitiles_repository.GitilesRepository,
493 _MockSendRequestForJsonResponse) 496 '_SendRequestForJsonResponse', _MockSendRequestForJsonResponse)
494 expected_commits = ['3', '2', '1'] 497 expected_commits = ['3', '2', '1']
495 actual_commits = self.git_repo.GetCommitsBetweenRevisions('0', '3') 498 actual_commits = self.git_repo.GetCommitsBetweenRevisions('0', '3')
496 self.assertEqual(expected_commits, actual_commits) 499 self.assertEqual(expected_commits, actual_commits)
497 500
498 def testGetCommitsBetweenRevisionsWithEmptyData(self): 501 def testGetCommitsBetweenRevisionsWithEmptyData(self):
499 def _MockSendRequestForJsonResponse(*_): 502 def _MockSendRequestForJsonResponse(*_):
500 return None 503 return None
501 self.mock(git_repository.GitRepository, '_SendRequestForJsonResponse', 504 self.mock(gitiles_repository.GitilesRepository,
502 _MockSendRequestForJsonResponse) 505 '_SendRequestForJsonResponse', _MockSendRequestForJsonResponse)
503 expected_commits = [] 506 expected_commits = []
504 actual_commits = self.git_repo.GetCommitsBetweenRevisions('0', '3') 507 actual_commits = self.git_repo.GetCommitsBetweenRevisions('0', '3')
505 self.assertEqual(expected_commits, actual_commits) 508 self.assertEqual(expected_commits, actual_commits)
506 509
507 def testGetCommitsBetweenRevisionsWithIncompleteData(self): 510 def testGetCommitsBetweenRevisionsWithIncompleteData(self):
508 def _MockSendRequestForJsonResponse(*_): 511 def _MockSendRequestForJsonResponse(*_):
509 return { 512 return {
510 'log': [ 513 'log': [
511 {'commit': '1'}, 514 {'commit': '1'},
512 {'something_else': '2'} 515 {'something_else': '2'}
513 ] 516 ]
514 } 517 }
515 self.mock(git_repository.GitRepository, '_SendRequestForJsonResponse', 518 self.mock(gitiles_repository.GitilesRepository,
516 _MockSendRequestForJsonResponse) 519 '_SendRequestForJsonResponse', _MockSendRequestForJsonResponse)
517 expected_commits = ['1'] 520 expected_commits = ['1']
518 actual_commits = self.git_repo.GetCommitsBetweenRevisions('0', '3') 521 actual_commits = self.git_repo.GetCommitsBetweenRevisions('0', '3')
519 self.assertEqual(expected_commits, actual_commits) 522 self.assertEqual(expected_commits, actual_commits)
520 523
521 def testGetCommitsBetweenRevisionsWithPaging(self): 524 def testGetCommitsBetweenRevisionsWithPaging(self):
522 def _MockSendRequestForJsonResponse(*args, **_): 525 def _MockSendRequestForJsonResponse(*args, **_):
523 url = args[1] 526 url = args[1]
524 if '0..3' in url: 527 if '0..3' in url:
525 return { 528 return {
526 'log': [ 529 'log': [
527 {'commit': '3'}, 530 {'commit': '3'},
528 {'commit': '2'} 531 {'commit': '2'}
529 ], 532 ],
530 'next': '1' 533 'next': '1'
531 } 534 }
532 else: 535 else:
533 return { 536 return {
534 'log': [ 537 'log': [
535 {'commit': '1'} 538 {'commit': '1'}
536 ] 539 ]
537 } 540 }
538 541
539 self.mock(git_repository.GitRepository, '_SendRequestForJsonResponse', 542 self.mock(gitiles_repository.GitilesRepository,
540 _MockSendRequestForJsonResponse) 543 '_SendRequestForJsonResponse', _MockSendRequestForJsonResponse)
541 expected_commits = ['3', '2', '1'] 544 expected_commits = ['3', '2', '1']
542 actual_commits = self.git_repo.GetCommitsBetweenRevisions('0', '3', n=2) 545 actual_commits = self.git_repo.GetCommitsBetweenRevisions('0', '3', n=2)
543 self.assertEqual(expected_commits, actual_commits) 546 self.assertEqual(expected_commits, actual_commits)
544 547
545 def testGetChangeLogs(self): 548 def testGetChangeLogs(self):
546 def _MockSendRequestForJsonResponse(*_, **kargs): 549 def _MockSendRequestForJsonResponse(*_, **kargs):
547 self.assertTrue(bool(kargs)) 550 self.assertTrue(bool(kargs))
548 return {'log': [json.loads(COMMIT_LOG[5:])]} 551 return {'log': [json.loads(COMMIT_LOG[5:])]}
549 552
550 self.mock(git_repository.GitRepository, '_SendRequestForJsonResponse', 553 self.mock(gitiles_repository.GitilesRepository,
551 _MockSendRequestForJsonResponse) 554 '_SendRequestForJsonResponse', _MockSendRequestForJsonResponse)
552 555
553 changelogs = self.git_repo.GetChangeLogs('0', '2') 556 changelogs = self.git_repo.GetChangeLogs('0', '2')
554 557
555 self.assertEqual(len(changelogs), 1) 558 self.assertEqual(len(changelogs), 1)
556 self.assertEqual(changelogs[0].ToDict(), EXPECTED_CHANGE_LOG_JSON) 559 self.assertEqual(changelogs[0].ToDict(), EXPECTED_CHANGE_LOG_JSON)
557 560
558 def testGetChangeLogsNextPage(self): 561 def testGetChangeLogsNextPage(self):
559 log1 = json.loads(COMMIT_LOG[5:]) 562 log1 = json.loads(COMMIT_LOG[5:])
560 log1['commit'] = 'first_commit' 563 log1['commit'] = 'first_commit'
561 log2 = log1.copy() 564 log2 = log1.copy()
562 log2['commit'] = 'next_page_commit' 565 log2['commit'] = 'next_page_commit'
563 566
564 def _MockSendRequestForJsonResponse(_, url, **kargs): 567 def _MockSendRequestForJsonResponse(_, url, **kargs):
565 self.assertTrue(bool(kargs)) 568 self.assertTrue(bool(kargs))
566 if 'next' in url: 569 if 'next' in url:
567 return {'log': [log2]} 570 return {'log': [log2]}
568 571
569 return {'log': [log1], 'next': 'next_page_commit'} 572 return {'log': [log1], 'next': 'next_page_commit'}
570 573
571 self.mock(git_repository.GitRepository, '_SendRequestForJsonResponse', 574 self.mock(gitiles_repository.GitilesRepository,
572 _MockSendRequestForJsonResponse) 575 '_SendRequestForJsonResponse', _MockSendRequestForJsonResponse)
573 576
574 changelogs = self.git_repo.GetChangeLogs('0', '2') 577 changelogs = self.git_repo.GetChangeLogs('0', '2')
575 578
576 self.assertEqual(len(changelogs), 2) 579 self.assertEqual(len(changelogs), 2)
577 580
578 def testGetWrappedGitRepositoryClass(self): 581 def testGetWrappedGitRepositoryClass(self):
579 repo = git_repository.GitRepository('http://repo_url', HttpClientForGit()) 582 repo = gitiles_repository.GitilesRepository(
583 'http://repo_url', HttpClientForGit())
580 584
581 self.assertEqual(repo.repo_url, 'http://repo_url') 585 self.assertEqual(repo.repo_url, 'http://repo_url')
582 self.assertTrue(isinstance(repo.http_client, HttpClientForGit)) 586 self.assertTrue(isinstance(repo.http_client, HttpClientForGit))
OLDNEW
« no previous file with comments | « appengine/findit/lib/gitiles/test/diff_test.py ('k') | appengine/findit/lib/test/__init__.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698