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

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

Issue 3013013002: [pinpoint] Change refactor. (Closed)
Patch Set: UI 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.last_commit, dep)
52 self.assertEqual(c.deps, (dep,))
53 self.assertEqual(c.commits, (base_commit, dep))
54 self.assertEqual(c.patch, p)
55
56 def testAsDict(self):
57 commits = (commit.Commit('chromium', 'aaa7336c82'),
58 commit.Commit('catapult', 'e0a2efbb3d'))
59 p = patch.Patch('https://codereview.chromium.org', 2565263002, 20001)
60 c = change.Change(commits, p)
61
62 expected = {
63 'commits': [
64 {
65 'repository': 'chromium',
66 'git_hash': 'aaa7336c82',
67 'url': _CHROMIUM_URL + '/+/aaa7336c82',
68 },
69 {
70 'repository': 'catapult',
71 'git_hash': 'e0a2efbb3d',
72 'url': _CATAPULT_URL + '/+/e0a2efbb3d',
73 },
74 ],
75 'patch': {
76 'server': 'https://codereview.chromium.org',
77 'issue': 2565263002,
78 'patchset': 20001,
79 },
80 }
81 self.assertEqual(c.AsDict(), expected)
82
83 @mock.patch('dashboard.services.gitiles_service.CommitInfo')
84 def testFromDictWithJustOneCommit(self, _):
85 c = change.Change.FromDict({
86 'commits': [{'repository': 'chromium', 'git_hash': 'aaa7336'}],
87 })
88
89 expected = change.Change((commit.Commit('chromium', 'aaa7336'),))
90 self.assertEqual(c, expected)
91
92 @mock.patch('dashboard.services.gitiles_service.CommitInfo')
93 def testFromDictWithAllFields(self, _):
94 c = change.Change.FromDict({
95 'commits': (
96 {'repository': 'chromium', 'git_hash': 'aaa7336'},
97 {'repository': 'catapult', 'git_hash': 'e0a2efb'},
98 ),
99 'patch': {
100 'server': 'https://codereview.chromium.org',
101 'issue': 2565263002,
102 'patchset': 20001,
103 },
104 })
105
106 commits = (commit.Commit('chromium', 'aaa7336'),
107 commit.Commit('catapult', 'e0a2efb'))
108 p = patch.Patch('https://codereview.chromium.org', 2565263002, 20001)
109 expected = change.Change(commits, p)
110 self.assertEqual(c, expected)
111
112
113 class MidpointTest(_ChangeTest):
114
115 def setUp(self):
116 super(MidpointTest, self).setUp()
117
118 patcher = mock.patch('dashboard.services.gitiles_service.CommitRange')
119 self.addCleanup(patcher.stop)
120 commit_range = patcher.start()
121 def _CommitRange(repository_url, first_git_hash, last_git_hash):
122 del repository_url
123 first_git_hash = int(first_git_hash)
124 last_git_hash = int(last_git_hash)
125 return [{'commit': x} for x in xrange(last_git_hash, first_git_hash, -1)]
126 commit_range.side_effect = _CommitRange
127
128 patcher = mock.patch('dashboard.services.gitiles_service.FileContents')
129 self.addCleanup(patcher.stop)
130 file_contents = patcher.start()
131 def _FileContents(repository_url, git_hash, path):
132 del path
133 if repository_url != _CHROMIUM_URL:
134 return 'deps = {}'
135 if git_hash <= 4: # DEPS roll at chromium@5
136 return 'deps = {"chromium/catapult": "%s@0"}' % (_CATAPULT_URL + '.git')
137 else:
138 return 'deps = {"chromium/catapult": "%s@9"}' % _CATAPULT_URL
139 file_contents.side_effect = _FileContents
140
141 def testDifferingPatch(self):
142 change_a = change.Change((commit.Commit('chromium', '0e57e2b'),))
143 change_b = change.Change(
144 (commit.Commit('chromium', 'babe852'),),
145 patch=patch.Patch('https://codereview.chromium.org', 2565263002, 20001))
146 with self.assertRaises(commit.NonLinearError):
147 change.Change.Midpoint(change_a, change_b)
148
149 def testDifferingRepository(self):
150 change_a = change.Change((commit.Commit('chromium', '0e57e2b'),))
151 change_b = change.Change((commit.Commit('not_chromium', 'babe852'),))
152 with self.assertRaises(commit.NonLinearError):
153 change.Change.Midpoint(change_a, change_b)
154
155 def testDifferingCommitCount(self):
156 change_a = change.Change((commit.Commit('chromium', 0),))
157 change_b = change.Change((commit.Commit('chromium', 9),
158 commit.Commit('not_chromium', 'babe852')))
159 with self.assertRaises(commit.NonLinearError):
160 change.Change.Midpoint(change_a, change_b)
161
162 def testSameChange(self):
163 change_a = change.Change((commit.Commit('chromium', 0),))
164 change_b = change.Change((commit.Commit('chromium', 0),))
165 with self.assertRaises(commit.NonLinearError):
166 change.Change.Midpoint(change_a, change_b)
167
168 def testAdjacentWithNoDepsRoll(self):
169 change_a = change.Change((commit.Commit('chromium', 0),))
170 change_b = change.Change((commit.Commit('chromium', 1),))
171 with self.assertRaises(commit.NonLinearError):
172 change.Change.Midpoint(change_a, change_b)
173
174 def testAdjacentWithDepsRoll(self):
175 change_a = change.Change((commit.Commit('chromium', 4),))
176 change_b = change.Change((commit.Commit('chromium', 5),))
177 expected = change.Change((commit.Commit('chromium', 4),
178 commit.Commit('catapult', 4)))
179 self.assertEqual(change.Change.Midpoint(change_a, change_b), expected)
180
181 def testNotAdjacent(self):
182 change_a = change.Change((commit.Commit('chromium', 0),))
183 change_b = change.Change((commit.Commit('chromium', 9),))
184 self.assertEqual(change.Change.Midpoint(change_a, change_b),
185 change.Change((commit.Commit('chromium', 4),)))
186
187 def testDepsRollLeft(self):
188 change_a = change.Change((commit.Commit('chromium', 4),))
189 change_b = change.Change((commit.Commit('chromium', 4),
190 commit.Commit('catapult', 4)))
191 expected = change.Change((commit.Commit('chromium', 4),
192 commit.Commit('catapult', 2)))
193 self.assertEqual(change.Change.Midpoint(change_a, change_b), expected)
194
195 def testDepsRollRight(self):
196 change_a = change.Change((commit.Commit('chromium', 4),
197 commit.Commit('catapult', 4)))
198 change_b = change.Change((commit.Commit('chromium', 5),))
199 expected = change.Change((commit.Commit('chromium', 4),
200 commit.Commit('catapult', 6)))
201 self.assertEqual(change.Change.Midpoint(change_a, change_b), expected)
202
203 def testAdjacentWithDepsRollAndDepAlreadyOverridden(self):
204 change_a = change.Change((commit.Commit('chromium', 4),))
205 change_b = change.Change((commit.Commit('chromium', 5),
206 commit.Commit('catapult', 4)))
207 expected = change.Change((commit.Commit('chromium', 4),
208 commit.Commit('catapult', 2)))
209 self.assertEqual(change.Change.Midpoint(change_a, change_b), expected)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698