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

Side by Side Diff: tests/gclient_scm_test.py

Issue 5695007: Enhance RunPylint to use white_list and black_list arguments. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: address review comment Created 10 years 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 | Annotate | Revision Log
« no previous file with comments | « tests/gcl_unittest.py ('k') | tests/gclient_smoketest.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 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Unit tests for gclient_scm.py.""" 6 """Unit tests for gclient_scm.py."""
7 7
8 # pylint: disable=E1101,E1103,W0403
9
8 # Import before super_mox to keep valid references. 10 # Import before super_mox to keep valid references.
9 from os import rename 11 from os import rename
10 from shutil import rmtree 12 from shutil import rmtree
11 import StringIO
12 from subprocess import Popen, PIPE, STDOUT 13 from subprocess import Popen, PIPE, STDOUT
13 import tempfile 14 import tempfile
14 import unittest 15 import unittest
15 import __builtin__ 16 import __builtin__
16 17
17 # Fixes include path. 18 # Fixes include path.
18 from super_mox import mox, StdoutCheck, TestCaseUtils, SuperMoxTestBase 19 from super_mox import mox, StdoutCheck, TestCaseUtils, SuperMoxTestBase
19 20
20 import sys 21 import sys
21 import gclient_scm 22 import gclient_scm
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 gclient_scm.scm.SVN.current_version = None 56 gclient_scm.scm.SVN.current_version = None
56 # Absolute path of the fake checkout directory. 57 # Absolute path of the fake checkout directory.
57 self.base_path = join(self.root_dir, self.relpath) 58 self.base_path = join(self.root_dir, self.relpath)
58 59
59 def tearDown(self): 60 def tearDown(self):
60 SuperMoxTestBase.tearDown(self) 61 SuperMoxTestBase.tearDown(self)
61 62
62 63
63 class SVNWrapperTestCase(BaseTestCase): 64 class SVNWrapperTestCase(BaseTestCase):
64 class OptionsObject(object): 65 class OptionsObject(object):
65 def __init__(self, verbose=False, revision=None): 66 def __init__(self, verbose=False, revision=None):
66 self.verbose = verbose 67 self.verbose = verbose
67 self.revision = revision 68 self.revision = revision
68 self.manually_grab_svn_rev = True 69 self.manually_grab_svn_rev = True
69 self.deps_os = None 70 self.deps_os = None
70 self.force = False 71 self.force = False
71 self.reset = False 72 self.reset = False
72 self.nohooks = False 73 self.nohooks = False
73 74
74 def Options(self, *args, **kwargs): 75 def Options(self, *args, **kwargs):
75 return self.OptionsObject(*args, **kwargs) 76 return self.OptionsObject(*args, **kwargs)
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 items = [ 202 items = [
202 ('~ ', 'a'), 203 ('~ ', 'a'),
203 ] 204 ]
204 gclient_scm.scm.SVN.CaptureStatus(self.base_path).AndReturn(items) 205 gclient_scm.scm.SVN.CaptureStatus(self.base_path).AndReturn(items)
205 file_path = join(self.base_path, 'a') 206 file_path = join(self.base_path, 'a')
206 gclient_scm.os.path.exists(file_path).AndReturn(True) 207 gclient_scm.os.path.exists(file_path).AndReturn(True)
207 gclient_scm.os.path.isfile(file_path).AndReturn(False) 208 gclient_scm.os.path.isfile(file_path).AndReturn(False)
208 gclient_scm.os.path.islink(file_path).AndReturn(False) 209 gclient_scm.os.path.islink(file_path).AndReturn(False)
209 gclient_scm.os.path.isdir(file_path).AndReturn(True) 210 gclient_scm.os.path.isdir(file_path).AndReturn(True)
210 gclient_scm.gclient_utils.RemoveDirectory(file_path) 211 gclient_scm.gclient_utils.RemoveDirectory(file_path)
211 file_list1 = []
212 gclient_scm.scm.SVN.RunAndGetFileList(options.verbose, 212 gclient_scm.scm.SVN.RunAndGetFileList(options.verbose,
213 ['update', '--revision', 'BASE'], 213 ['update', '--revision', 'BASE'],
214 cwd=self.base_path, 214 cwd=self.base_path,
215 file_list=mox.IgnoreArg()) 215 file_list=mox.IgnoreArg())
216 216
217 self.mox.ReplayAll() 217 self.mox.ReplayAll()
218 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, 218 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
219 relpath=self.relpath) 219 relpath=self.relpath)
220 file_list2 = [] 220 file_list2 = []
221 scm.revert(options, self.args, file_list2) 221 scm.revert(options, self.args, file_list2)
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 gclient_scm.scm.SVN.CaptureInfo(file_info['URL']).AndReturn(file_info) 333 gclient_scm.scm.SVN.CaptureInfo(file_info['URL']).AndReturn(file_info)
334 334
335 self.mox.ReplayAll() 335 self.mox.ReplayAll()
336 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, 336 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
337 relpath=self.relpath) 337 relpath=self.relpath)
338 scm.updatesingle(options, ['DEPS'], files_list) 338 scm.updatesingle(options, ['DEPS'], files_list)
339 self.checkstdout('\n_____ %s at 42\n' % self.relpath) 339 self.checkstdout('\n_____ %s at 42\n' % self.relpath)
340 340
341 def testUpdateSingleCheckoutSVN14(self): 341 def testUpdateSingleCheckoutSVN14(self):
342 options = self.Options(verbose=True) 342 options = self.Options(verbose=True)
343 file_info = {
344 'URL': self.url,
345 'Revision': 42,
346 }
347 343
348 # Checks to make sure that we support svn co --depth. 344 # Checks to make sure that we support svn co --depth.
349 gclient_scm.scm.SVN.current_version = None 345 gclient_scm.scm.SVN.current_version = None
350 gclient_scm.scm.SVN.Capture(['--version'] 346 gclient_scm.scm.SVN.Capture(['--version']
351 ).AndReturn('svn, version 1.4.4 (r25188)') 347 ).AndReturn('svn, version 1.4.4 (r25188)')
352 gclient_scm.os.path.exists(self.base_path).AndReturn(True) 348 gclient_scm.os.path.exists(self.base_path).AndReturn(True)
353 349
354 # When checking out a single file with svn 1.4, we use svn export 350 # When checking out a single file with svn 1.4, we use svn export
355 files_list = self.mox.CreateMockAnything() 351 files_list = self.mox.CreateMockAnything()
356 gclient_scm.gclient_utils.CheckCallAndFilterAndHeader( 352 gclient_scm.gclient_utils.CheckCallAndFilterAndHeader(
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 file_list = [] 455 file_list = []
460 scm.update(options, self.args, file_list) 456 scm.update(options, self.args, file_list)
461 self.checkstdout( 457 self.checkstdout(
462 ('________ found .hg directory; skipping %s\n' % self.relpath)) 458 ('________ found .hg directory; skipping %s\n' % self.relpath))
463 459
464 460
465 class GitWrapperTestCase(GCBaseTestCase, StdoutCheck, TestCaseUtils, 461 class GitWrapperTestCase(GCBaseTestCase, StdoutCheck, TestCaseUtils,
466 unittest.TestCase): 462 unittest.TestCase):
467 """This class doesn't use pymox.""" 463 """This class doesn't use pymox."""
468 class OptionsObject(object): 464 class OptionsObject(object):
469 def __init__(self, verbose=False, revision=None): 465 def __init__(self, verbose=False, revision=None):
470 self.verbose = verbose 466 self.verbose = verbose
471 self.revision = revision 467 self.revision = revision
472 self.manually_grab_svn_rev = True 468 self.manually_grab_svn_rev = True
473 self.deps_os = None 469 self.deps_os = None
474 self.force = False 470 self.force = False
475 self.reset = False 471 self.reset = False
476 self.nohooks = False 472 self.nohooks = False
477 473
478 sample_git_import = """blob 474 sample_git_import = """blob
479 mark :1 475 mark :1
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 from :3 512 from :3
517 M 100644 :4 a 513 M 100644 :4 a
518 M 100644 :5 b 514 M 100644 :5 b
519 515
520 reset refs/heads/master 516 reset refs/heads/master
521 from :3 517 from :3
522 """ 518 """
523 def Options(self, *args, **kwargs): 519 def Options(self, *args, **kwargs):
524 return self.OptionsObject(*args, **kwargs) 520 return self.OptionsObject(*args, **kwargs)
525 521
526 def CreateGitRepo(self, git_import, path): 522 @staticmethod
523 def CreateGitRepo(git_import, path):
527 """Do it for real.""" 524 """Do it for real."""
528 try: 525 try:
529 Popen(['git', 'init', '-q'], stdout=PIPE, stderr=STDOUT, 526 Popen(['git', 'init', '-q'], stdout=PIPE, stderr=STDOUT,
530 cwd=path).communicate() 527 cwd=path).communicate()
531 except OSError: 528 except OSError:
532 # git is not available, skip this test. 529 # git is not available, skip this test.
533 return False 530 return False
534 Popen(['git', 'fast-import', '--quiet'], stdin=PIPE, stdout=PIPE, 531 Popen(['git', 'fast-import', '--quiet'], stdin=PIPE, stdout=PIPE,
535 stderr=STDOUT, cwd=path).communicate(input=git_import) 532 stderr=STDOUT, cwd=path).communicate(input=git_import)
536 Popen(['git', 'checkout', '-q'], stdout=PIPE, stderr=STDOUT, 533 Popen(['git', 'checkout', '-q'], stdout=PIPE, stderr=STDOUT,
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 ('\n________ running \'git diff --name-status ' 684 ('\n________ running \'git diff --name-status '
688 '069c602044c5388d2d15c3f875b057c852003458\' in \'%s\'\nM\ta\n') % 685 '069c602044c5388d2d15c3f875b057c852003458\' in \'%s\'\nM\ta\n') %
689 join(self.root_dir, '.')) 686 join(self.root_dir, '.'))
690 687
691 def testStatus2New(self): 688 def testStatus2New(self):
692 if not self.enabled: 689 if not self.enabled:
693 return 690 return
694 options = self.Options() 691 options = self.Options()
695 expected_file_list = [] 692 expected_file_list = []
696 for f in ['a', 'b']: 693 for f in ['a', 'b']:
697 file_path = join(self.base_path, f) 694 file_path = join(self.base_path, f)
698 open(file_path, 'a').writelines('touched\n') 695 open(file_path, 'a').writelines('touched\n')
699 expected_file_list.extend([file_path]) 696 expected_file_list.extend([file_path])
700 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, 697 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir,
701 relpath=self.relpath) 698 relpath=self.relpath)
702 file_list = [] 699 file_list = []
703 scm.status(options, self.args, file_list) 700 scm.status(options, self.args, file_list)
704 expected_file_list = [join(self.base_path, x) for x in ['a', 'b']] 701 expected_file_list = [join(self.base_path, x) for x in ['a', 'b']]
705 self.assertEquals(sorted(file_list), expected_file_list) 702 self.assertEquals(sorted(file_list), expected_file_list)
706 self.checkstdout( 703 self.checkstdout(
707 ('\n________ running \'git diff --name-status ' 704 ('\n________ running \'git diff --name-status '
708 '069c602044c5388d2d15c3f875b057c852003458\' in \'%s\'\nM\ta\nM\tb\n') % 705 '069c602044c5388d2d15c3f875b057c852003458\' in \'%s\'\nM\ta\nM\tb\n') %
709 join(self.root_dir, '.')) 706 join(self.root_dir, '.'))
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 'Updating 069c602..a7142dc\nFast-forward\n a | 1 +\n b | 1 +\n' 748 'Updating 069c602..a7142dc\nFast-forward\n a | 1 +\n b | 1 +\n'
752 ' 2 files changed, 2 insertions(+), 0 deletions(-)\n\n') 749 ' 2 files changed, 2 insertions(+), 0 deletions(-)\n\n')
753 750
754 def testUpdateUnstagedConflict(self): 751 def testUpdateUnstagedConflict(self):
755 if not self.enabled: 752 if not self.enabled:
756 return 753 return
757 options = self.Options() 754 options = self.Options()
758 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, 755 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir,
759 relpath=self.relpath) 756 relpath=self.relpath)
760 file_path = join(self.base_path, 'b') 757 file_path = join(self.base_path, 'b')
761 f = open(file_path, 'w').writelines('conflict\n') 758 open(file_path, 'w').writelines('conflict\n')
762 exception = ( 759 exception = (
763 "error: Your local changes to 'b' would be overwritten by merge. " 760 "error: Your local changes to 'b' would be overwritten by merge. "
764 "Aborting.\n" 761 "Aborting.\n"
765 "Please, commit your changes or stash them before you can merge.\n") 762 "Please, commit your changes or stash them before you can merge.\n")
766 self.assertRaisesError(exception, scm.update, options, (), []) 763 self.assertRaisesError(exception, scm.update, options, (), [])
767 self.checkstdout('\n_____ . at refs/heads/master\n') 764 self.checkstdout('\n_____ . at refs/heads/master\n')
768 765
769 def testUpdateConflict(self): 766 def testUpdateConflict(self):
770 if not self.enabled: 767 if not self.enabled:
771 return 768 return
772 options = self.Options() 769 options = self.Options()
773 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, 770 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir,
774 relpath=self.relpath) 771 relpath=self.relpath)
775 file_path = join(self.base_path, 'b') 772 file_path = join(self.base_path, 'b')
776 f = open(file_path, 'w').writelines('conflict\n') 773 open(file_path, 'w').writelines('conflict\n')
774 # pylint: disable=W0212
777 scm._Run(['commit', '-am', 'test'], options) 775 scm._Run(['commit', '-am', 'test'], options)
778 __builtin__.raw_input = lambda x: 'y' 776 __builtin__.raw_input = lambda x: 'y'
779 exception = ('Conflict while rebasing this branch.\n' 777 exception = ('Conflict while rebasing this branch.\n'
780 'Fix the conflict and run gclient again.\n' 778 'Fix the conflict and run gclient again.\n'
781 'See \'man git-rebase\' for details.\n') 779 'See \'man git-rebase\' for details.\n')
782 self.assertRaisesError(exception, scm.update, options, (), []) 780 self.assertRaisesError(exception, scm.update, options, (), [])
783 exception = ('\n____ . at refs/heads/master\n' 781 exception = ('\n____ . at refs/heads/master\n'
784 '\tYou have unstaged changes.\n' 782 '\tYou have unstaged changes.\n'
785 '\tPlease commit, stash, or reset.\n') 783 '\tPlease commit, stash, or reset.\n')
786 self.assertRaisesError(exception, scm.update, options, (), []) 784 self.assertRaisesError(exception, scm.update, options, (), [])
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, 816 scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir,
819 relpath=self.relpath) 817 relpath=self.relpath)
820 rev_info = scm.revinfo(options, (), None) 818 rev_info = scm.revinfo(options, (), None)
821 self.assertEquals(rev_info, '069c602044c5388d2d15c3f875b057c852003458') 819 self.assertEquals(rev_info, '069c602044c5388d2d15c3f875b057c852003458')
822 820
823 821
824 if __name__ == '__main__': 822 if __name__ == '__main__':
825 unittest.main() 823 unittest.main()
826 824
827 # vim: ts=2:sw=2:tw=80:et: 825 # vim: ts=2:sw=2:tw=80:et:
OLDNEW
« no previous file with comments | « tests/gcl_unittest.py ('k') | tests/gclient_smoketest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698