| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2011 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 | 8 # pylint: disable=E1101,E1103,W0403 |
| 9 | 9 |
| 10 # Import before super_mox to keep valid references. | 10 # Import before super_mox to keep valid references. |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 gclient_scm.scm.SVN.current_version = None | 58 gclient_scm.scm.SVN.current_version = None |
| 59 # Absolute path of the fake checkout directory. | 59 # Absolute path of the fake checkout directory. |
| 60 self.base_path = join(self.root_dir, self.relpath) | 60 self.base_path = join(self.root_dir, self.relpath) |
| 61 | 61 |
| 62 def tearDown(self): | 62 def tearDown(self): |
| 63 SuperMoxTestBase.tearDown(self) | 63 SuperMoxTestBase.tearDown(self) |
| 64 | 64 |
| 65 | 65 |
| 66 class SVNWrapperTestCase(BaseTestCase): | 66 class SVNWrapperTestCase(BaseTestCase): |
| 67 class OptionsObject(object): | 67 class OptionsObject(object): |
| 68 def __init__(self, verbose=False, revision=None): | 68 def __init__(self, verbose=False, revision=None, force=False): |
| 69 self.verbose = verbose | 69 self.verbose = verbose |
| 70 self.revision = revision | 70 self.revision = revision |
| 71 self.manually_grab_svn_rev = True | 71 self.manually_grab_svn_rev = True |
| 72 self.deps_os = None | 72 self.deps_os = None |
| 73 self.force = False | 73 self.force = force |
| 74 self.reset = False | 74 self.reset = False |
| 75 self.nohooks = False | 75 self.nohooks = False |
| 76 | 76 |
| 77 def Options(self, *args, **kwargs): | 77 def Options(self, *args, **kwargs): |
| 78 return self.OptionsObject(*args, **kwargs) | 78 return self.OptionsObject(*args, **kwargs) |
| 79 | 79 |
| 80 def setUp(self): | 80 def setUp(self): |
| 81 BaseTestCase.setUp(self) | 81 BaseTestCase.setUp(self) |
| 82 self.url = self.SvnUrl() | 82 self.url = self.SvnUrl() |
| 83 | 83 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 self.assertRaisesError(exception, scm.RunCommand, | 125 self.assertRaisesError(exception, scm.RunCommand, |
| 126 'update', options, self.args) | 126 'update', options, self.args) |
| 127 | 127 |
| 128 def testRunCommandUnknown(self): | 128 def testRunCommandUnknown(self): |
| 129 # TODO(maruel): if ever used. | 129 # TODO(maruel): if ever used. |
| 130 pass | 130 pass |
| 131 | 131 |
| 132 def testRevertMissing(self): | 132 def testRevertMissing(self): |
| 133 options = self.Options(verbose=True) | 133 options = self.Options(verbose=True) |
| 134 gclient_scm.os.path.isdir(self.base_path).AndReturn(False) | 134 gclient_scm.os.path.isdir(self.base_path).AndReturn(False) |
| 135 gclient_scm.os.path.exists(self.base_path).AndReturn(False) |
| 135 gclient_scm.scm.SVN.Capture(['--version'] | 136 gclient_scm.scm.SVN.Capture(['--version'] |
| 136 ).AndReturn('svn, version 1.5.1 (r32289)') | 137 ).AndReturn('svn, version 1.5.1 (r32289)') |
| 137 # It'll to a checkout instead. | 138 # It'll to a checkout instead. |
| 138 gclient_scm.os.path.exists(join(self.base_path, '.git')).AndReturn(False) | 139 gclient_scm.os.path.exists(join(self.base_path, '.git')).AndReturn(False) |
| 139 gclient_scm.os.path.exists(join(self.base_path, '.hg')).AndReturn(False) | 140 gclient_scm.os.path.exists(join(self.base_path, '.hg')).AndReturn(False) |
| 140 # Checkout. | 141 # Checkout. |
| 141 gclient_scm.os.path.exists(self.base_path).AndReturn(False) | 142 gclient_scm.os.path.exists(self.base_path).AndReturn(False) |
| 142 files_list = self.mox.CreateMockAnything() | 143 files_list = self.mox.CreateMockAnything() |
| 143 gclient_scm.scm.SVN.RunAndGetFileList( | 144 gclient_scm.scm.SVN.RunAndGetFileList( |
| 144 options.verbose, | 145 options.verbose, |
| 145 ['checkout', self.url, self.base_path, '--force', '--ignore-externals'], | 146 ['checkout', self.url, self.base_path, '--force', '--ignore-externals'], |
| 146 cwd=self.root_dir, | 147 cwd=self.root_dir, |
| 147 file_list=files_list) | 148 file_list=files_list) |
| 148 | 149 |
| 149 self.mox.ReplayAll() | 150 self.mox.ReplayAll() |
| 150 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, | 151 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| 151 relpath=self.relpath) | 152 relpath=self.relpath) |
| 152 scm.revert(options, self.args, files_list) | 153 scm.revert(options, self.args, files_list) |
| 153 self.checkstdout( | 154 self.checkstdout( |
| 154 ('\n_____ %s is missing, synching instead\n' % self.relpath)) | 155 ('\n_____ %s is missing, synching instead\n' % self.relpath)) |
| 155 | 156 |
| 157 def testRevertNoDotSvn(self): |
| 158 options = self.Options(verbose=True, force=True) |
| 159 gclient_scm.os.path.isdir(self.base_path).AndReturn(True) |
| 160 gclient_scm.os.path.isdir(join(self.base_path, '.svn')).AndReturn(False) |
| 161 gclient_scm.os.path.isdir(join(self.base_path, '.git')).AndReturn(False) |
| 162 gclient_scm.os.path.isdir(join(self.base_path, '.hg')).AndReturn(False) |
| 163 # Checkout. |
| 164 gclient_scm.os.path.exists(self.base_path).AndReturn(False) |
| 165 gclient_scm.os.path.exists(join(self.base_path, '.git')).AndReturn(False) |
| 166 gclient_scm.os.path.exists(join(self.base_path, '.hg')).AndReturn(False) |
| 167 gclient_scm.os.path.exists(self.base_path).AndReturn(False) |
| 168 files_list = self.mox.CreateMockAnything() |
| 169 gclient_scm.scm.SVN.Capture(['--version']).AndReturn('svn, version 1.6') |
| 170 gclient_scm.scm.SVN.RunAndGetFileList( |
| 171 options.verbose, |
| 172 ['checkout', self.url, self.base_path, '--force', '--ignore-externals'], |
| 173 cwd=self.root_dir, |
| 174 file_list=files_list) |
| 175 |
| 176 self.mox.ReplayAll() |
| 177 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| 178 relpath=self.relpath) |
| 179 scm.revert(options, self.args, files_list) |
| 180 self.checkstdout( |
| 181 '\n_____ %s is not a valid svn checkout, synching instead\n' % |
| 182 self.relpath) |
| 183 |
| 156 def testRevertNone(self): | 184 def testRevertNone(self): |
| 157 options = self.Options(verbose=True) | 185 options = self.Options(verbose=True) |
| 158 gclient_scm.os.path.isdir(self.base_path).AndReturn(True) | 186 gclient_scm.os.path.isdir(self.base_path).AndReturn(True) |
| 187 gclient_scm.os.path.isdir(join(self.base_path, '.svn')).AndReturn(True) |
| 159 gclient_scm.scm.SVN.CaptureStatus(self.base_path).AndReturn([]) | 188 gclient_scm.scm.SVN.CaptureStatus(self.base_path).AndReturn([]) |
| 160 gclient_scm.scm.SVN.RunAndGetFileList( | 189 gclient_scm.scm.SVN.RunAndGetFileList( |
| 161 options.verbose, | 190 options.verbose, |
| 162 ['update', '--revision', 'BASE', '--ignore-externals'], | 191 ['update', '--revision', 'BASE', '--ignore-externals'], |
| 163 cwd=self.base_path, | 192 cwd=self.base_path, |
| 164 file_list=mox.IgnoreArg()) | 193 file_list=mox.IgnoreArg()) |
| 165 | 194 |
| 166 self.mox.ReplayAll() | 195 self.mox.ReplayAll() |
| 167 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, | 196 scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| 168 relpath=self.relpath) | 197 relpath=self.relpath) |
| 169 file_list = [] | 198 file_list = [] |
| 170 scm.revert(options, self.args, file_list) | 199 scm.revert(options, self.args, file_list) |
| 171 | 200 |
| 172 def testRevertDirectory(self): | 201 def testRevertDirectory(self): |
| 173 options = self.Options(verbose=True) | 202 options = self.Options(verbose=True) |
| 174 gclient_scm.os.path.isdir(self.base_path).AndReturn(True) | 203 gclient_scm.os.path.isdir(self.base_path).AndReturn(True) |
| 204 gclient_scm.os.path.isdir(join(self.base_path, '.svn')).AndReturn(True) |
| 175 items = [ | 205 items = [ |
| 176 ('~ ', 'a'), | 206 ('~ ', 'a'), |
| 177 ] | 207 ] |
| 178 gclient_scm.scm.SVN.CaptureStatus(self.base_path).AndReturn(items) | 208 gclient_scm.scm.SVN.CaptureStatus(self.base_path).AndReturn(items) |
| 179 file_path = join(self.base_path, 'a') | 209 file_path = join(self.base_path, 'a') |
| 180 gclient_scm.os.path.exists(file_path).AndReturn(True) | 210 gclient_scm.os.path.exists(file_path).AndReturn(True) |
| 181 gclient_scm.os.path.isfile(file_path).AndReturn(False) | 211 gclient_scm.os.path.isfile(file_path).AndReturn(False) |
| 182 gclient_scm.os.path.islink(file_path).AndReturn(False) | 212 gclient_scm.os.path.islink(file_path).AndReturn(False) |
| 183 gclient_scm.os.path.isdir(file_path).AndReturn(True) | 213 gclient_scm.os.path.isdir(file_path).AndReturn(True) |
| 184 gclient_scm.gclient_utils.RemoveDirectory(file_path) | 214 gclient_scm.gclient_utils.RemoveDirectory(file_path) |
| (...skipping 704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 889 | 919 |
| 890 if __name__ == '__main__': | 920 if __name__ == '__main__': |
| 891 if '-v' in sys.argv: | 921 if '-v' in sys.argv: |
| 892 logging.basicConfig( | 922 logging.basicConfig( |
| 893 level=logging.DEBUG, | 923 level=logging.DEBUG, |
| 894 format='%(asctime).19s %(levelname)s %(filename)s:' | 924 format='%(asctime).19s %(levelname)s %(filename)s:' |
| 895 '%(lineno)s %(message)s') | 925 '%(lineno)s %(message)s') |
| 896 unittest.main() | 926 unittest.main() |
| 897 | 927 |
| 898 # vim: ts=2:sw=2:tw=80:et: | 928 # vim: ts=2:sw=2:tw=80:et: |
| OLD | NEW |