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

Side by Side Diff: testing_support/git_test_utils.py

Issue 1640973002: git_test_utils: Automatic commit dates are now in UTC. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 4 years, 10 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 | « no previous file | 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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 nxt[1] = prev 86 nxt[1] = prev
87 87
88 def pop(self, last=True): # pylint: disable=W0221 88 def pop(self, last=True): # pylint: disable=W0221
89 if not self: 89 if not self:
90 raise KeyError('set is empty') 90 raise KeyError('set is empty')
91 key = self.end[1][0] if last else self.end[2][0] 91 key = self.end[1][0] if last else self.end[2][0]
92 self.discard(key) 92 self.discard(key)
93 return key 93 return key
94 94
95 95
96 class UTC(datetime.tzinfo):
97 """UTC time zone.
98
99 from https://docs.python.org/2/library/datetime.html#tzinfo-objects
100 """
101 def utcoffset(self, dt):
102 return datetime.timedelta(0)
103
104 def tzname(self, dt):
105 return "UTC"
106
107 def dst(self, dt):
108 return datetime.timedelta(0)
109
110
111 UTC = UTC()
112
113
96 class GitRepoSchema(object): 114 class GitRepoSchema(object):
97 """A declarative git testing repo. 115 """A declarative git testing repo.
98 116
99 Pass a schema to __init__ in the form of: 117 Pass a schema to __init__ in the form of:
100 A B C D 118 A B C D
101 B E D 119 B E D
102 120
103 This is the repo 121 This is the repo
104 122
105 A - B - C - D 123 A - B - C - D
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 Automatically creates a temp folder under GitRepo.BASE_TEMP_DIR. It's 278 Automatically creates a temp folder under GitRepo.BASE_TEMP_DIR. It's
261 recommended that you clean this repo up by calling nuke() on it, but if not, 279 recommended that you clean this repo up by calling nuke() on it, but if not,
262 GitRepo will automatically clean up all allocated repos at the exit of the 280 GitRepo will automatically clean up all allocated repos at the exit of the
263 program (assuming a normal exit like with sys.exit) 281 program (assuming a normal exit like with sys.exit)
264 282
265 Args: 283 Args:
266 schema - An instance of GitRepoSchema 284 schema - An instance of GitRepoSchema
267 """ 285 """
268 self.repo_path = tempfile.mkdtemp(dir=self.BASE_TEMP_DIR) 286 self.repo_path = tempfile.mkdtemp(dir=self.BASE_TEMP_DIR)
269 self.commit_map = {} 287 self.commit_map = {}
270 self._date = datetime.datetime(1970, 1, 1) 288 self._date = datetime.datetime(1970, 1, 1, tzinfo=UTC)
271 289
272 self.to_schema_refs = ['--branches'] 290 self.to_schema_refs = ['--branches']
273 291
274 self.git('init') 292 self.git('init')
275 self.git('config', 'user.name', 'testcase') 293 self.git('config', 'user.name', 'testcase')
276 self.git('config', 'user.email', 'testcase@example.com') 294 self.git('config', 'user.email', 'testcase@example.com')
277 for commit in schema.walk(): 295 for commit in schema.walk():
278 self._add_schema_commit(commit, schema.data_for(commit.name)) 296 self._add_schema_commit(commit, schema.data_for(commit.name))
279 self.last_commit = self[commit.name] 297 self.last_commit = self[commit.name]
280 if schema.master: 298 if schema.master:
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 """Runs a git command specified by |args| in this repo.""" 371 """Runs a git command specified by |args| in this repo."""
354 assert self.repo_path is not None 372 assert self.repo_path is not None
355 try: 373 try:
356 with open(os.devnull, 'wb') as devnull: 374 with open(os.devnull, 'wb') as devnull:
357 output = subprocess.check_output( 375 output = subprocess.check_output(
358 ('git',) + args, cwd=self.repo_path, stderr=devnull, **kwargs) 376 ('git',) + args, cwd=self.repo_path, stderr=devnull, **kwargs)
359 return self.COMMAND_OUTPUT(0, output) 377 return self.COMMAND_OUTPUT(0, output)
360 except subprocess.CalledProcessError as e: 378 except subprocess.CalledProcessError as e:
361 return self.COMMAND_OUTPUT(e.returncode, e.output) 379 return self.COMMAND_OUTPUT(e.returncode, e.output)
362 380
381 def show_commit(self, commit_name, format_string):
382 """Shows a commit (by its schema name) with a given format string."""
383 return self.git('show', '-q', '--pretty=format:%s' % format_string,
384 self[commit_name]).stdout
385
363 def git_commit(self, message): 386 def git_commit(self, message):
364 return self.git('commit', '-am', message, env=self.get_git_commit_env()) 387 return self.git('commit', '-am', message, env=self.get_git_commit_env())
365 388
366 def nuke(self): 389 def nuke(self):
367 """Obliterates the git repo on disk. 390 """Obliterates the git repo on disk.
368 391
369 Causes this GitRepo to be unusable. 392 Causes this GitRepo to be unusable.
370 """ 393 """
371 shutil.rmtree(self.repo_path) 394 shutil.rmtree(self.repo_path)
372 self.repo_path = None 395 self.repo_path = None
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 super(GitRepoReadWriteTestBase, self).setUp() 520 super(GitRepoReadWriteTestBase, self).setUp()
498 self.repo = self.r_schema.reify() 521 self.repo = self.r_schema.reify()
499 522
500 def tearDown(self): 523 def tearDown(self):
501 self.repo.nuke() 524 self.repo.nuke()
502 super(GitRepoReadWriteTestBase, self).tearDown() 525 super(GitRepoReadWriteTestBase, self).tearDown()
503 526
504 def assertSchema(self, schema_string): 527 def assertSchema(self, schema_string):
505 self.assertEqual(GitRepoSchema(schema_string).simple_graph(), 528 self.assertEqual(GitRepoSchema(schema_string).simple_graph(),
506 self.repo.to_schema().simple_graph()) 529 self.repo.to_schema().simple_graph())
OLDNEW
« no previous file with comments | « no previous file | tests/git_common_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698