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

Side by Side Diff: tools/release/test_search_related_commits.py

Issue 1098123002: [release-tools] Tool to find related commits (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Changes according to review Created 5 years, 7 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
OLDNEW
(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
8 import search_related_commits
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._add_commit_new_file("first", message, "Content")
Michael Achenbach 2015/05/04 08:57:53 nit: remove?
Michael Hablich 2015/05/04 12:17:32 Acknowledged.
48 self._execute_git(["commit", "--allow-empty", "-m", message])
49
50 message = """[crankshaft] Do some stuff
51
52 R=hablich@chromium.org
53
54 Review URL: https://codereview.chromium.org/1084243007
55
56 Cr-Commit-Position: refs/heads/master@{#28030}"""
57
58 self._execute_git(["commit", "--allow-empty", "-m", message])
59
60 def tearDown(self):
61 if path.exists(self.base_dir):
62 shutil.rmtree(self.base_dir)
63
64 def _assert_correct_standard_result(
65 self, result, all_commits, hash_of_first_commit):
66 self.assertEqual(len(result), 1, "Master commit not found")
67 self.assertEqual(
68 result.keys()[0],
Michael Achenbach 2015/05/04 08:57:53 Maybe better assertTrue(result.get(hash_of_first_c
Michael Hablich 2015/05/04 12:17:32 Good point. The dict is (and should be) order-agno
69 hash_of_first_commit,
70 "Master commit is wrong")
71
72 self.assertEqual(
73 len(result[hash_of_first_commit]),
74 1,
75 "Child commit not found")
76 self.assertEqual(
77 all_commits[2],
78 result[hash_of_first_commit][0],
79 "Child commit wrong")
80
81 def _get_commits(self):
82 commits = self._execute_git(
83 ["log", "--format=%H", "--reverse"]).splitlines()
84 return commits
85
86 def testSearchByCommitPosition(self):
Michael Achenbach 2015/05/04 08:57:53 How about one negative example where nothing is fo
Michael Hablich 2015/05/04 12:17:32 Done.
87 message = """Revert of some stuff.
88 > Cr-Commit-Position: refs/heads/master@{#28059}
89 R=mstarzinger@chromium.org
90
91 Review URL: https://codereview.chromium.org/1084243005
92
93 Cr-Commit-Position: refs/heads/master@{#28088}"""
94
95 self._execute_git(["commit", "--allow-empty", "-m", message])
96
97 commits = self._get_commits()
98 hash_of_first_commit = commits[0]
99
100 result = search_related_commits.search_all_related_commits(
Michael Achenbach 2015/05/04 08:57:53 Looks like the deadline=something case is not cove
Michael Hablich 2015/05/04 12:17:32 Done.
101 self.base_dir, hash_of_first_commit, "HEAD",None)
102
103 self._assert_correct_standard_result(result, commits, hash_of_first_commit)
104
105 def testSearchByTitle(self):
106 message = """Revert of some stuff.
107 > [turbofan] Sanitize language mode for javascript operators.
108 > Cr-Commit-Position: refs/heads/master@{#289}
109 R=mstarzinger@chromium.org
110
111 Review URL: https://codereview.chromium.org/1084243005
112
113 Cr-Commit-Position: refs/heads/master@{#28088}"""
114
115 self._execute_git(["commit", "--allow-empty", "-m", message])
116
117 commits = self._get_commits()
118 hash_of_first_commit = commits[0]
119
120 result = search_related_commits.search_all_related_commits(
121 self.base_dir, hash_of_first_commit, "HEAD",None)
Michael Achenbach 2015/05/04 08:57:53 nit: space after , - also rest of this file
Michael Hablich 2015/05/04 12:17:32 Done.
122
123 self._assert_correct_standard_result(result, commits, hash_of_first_commit)
124
125 def testSearchByHash(self):
126 commits = self._get_commits()
127 hash_of_first_commit = commits[0]
128
129 message = """Revert of some stuff.
130 > [turbofan] Sanitize language mode for javascript operators.
131 > Reverting """ + hash_of_first_commit + """
132 > R=mstarzinger@chromium.org
133
134 Review URL: https://codereview.chromium.org/1084243005
135
136 Cr-Commit-Position: refs/heads/master@{#28088}"""
137
138 self._execute_git(["commit", "--allow-empty", "-m", message])
139
140 #Fetch again for an update
141 commits = self._get_commits()
142 hash_of_first_commit = commits[0]
143
144 result = search_related_commits.search_all_related_commits(
145 self.base_dir,
146 hash_of_first_commit,
147 "HEAD",
148 None)
149
150 self._assert_correct_standard_result(result, commits, hash_of_first_commit)
151
152 def testPrettyPrint(self):
153 message = """Revert of some stuff.
154 > [turbofan] Sanitize language mode for javascript operators.
155 > Cr-Commit-Position: refs/heads/master@{#289}
156 R=mstarzinger@chromium.org
157
158 Review URL: https://codereview.chromium.org/1084243005
159
160 Cr-Commit-Position: refs/heads/master@{#28088}"""
161
162 self._execute_git(["commit", "--allow-empty", "-m", message])
163
164 commits = self._get_commits()
165 hash_of_first_commit = commits[0]
166 OptionsStruct = namedtuple(
167 "OptionsStruct",
168 "git_dir of until all prettyprint deadline verbose")
169 options = OptionsStruct(
170 git_dir= self.base_dir,
171 of= [hash_of_first_commit],
172 until= [commits[2]],
173 all= True,
174 prettyprint= True,
175 deadline = None,
176 verbose=False)
177 output = []
178 for current_line in search_related_commits.main(options):
179 output.append(current_line)
180
181 self.assertIs(len(output), 2, "Not exactly two entries written")
182 self.assertTrue(output[0].startswith("+"), "Master entry not marked with +")
183 self.assertTrue(output[1].startswith("| "), "Child entry not marked with |")
184
185 if __name__ == "__main__":
186 #import sys;sys.argv = ['', 'Test.testName']
187 unittest.main()
OLDNEW
« tools/release/search_related_commits.py ('K') | « tools/release/search_related_commits.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698