Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 #!/usr/bin/env python | |
| 2 # Copyright 2015 the V8 project authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 from collections import namedtuple | |
| 7 from os import path | |
|
Michael Achenbach
2015/09/17 14:19:00
nit: order
Michael Hablich
2015/09/18 07:38:47
Acknowledged.
| |
| 8 import mergeinfo | |
| 9 import shutil | |
| 10 from subprocess import Popen, PIPE, check_call | |
| 11 import unittest | |
| 12 | |
| 13 | |
| 14 TEST_CONFIG = { | |
| 15 "GIT_REPO": "/tmp/test-v8-search-related-commits", | |
| 16 } | |
| 17 | |
| 18 class TestSearchRelatedCommits(unittest.TestCase): | |
| 19 | |
| 20 base_dir = TEST_CONFIG["GIT_REPO"] | |
| 21 | |
| 22 def _execute_git(self, git_args): | |
| 23 | |
| 24 fullCommand = ["git", "-C", self.base_dir] + git_args | |
| 25 p = Popen(args=fullCommand, stdin=PIPE, | |
| 26 stdout=PIPE, stderr=PIPE) | |
| 27 output, err = p.communicate() | |
| 28 rc = p.returncode | |
| 29 if rc != 0: | |
| 30 raise Exception(err) | |
| 31 return output | |
| 32 | |
| 33 def setUp(self): | |
| 34 if path.exists(self.base_dir): | |
| 35 shutil.rmtree(self.base_dir) | |
| 36 | |
| 37 check_call(["git", "init", self.base_dir]) | |
| 38 | |
| 39 # Initial commit | |
| 40 message = """[turbofan] Sanitize language mode for javascript operators. | |
| 41 | |
| 42 R=mstarzinger@chromium.org | |
| 43 | |
| 44 Review URL: https://codereview.chromium.org/1084243005 | |
| 45 | |
| 46 Cr-Commit-Position: refs/heads/master@{#28059}""" | |
| 47 self._make_empty_commit(message) | |
| 48 | |
| 49 message = """[crankshaft] Do some stuff | |
| 50 | |
| 51 R=hablich@chromium.org | |
| 52 | |
| 53 Review URL: https://codereview.chromium.org/1084243007 | |
| 54 | |
| 55 Cr-Commit-Position: refs/heads/master@{#28030}""" | |
| 56 | |
| 57 self._make_empty_commit(message) | |
| 58 | |
| 59 def tearDown(self): | |
| 60 if path.exists(self.base_dir): | |
| 61 shutil.rmtree(self.base_dir) | |
| 62 | |
| 63 def _assert_correct_standard_result( | |
| 64 self, result, all_commits, hash_of_first_commit): | |
| 65 self.assertEqual(len(result), 1, "Master commit not found") | |
| 66 self.assertTrue( | |
| 67 result.get(hash_of_first_commit), | |
| 68 "Master commit is wrong") | |
| 69 | |
| 70 self.assertEqual( | |
| 71 len(result[hash_of_first_commit]), | |
| 72 1, | |
| 73 "Child commit not found") | |
| 74 self.assertEqual( | |
| 75 all_commits[2], | |
| 76 result[hash_of_first_commit][0], | |
| 77 "Child commit wrong") | |
| 78 | |
| 79 def _get_commits(self): | |
| 80 commits = self._execute_git( | |
|
Michael Achenbach
2015/09/17 14:19:00
nit: remove local var?
Michael Hablich
2015/09/18 07:38:47
I think it is easier to debug that way.
| |
| 81 ["log", "--format=%H", "--reverse"]).splitlines() | |
| 82 return commits | |
| 83 | |
| 84 def _make_empty_commit(self, message): | |
| 85 self._execute_git(["commit", "--allow-empty", "-m", message]) | |
| 86 | |
| 87 def testLonelyCommit(self): | |
| 88 message = '''Initial commit''' | |
| 89 self._make_empty_commit(message) | |
| 90 commits = self._get_commits() | |
| 91 hash_of_first_commit = commits[0] | |
| 92 | |
| 93 result = mergeinfo.describe_commit( | |
| 94 self.base_dir, | |
| 95 hash_of_first_commit, | |
| 96 False) | |
| 97 | |
| 98 self.assertEqual( | |
| 99 result, | |
| 100 hash_of_first_commit) | |
| 101 | |
| 102 def testSearchFollowUpCommits(self): | |
| 103 message = 'Initial commit' | |
| 104 self._make_empty_commit(message) | |
| 105 commits = self._get_commits() | |
| 106 hash_of_first_commit = commits[0] | |
| 107 | |
| 108 message = 'Follow-up commit of ' + hash_of_first_commit | |
| 109 self._make_empty_commit(message) | |
| 110 self._make_empty_commit(message) | |
| 111 self._make_empty_commit(message) | |
| 112 message = 'Not related commit' | |
| 113 self._make_empty_commit(message) | |
| 114 | |
| 115 commits = self._get_commits() | |
| 116 | |
| 117 followups = mergeinfo.get_followup_commits( | |
| 118 self.base_dir, | |
| 119 hash_of_first_commit, | |
| 120 False) | |
|
Michael Achenbach
2015/09/17 14:19:00
Shoudn't this assert something?"
Michael Hablich
2015/09/18 07:38:47
Right. Currently I am in the process of writing th
| |
| 121 | |
| 122 | |
| 123 if __name__ == "__main__": | |
| 124 #import sys;sys.argv = ['', 'Test.testName'] | |
| 125 unittest.main() | |
| OLD | NEW |