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

Side by Side Diff: testing_support/git_test_utils.py

Issue 184113002: Add git-map and git-short-map to depot_tools. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@new_branch
Patch Set: Make it work on windows Created 6 years, 9 months 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 | « git_number.py ('k') | tests/git_common_test.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 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 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 atexit 5 import atexit
6 import collections 6 import collections
7 import copy 7 import copy
8 import datetime 8 import datetime
9 import hashlib 9 import hashlib
10 import os 10 import os
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 Args: 249 Args:
250 schema - An instance of GitRepoSchema 250 schema - An instance of GitRepoSchema
251 """ 251 """
252 self.repo_path = tempfile.mkdtemp(dir=self.BASE_TEMP_DIR) 252 self.repo_path = tempfile.mkdtemp(dir=self.BASE_TEMP_DIR)
253 self.commit_map = {} 253 self.commit_map = {}
254 self._date = datetime.datetime(1970, 1, 1) 254 self._date = datetime.datetime(1970, 1, 1)
255 255
256 self.git('init') 256 self.git('init')
257 for commit in schema.walk(): 257 for commit in schema.walk():
258 self._add_schema_commit(commit, schema.data_for(commit.name)) 258 self._add_schema_commit(commit, schema.data_for(commit.name))
259 self.last_commit = self[commit.name]
259 if schema.master: 260 if schema.master:
260 self.git('update-ref', 'master', self[schema.master]) 261 self.git('update-ref', 'master', self[schema.master])
261 262
262 def __getitem__(self, commit_name): 263 def __getitem__(self, commit_name):
263 """Gets the hash of a commit by its schema name. 264 """Gets the hash of a commit by its schema name.
264 265
265 >>> r = GitRepo(GitRepoSchema('A B C')) 266 >>> r = GitRepo(GitRepoSchema('A B C'))
266 >>> r['B'] 267 >>> r['B']
267 '7381febe1da03b09da47f009963ab7998a974935' 268 '7381febe1da03b09da47f009963ab7998a974935'
268 """ 269 """
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 if mode and not deleted: 315 if mode and not deleted:
315 os.chmod(path, mode) 316 os.chmod(path, mode)
316 317
317 self.git('add', fname) 318 self.git('add', fname)
318 319
319 rslt = self.git('commit', '--allow-empty', '-m', commit.name, env=env) 320 rslt = self.git('commit', '--allow-empty', '-m', commit.name, env=env)
320 assert rslt.retcode == 0, 'Failed to commit %s' % str(commit) 321 assert rslt.retcode == 0, 'Failed to commit %s' % str(commit)
321 self.commit_map[commit.name] = self.git('rev-parse', 'HEAD').stdout.strip() 322 self.commit_map[commit.name] = self.git('rev-parse', 'HEAD').stdout.strip()
322 self.git('tag', 'tag_%s' % commit.name, self[commit.name]) 323 self.git('tag', 'tag_%s' % commit.name, self[commit.name])
323 if commit.is_branch: 324 if commit.is_branch:
324 self.git('update-ref', 'branch_%s' % commit.name, self[commit.name]) 325 self.git('branch', '-f', 'branch_%s' % commit.name, self[commit.name])
325 326
326 def git(self, *args, **kwargs): 327 def git(self, *args, **kwargs):
327 """Runs a git command specified by |args| in this repo.""" 328 """Runs a git command specified by |args| in this repo."""
328 assert self.repo_path is not None 329 assert self.repo_path is not None
329 try: 330 try:
330 with open(os.devnull, 'wb') as devnull: 331 with open(os.devnull, 'wb') as devnull:
331 output = subprocess.check_output( 332 output = subprocess.check_output(
332 ('git',) + args, cwd=self.repo_path, stderr=devnull, **kwargs) 333 ('git',) + args, cwd=self.repo_path, stderr=devnull, **kwargs)
333 return self.COMMAND_OUTPUT(0, output) 334 return self.COMMAND_OUTPUT(0, output)
334 except subprocess.CalledProcessError as e: 335 except subprocess.CalledProcessError as e:
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 for the duration of all the tests in the subclass. 388 for the duration of all the tests in the subclass.
388 """ 389 """
389 REPO = None 390 REPO = None
390 391
391 @classmethod 392 @classmethod
392 def setUpClass(cls): 393 def setUpClass(cls):
393 super(GitRepoReadOnlyTestBase, cls).setUpClass() 394 super(GitRepoReadOnlyTestBase, cls).setUpClass()
394 assert cls.REPO is not None 395 assert cls.REPO is not None
395 cls.repo = cls.r_schema.reify() 396 cls.repo = cls.r_schema.reify()
396 397
398 def setUp(self):
399 self.repo.git('checkout', '-f', self.repo.last_commit)
400
397 @classmethod 401 @classmethod
398 def tearDownClass(cls): 402 def tearDownClass(cls):
399 cls.repo.nuke() 403 cls.repo.nuke()
400 super(GitRepoReadOnlyTestBase, cls).tearDownClass() 404 super(GitRepoReadOnlyTestBase, cls).tearDownClass()
401 405
402 406
403 class GitRepoReadWriteTestBase(GitRepoSchemaTestBase): 407 class GitRepoReadWriteTestBase(GitRepoSchemaTestBase):
404 """Injects a GitRepo object given the schema and content from 408 """Injects a GitRepo object given the schema and content from
405 GitRepoSchemaTestBase into TestCase classes which subclass this. 409 GitRepoSchemaTestBase into TestCase classes which subclass this.
406 410
407 This GitRepo will appear as self.repo, and will be deleted and recreated for 411 This GitRepo will appear as self.repo, and will be deleted and recreated for
408 each test function in the subclass. 412 each test function in the subclass.
409 """ 413 """
410 REPO = None 414 REPO = None
411 415
412 def setUp(self): 416 def setUp(self):
413 super(GitRepoReadWriteTestBase, self).setUp() 417 super(GitRepoReadWriteTestBase, self).setUp()
414 self.repo = self.r_schema.reify() 418 self.repo = self.r_schema.reify()
415 419
416 def tearDown(self): 420 def tearDown(self):
417 self.repo.nuke() 421 self.repo.nuke()
418 super(GitRepoReadWriteTestBase, self).tearDown() 422 super(GitRepoReadWriteTestBase, self).tearDown()
OLDNEW
« no previous file with comments | « git_number.py ('k') | tests/git_common_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698