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

Side by Side Diff: tests/fake_repos.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 | « pylintrc ('k') | tests/gcl_unittest.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 """Generate fake repositories for testing.""" 6 """Generate fake repositories for testing."""
7 7
8 import atexit 8 import atexit
9 import errno 9 import errno
10 import logging 10 import logging
(...skipping 10 matching lines...) Expand all
21 21
22 import scm 22 import scm
23 23
24 ## Utility functions 24 ## Utility functions
25 25
26 26
27 def addKill(): 27 def addKill():
28 """Add kill() method to subprocess.Popen for python <2.6""" 28 """Add kill() method to subprocess.Popen for python <2.6"""
29 if getattr(subprocess.Popen, 'kill', None): 29 if getattr(subprocess.Popen, 'kill', None):
30 return 30 return
31 # Unable to import 'module'
32 # pylint: disable=F0401
31 if sys.platform == 'win32': 33 if sys.platform == 'win32':
32 def kill_win(process): 34 def kill_win(process):
33 import win32process 35 import win32process
36 # Access to a protected member _handle of a client class
37 # pylint: disable=W0212
34 return win32process.TerminateProcess(process._handle, -1) 38 return win32process.TerminateProcess(process._handle, -1)
35 subprocess.Popen.kill = kill_win 39 subprocess.Popen.kill = kill_win
36 else: 40 else:
37 def kill_nix(process): 41 def kill_nix(process):
38 import signal 42 import signal
39 return os.kill(process.pid, signal.SIGKILL) 43 return os.kill(process.pid, signal.SIGKILL)
40 subprocess.Popen.kill = kill_nix 44 subprocess.Popen.kill = kill_nix
41 45
42 46
43 def rmtree(*path): 47 def rmtree(*path):
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 elif status[0] == '!': 166 elif status[0] == '!':
163 to_remove.append(filepath) 167 to_remove.append(filepath)
164 if to_add: 168 if to_add:
165 check_call(['svn', 'add', '--no-auto-props', '-q'] + to_add, cwd=repo) 169 check_call(['svn', 'add', '--no-auto-props', '-q'] + to_add, cwd=repo)
166 if to_remove: 170 if to_remove:
167 check_call(['svn', 'remove', '-q'] + to_remove, cwd=repo) 171 check_call(['svn', 'remove', '-q'] + to_remove, cwd=repo)
168 proc = Popen(['svn', 'commit', repo, '-m', 'foo', '--non-interactive', 172 proc = Popen(['svn', 'commit', repo, '-m', 'foo', '--non-interactive',
169 '--no-auth-cache', '--username', 'user1', '--password', 'foo'], 173 '--no-auth-cache', '--username', 'user1', '--password', 'foo'],
170 cwd=repo) 174 cwd=repo)
171 out, err = proc.communicate() 175 out, err = proc.communicate()
172 last_line = out.splitlines()[-1]
173 match = re.search(r'(\d+)', out) 176 match = re.search(r'(\d+)', out)
174 if not match: 177 if not match:
175 raise Exception('Commit failed', out, err, proc.returncode) 178 raise Exception('Commit failed', out, err, proc.returncode)
176 rev = match.group(1) 179 rev = match.group(1)
177 st = Popen(['svn', 'status'], cwd=repo).communicate()[0] 180 st = Popen(['svn', 'status'], cwd=repo).communicate()[0]
178 assert len(st) == 0, st 181 assert len(st) == 0, st
179 logging.debug('At revision %s' % rev) 182 logging.debug('At revision %s' % rev)
180 return rev 183 return rev
181 184
182 185
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 self.svnserve.kill() 263 self.svnserve.kill()
261 self.svnserve = None 264 self.svnserve = None
262 if self.gitdaemon: 265 if self.gitdaemon:
263 logging.debug('Killing git-daemon pid %s' % self.gitdaemon.pid) 266 logging.debug('Killing git-daemon pid %s' % self.gitdaemon.pid)
264 self.gitdaemon.kill() 267 self.gitdaemon.kill()
265 self.gitdaemon = None 268 self.gitdaemon = None
266 if not self.SHOULD_LEAK: 269 if not self.SHOULD_LEAK:
267 logging.debug('Removing %s' % self.trial_dir()) 270 logging.debug('Removing %s' % self.trial_dir())
268 rmtree(self.trial_dir()) 271 rmtree(self.trial_dir())
269 272
270 def _genTree(self, root, tree_dict): 273 @staticmethod
274 def _genTree(root, tree_dict):
271 """For a dictionary of file contents, generate a filesystem.""" 275 """For a dictionary of file contents, generate a filesystem."""
272 if not os.path.isdir(root): 276 if not os.path.isdir(root):
273 os.makedirs(root) 277 os.makedirs(root)
274 for (k, v) in tree_dict.iteritems(): 278 for (k, v) in tree_dict.iteritems():
275 k_os = k.replace('/', os.sep) 279 k_os = k.replace('/', os.sep)
276 k_arr = k_os.split(os.sep) 280 k_arr = k_os.split(os.sep)
277 if len(k_arr) > 1: 281 if len(k_arr) > 1:
278 p = os.sep.join([root] + k_arr[:-1]) 282 p = os.sep.join([root] + k_arr[:-1])
279 if not os.path.isdir(p): 283 if not os.path.isdir(p):
280 os.makedirs(p) 284 os.makedirs(p)
281 if v is None: 285 if v is None:
282 os.remove(join(root, k)) 286 os.remove(join(root, k))
283 else: 287 else:
284 write(join(root, k), v) 288 write(join(root, k), v)
285 289
286 def setUpSVN(self): 290 def setUpSVN(self):
287 """Creates subversion repositories and start the servers.""" 291 """Creates subversion repositories and start the servers."""
288 if self.svnserve: 292 if self.svnserve:
289 return True 293 return True
290 self.setUp() 294 self.setUp()
291 root = join(self.repos_dir, 'svn') 295 root = join(self.repos_dir, 'svn')
292 try: 296 try:
293 check_call(['svnadmin', 'create', root]) 297 check_call(['svnadmin', 'create', root])
294 except OSError: 298 except OSError:
295 self.svn_enabled = False
296 return False 299 return False
297 write(join(root, 'conf', 'svnserve.conf'), 300 write(join(root, 'conf', 'svnserve.conf'),
298 '[general]\n' 301 '[general]\n'
299 'anon-access = read\n' 302 'anon-access = read\n'
300 'auth-access = write\n' 303 'auth-access = write\n'
301 'password-db = passwd\n') 304 'password-db = passwd\n')
302 write(join(root, 'conf', 'passwd'), 305 write(join(root, 'conf', 'passwd'),
303 '[users]\n' 306 '[users]\n'
304 'user1 = foo\n' 307 'user1 = foo\n'
305 'user2 = bar\n') 308 'user2 = bar\n')
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 if self.svn_revs and self.svn_revs[-1]: 544 if self.svn_revs and self.svn_revs[-1]:
542 new_tree = self.svn_revs[-1].copy() 545 new_tree = self.svn_revs[-1].copy()
543 new_tree.update(tree) 546 new_tree.update(tree)
544 else: 547 else:
545 new_tree = tree.copy() 548 new_tree = tree.copy()
546 self.svn_revs.append(new_tree) 549 self.svn_revs.append(new_tree)
547 550
548 def _commit_git(self, repo, tree): 551 def _commit_git(self, repo, tree):
549 repo_root = join(self.git_root, repo) 552 repo_root = join(self.git_root, repo)
550 self._genTree(repo_root, tree) 553 self._genTree(repo_root, tree)
551 hash = commit_git(repo_root) 554 commit_hash = commit_git(repo_root)
552 if self.git_hashes[repo][-1]: 555 if self.git_hashes[repo][-1]:
553 new_tree = self.git_hashes[repo][-1][1].copy() 556 new_tree = self.git_hashes[repo][-1][1].copy()
554 new_tree.update(tree) 557 new_tree.update(tree)
555 else: 558 else:
556 new_tree = tree.copy() 559 new_tree = tree.copy()
557 self.git_hashes[repo].append((hash, new_tree)) 560 self.git_hashes[repo].append((commit_hash, new_tree))
558 561
559 562
560 class FakeReposTestBase(unittest.TestCase): 563 class FakeReposTestBase(unittest.TestCase):
561 """This is vaguely inspired by twisted.""" 564 """This is vaguely inspired by twisted."""
562 565
563 # Replace this in your subclass. 566 # Replace this in your subclass.
564 CLASS_ROOT_DIR = None 567 CLASS_ROOT_DIR = None
565 568
566 # static FakeRepos instance. Lazy loaded. 569 # static FakeRepos instance. Lazy loaded.
567 FAKE_REPOS = None 570 FAKE_REPOS = None
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 670
668 671
669 # Kind of hack. 672 # Kind of hack.
670 if '-l' in sys.argv: 673 if '-l' in sys.argv:
671 FakeRepos.SHOULD_LEAK = True 674 FakeRepos.SHOULD_LEAK = True
672 sys.argv.remove('-l') 675 sys.argv.remove('-l')
673 676
674 677
675 if __name__ == '__main__': 678 if __name__ == '__main__':
676 sys.exit(main(sys.argv)) 679 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « pylintrc ('k') | tests/gcl_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698