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

Side by Side Diff: dashboard/dashboard/pinpoint/models/change/change_test.py

Issue 3013013002: [pinpoint] Change refactor. (Closed)
Patch Set: . Created 3 years, 3 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 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import mock
6
7 from dashboard.common import namespaced_stored_object
8 from dashboard.common import testing_common
9 from dashboard.pinpoint.models.change import change
10 from dashboard.pinpoint.models.change import commit
11 from dashboard.pinpoint.models.change import patch
12
13
14 _CATAPULT_URL = ('https://chromium.googlesource.com/'
15 'external/github.com/catapult-project/catapult')
16 _CHROMIUM_URL = 'https://chromium.googlesource.com/chromium/src'
17
18
19 class _ChangeTest(testing_common.TestCase):
20
21 def setUp(self):
22 super(_ChangeTest, self).setUp()
23
24 self.SetCurrentUser('internal@chromium.org', is_admin=True)
25
26 namespaced_stored_object.Set('repositories', {
27 'catapult': {'repository_url': _CATAPULT_URL},
28 'chromium': {'repository_url': _CHROMIUM_URL},
29 })
30
31
32 class ChangeTest(_ChangeTest):
33
34 def testChange(self):
35 base_commit = commit.Commit('chromium', 'aaa7336c821888839f759c6c0a36b56c')
36 dep = commit.Commit('catapult', 'e0a2efbb3d1a81aac3c90041eefec24f066d26ba')
37 p = patch.Patch('https://codereview.chromium.org', 2565263002, 20001)
38
39 # Also test the deps conversion to frozenset.
40 c = change.Change([base_commit, dep], p)
41
42 self.assertEqual(c, change.Change((base_commit, dep), p))
43 string = ('chromium@aaa7336 catapult@e0a2efb + '
44 'https://codereview.chromium.org/2565263002/20001')
45 id_string = ('chromium@aaa7336c821888839f759c6c0a36b56c '
46 'catapult@e0a2efbb3d1a81aac3c90041eefec24f066d26ba + '
47 'https://codereview.chromium.org/2565263002/20001')
48 self.assertEqual(str(c), string)
49 self.assertEqual(c.id_string, id_string)
50 self.assertEqual(c.base_commit, base_commit)
51 self.assertEqual(c.deps, (dep,))
52 self.assertEqual(c.commits, (base_commit, dep))
53 self.assertEqual(c.patch, p)
54
55 def testAsDict(self):
56 commits = (commit.Commit('chromium', 'aaa7336c82'),
57 commit.Commit('catapult', 'e0a2efbb3d'))
58 p = patch.Patch('https://codereview.chromium.org', 2565263002, 20001)
59 c = change.Change(commits, p)
60
61 expected = {
62 'commits': [
63 {
64 'repository': 'chromium',
65 'git_hash': 'aaa7336c82',
66 'url': _CHROMIUM_URL + '/+/aaa7336c82',
67 },
68 {
69 'repository': 'catapult',
70 'git_hash': 'e0a2efbb3d',
71 'url': _CATAPULT_URL + '/+/e0a2efbb3d',
72 },
73 ],
74 'patch': {
75 'server': 'https://codereview.chromium.org',
76 'issue': 2565263002,
77 'patchset': 20001,
78 },
79 }
80 self.assertEqual(c.AsDict(), expected)
81
82 @mock.patch('dashboard.services.gitiles_service.CommitInfo')
83 def testFromDictWithJustOneCommit(self, _):
84 c = change.Change.FromDict({
85 'commits': [{'repository': 'chromium', 'git_hash': 'aaa7336'}],
86 })
87
88 expected = change.Change((commit.Commit('chromium', 'aaa7336'),))
89 self.assertEqual(c, expected)
90
91 @mock.patch('dashboard.services.gitiles_service.CommitInfo')
92 def testFromDictWithAllFields(self, _):
93 c = change.Change.FromDict({
94 'commits': (
95 {'repository': 'chromium', 'git_hash': 'aaa7336'},
96 {'repository': 'catapult', 'git_hash': 'e0a2efb'},
97 ),
98 'patch': {
99 'server': 'https://codereview.chromium.org',
100 'issue': 2565263002,
101 'patchset': 20001,
102 },
103 })
104
105 commits = (commit.Commit('chromium', 'aaa7336'),
106 commit.Commit('catapult', 'e0a2efb'))
107 p = patch.Patch('https://codereview.chromium.org', 2565263002, 20001)
108 expected = change.Change(commits, p)
109 self.assertEqual(c, expected)
110
111
112 class MidpointTest(_ChangeTest):
113
114 def setUp(self):
115 super(MidpointTest, self).setUp()
116
117 patcher = mock.patch('dashboard.services.gitiles_service.CommitRange')
118 self.addCleanup(patcher.stop)
119 commit_range = patcher.start()
120 def _CommitRange(repository_url, first_git_hash, last_git_hash):
121 del repository_url
122 first_git_hash = int(first_git_hash)
123 last_git_hash = int(last_git_hash)
124 return [{'commit': x} for x in xrange(last_git_hash, first_git_hash, -1)]
125 commit_range.side_effect = _CommitRange
126
127 patcher = mock.patch('dashboard.services.gitiles_service.FileContents')
128 self.addCleanup(patcher.stop)
129 file_contents = patcher.start()
130 def _FileContents(repository_url, git_hash, path):
131 del path
132 if repository_url != _CHROMIUM_URL:
133 return 'deps = {}'
134 if git_hash <= 4: # DEPS roll at chromium@5
135 return 'deps = {"chromium/catapult": "%s@0"}' % (_CATAPULT_URL + '.git')
136 else:
137 return 'deps = {"chromium/catapult": "%s@9"}' % _CATAPULT_URL
138 file_contents.side_effect = _FileContents
139
140 def testDifferingPatch(self):
141 change_a = change.Change((commit.Commit('chromium', '0e57e2b'),))
142 change_b = change.Change(
143 (commit.Commit('chromium', 'babe852'),),
144 patch=patch.Patch('https://codereview.chromium.org', 2565263002, 20001))
145 with self.assertRaises(commit.NonLinearError):
146 change.Change.Midpoint(change_a, change_b)
147
148 def testDifferingRepository(self):
149 change_a = change.Change((commit.Commit('chromium', '0e57e2b'),))
150 change_b = change.Change((commit.Commit('not_chromium', 'babe852'),))
151 with self.assertRaises(commit.NonLinearError):
152 change.Change.Midpoint(change_a, change_b)
153
154 def testDifferingCommitCount(self):
155 change_a = change.Change((commit.Commit('chromium', 0),))
156 change_b = change.Change((commit.Commit('chromium', 9),
157 commit.Commit('not_chromium', 'babe852')))
158 with self.assertRaises(commit.NonLinearError):
159 change.Change.Midpoint(change_a, change_b)
160
161 def testSameChange(self):
162 change_a = change.Change((commit.Commit('chromium', 0),))
163 change_b = change.Change((commit.Commit('chromium', 0),))
164 with self.assertRaises(commit.NonLinearError):
165 change.Change.Midpoint(change_a, change_b)
166
167 def testAdjacentWithNoDepsRoll(self):
168 change_a = change.Change((commit.Commit('chromium', 0),))
169 change_b = change.Change((commit.Commit('chromium', 1),))
170 with self.assertRaises(commit.NonLinearError):
171 change.Change.Midpoint(change_a, change_b)
172
173 def testAdjacentWithDepsRoll(self):
174 change_a = change.Change((commit.Commit('chromium', 4),))
175 change_b = change.Change((commit.Commit('chromium', 5),))
176 expected = change.Change((commit.Commit('chromium', 4),
177 commit.Commit('catapult', 4)))
178 self.assertEqual(change.Change.Midpoint(change_a, change_b), expected)
179
180 def testNotAdjacent(self):
181 change_a = change.Change((commit.Commit('chromium', 0),))
182 change_b = change.Change((commit.Commit('chromium', 9),))
183 self.assertEqual(change.Change.Midpoint(change_a, change_b),
184 change.Change((commit.Commit('chromium', 4),)))
185
186 def testDepsRollLeft(self):
187 change_a = change.Change((commit.Commit('chromium', 4),))
188 change_b = change.Change((commit.Commit('chromium', 4),
189 commit.Commit('catapult', 4)))
190 expected = change.Change((commit.Commit('chromium', 4),
191 commit.Commit('catapult', 2)))
192 self.assertEqual(change.Change.Midpoint(change_a, change_b), expected)
193
194 def testDepsRollRight(self):
195 change_a = change.Change((commit.Commit('chromium', 4),
196 commit.Commit('catapult', 4)))
197 change_b = change.Change((commit.Commit('chromium', 5),))
198 expected = change.Change((commit.Commit('chromium', 4),
199 commit.Commit('catapult', 6)))
200 self.assertEqual(change.Change.Midpoint(change_a, change_b), expected)
201
202 def testAdjacentWithDepsRollAndDepAlreadyOverridden(self):
203 change_a = change.Change((commit.Commit('chromium', 4),))
204 change_b = change.Change((commit.Commit('chromium', 5),
205 commit.Commit('catapult', 4)))
206 expected = change.Change((commit.Commit('chromium', 4),
207 commit.Commit('catapult', 2)))
208 self.assertEqual(change.Change.Midpoint(change_a, change_b), expected)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698