Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / tools / telemetry / catapult_base / dependency_manager / dependency_info_unittest.py
blob7780e28a766c16298efb016e2f98b4b4d1063138
1 # Copyright 2015 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.
5 import unittest
7 from catapult_base.dependency_manager import dependency_info
9 class DependencyInfoTest(unittest.TestCase):
10 def testInitRequiredInfo(self):
11 # Must have a dependency, platform and file_path.
12 self.assertRaises(ValueError, dependency_info.DependencyInfo,
13 None, None, None)
14 self.assertRaises(ValueError, dependency_info.DependencyInfo,
15 'dep', None, None)
16 self.assertRaises(ValueError, dependency_info.DependencyInfo,
17 None, 'plat', None)
18 self.assertRaises(ValueError, dependency_info.DependencyInfo,
19 None, None, 'config_file')
20 # Empty DependencyInfo.
21 empty_di = dependency_info.DependencyInfo('dep', 'plat', 'config_file')
22 self.assertFalse(empty_di.cs_bucket)
23 self.assertFalse(empty_di.cs_hash)
24 self.assertFalse(empty_di.download_path)
25 self.assertFalse(empty_di.cs_remote_path)
26 self.assertFalse(empty_di.local_paths)
27 self.assertEqual('dep', empty_di.dependency)
28 self.assertEqual('plat', empty_di.platform)
29 self.assertEqual(['config_file'], empty_di.config_files)
31 def testInitLocalPaths(self):
32 dep_info = dependency_info.DependencyInfo(
33 'dep', 'platform', 'config_file', local_paths=['path0', 'path1'])
34 self.assertEqual('dep', dep_info.dependency)
35 self.assertEqual('platform', dep_info.platform)
36 self.assertEqual(['config_file'], dep_info.config_files)
37 self.assertEqual(['path0', 'path1'], dep_info.local_paths)
38 self.assertFalse(dep_info.version_in_cs)
39 self.assertFalse(dep_info.cs_hash)
40 self.assertFalse(dep_info.cs_bucket)
41 self.assertFalse(dep_info.cs_remote_path)
42 self.assertFalse(dep_info.download_path)
44 def testInitMinimumCloudStorageInfo(self):
45 # Must specify cloud storage information atomically.
46 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
47 'config_file', cs_bucket='cs_b')
48 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
49 'config_file', cs_hash='cs_hash')
50 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
51 'config_file', cs_remote_path='cs_remote_path')
52 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
53 'config_file', download_path='download_path')
54 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
55 'config_file', cs_bucket='cs_bucket', cs_hash='cs_hash',
56 cs_remote_path='cs_remote_path')
57 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
58 'config_file', cs_bucket='cs_bucket', cs_hash='cs_hash',
59 cs_remote_path='cs_remote_path', local_paths=['path'])
60 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
61 'config_file', cs_bucket='cs_bucket', cs_hash='cs_hash',
62 download_path='download_path')
63 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
64 'config_file', cs_bucket='cs_bucket', cs_hash='cs_hash',
65 download_path='download_path', local_paths=['path'])
66 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
67 'config_file', cs_bucket='cs_bucket',
68 cs_remote_path='cs_remote_path',
69 download_path='download_path')
70 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
71 'config_file', cs_hash='cs_hash',
72 cs_remote_path='cs_remote_path',
73 download_path='download_path')
74 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
75 'config_file', cs_bucket='cs_bucket', cs_hash='cs_hash',
76 download_path='download_path', local_paths=['path'])
77 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
78 'config_file', cs_bucket='cs_bucket',
79 cs_remote_path='cs_remote_path',
80 download_path='download_path', local_paths=['path'])
81 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
82 'config_file', cs_hash='cs_hash',
83 cs_remote_path='cs_remote_path',
84 download_path='download_path', local_paths=['path'])
86 def testInitWithVersion(self):
87 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
88 'config_file', version_in_cs='version_in_cs')
89 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
90 'config_file', version_in_cs='version_in_cs',
91 local_paths=['path2'])
92 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
93 'config_file', cs_bucket='cs_bucket', cs_hash='cs_hash',
94 cs_remote_path='cs_remote_path',
95 version_in_cs='version_in_cs', local_paths=['path2'])
97 dep_info = dependency_info.DependencyInfo(
98 'dep', 'platform', 'config_file', cs_bucket='cs_bucket',
99 cs_hash='cs_hash', download_path='download_path',
100 cs_remote_path='cs_remote_path', version_in_cs='version_in_cs')
101 self.assertEqual('dep', dep_info.dependency)
102 self.assertEqual('platform', dep_info.platform)
103 self.assertEqual(['config_file'], dep_info.config_files)
104 self.assertEqual('cs_hash', dep_info.cs_hash)
105 self.assertEqual('cs_bucket', dep_info.cs_bucket)
106 self.assertEqual('cs_remote_path', dep_info.cs_remote_path)
107 self.assertEqual('download_path', dep_info.download_path)
108 self.assertEqual('version_in_cs', dep_info.version_in_cs)
109 self.assertFalse(dep_info.local_paths)
111 dep_info = dependency_info.DependencyInfo(
112 'dep', 'platform', 'config_file', cs_bucket='cs_bucket',
113 cs_hash='cs_hash', download_path='download_path',
114 cs_remote_path='cs_remote_path', version_in_cs='version_in_cs',
115 local_paths=['path'])
116 self.assertEqual('dep', dep_info.dependency)
117 self.assertEqual('platform', dep_info.platform)
118 self.assertEqual(['config_file'], dep_info.config_files)
119 self.assertEqual('cs_hash', dep_info.cs_hash)
120 self.assertEqual('cs_bucket', dep_info.cs_bucket)
121 self.assertEqual('cs_remote_path', dep_info.cs_remote_path)
122 self.assertEqual('download_path', dep_info.download_path)
123 self.assertEqual('version_in_cs', dep_info.version_in_cs)
124 self.assertEqual(['path'], dep_info.local_paths)
126 def testInitCloudStorageInfo(self):
127 dep_info = dependency_info.DependencyInfo(
128 'dep', 'platform', 'config_file', cs_bucket='cs_bucket',
129 cs_hash='cs_hash', download_path='download_path',
130 cs_remote_path='cs_remote_path')
131 self.assertEqual('dep', dep_info.dependency)
132 self.assertEqual('platform', dep_info.platform)
133 self.assertEqual(['config_file'], dep_info.config_files)
134 self.assertEqual('cs_hash', dep_info.cs_hash)
135 self.assertEqual('cs_bucket', dep_info.cs_bucket)
136 self.assertEqual('cs_remote_path', dep_info.cs_remote_path)
137 self.assertEqual('download_path', dep_info.download_path)
138 self.assertFalse(dep_info.version_in_cs)
139 self.assertFalse(dep_info.local_paths)
141 dep_info = dependency_info.DependencyInfo(
142 'dep', 'platform', 'config_file', cs_bucket='cs_bucket',
143 cs_hash='cs_hash', download_path='download_path',
144 cs_remote_path='cs_remote_path', local_paths=['path'])
145 self.assertEqual('dep', dep_info.dependency)
146 self.assertEqual('platform', dep_info.platform)
147 self.assertEqual(['config_file'], dep_info.config_files)
148 self.assertEqual('cs_hash', dep_info.cs_hash)
149 self.assertEqual('cs_bucket', dep_info.cs_bucket)
150 self.assertEqual('cs_remote_path', dep_info.cs_remote_path)
151 self.assertEqual('download_path', dep_info.download_path)
152 self.assertFalse(dep_info.version_in_cs)
153 self.assertEqual(['path'], dep_info.local_paths)
155 def testInitAllInfo(self):
156 dep_info = dependency_info.DependencyInfo(
157 'dep', 'platform', 'config_file', cs_bucket='cs_bucket',
158 cs_hash='cs_hash', download_path='download_path',
159 cs_remote_path='cs_remote_path', local_paths=['path0', 'path1'])
160 self.assertEqual('dep', dep_info.dependency)
161 self.assertEqual('platform', dep_info.platform)
162 self.assertEqual(['config_file'], dep_info.config_files)
163 self.assertEqual('cs_hash', dep_info.cs_hash)
164 self.assertEqual('cs_bucket', dep_info.cs_bucket)
165 self.assertEqual('cs_remote_path', dep_info.cs_remote_path)
166 self.assertEqual('download_path', dep_info.download_path)
167 self.assertEqual(['path0', 'path1'], dep_info.local_paths)
168 self.assertFalse(dep_info.version_in_cs)
170 dep_info = dependency_info.DependencyInfo(
171 'dep', 'platform', 'config_file', cs_bucket='cs_bucket',
172 cs_hash='cs_hash', download_path='download_path',
173 cs_remote_path='cs_remote_path', version_in_cs='version_in_cs',
174 local_paths=['path0', 'path1'])
175 self.assertEqual('dep', dep_info.dependency)
176 self.assertEqual('platform', dep_info.platform)
177 self.assertEqual(['config_file'], dep_info.config_files)
178 self.assertEqual('cs_hash', dep_info.cs_hash)
179 self.assertEqual('cs_bucket', dep_info.cs_bucket)
180 self.assertEqual('cs_remote_path', dep_info.cs_remote_path)
181 self.assertEqual('download_path', dep_info.download_path)
182 self.assertEqual('version_in_cs', dep_info.version_in_cs)
183 self.assertEqual(['path0', 'path1'], dep_info.local_paths)
186 def testUpdateRequiredArgsConflicts(self):
187 dep_info1 = dependency_info.DependencyInfo(
188 'dep1', 'platform1', 'config_file1', local_paths=['path0', 'path1'])
189 dep_info2 = dependency_info.DependencyInfo(
190 'dep1', 'platform2', 'config_file2', local_paths=['path0', 'path2'])
191 dep_info3 = dependency_info.DependencyInfo(
192 'dep2', 'platform1', 'config_file3', local_paths=['path0', 'path3'])
193 self.assertRaises(ValueError, dep_info1.Update, dep_info2)
194 self.assertRaises(ValueError, dep_info1.Update, dep_info3)
195 self.assertRaises(ValueError, dep_info3.Update, dep_info2)
197 def testUpdateCloudStorageInfoNoVersions(self):
198 dep_info1 = dependency_info.DependencyInfo(
199 'dep1', 'platform1', 'config_file1')
200 dep_info2 = dependency_info.DependencyInfo(
201 'dep1', 'platform1', 'config_file2', cs_bucket='cs_bucket',
202 cs_hash='cs_hash', download_path='download_path',
203 cs_remote_path='cs_remote_path')
204 dep_info3 = dependency_info.DependencyInfo(
205 'dep1', 'platform1', 'config_file3')
206 dep_info4 = dependency_info.DependencyInfo(
207 'dep1', 'platform1', 'config_file4', cs_bucket='cs_bucket',
208 cs_hash='cs_hash', download_path='download_path',
209 cs_remote_path='cs_remote_path')
211 dep_info1.Update(dep_info2)
212 self.assertEqual('cs_bucket', dep_info1.cs_bucket)
213 self.assertEqual('cs_hash', dep_info1.cs_hash)
214 self.assertEqual('download_path', dep_info1.download_path)
215 self.assertEqual('cs_remote_path', dep_info1.cs_remote_path)
216 self.assertFalse(dep_info1.local_paths)
218 dep_info1.Update(dep_info3)
219 self.assertEqual('cs_bucket', dep_info1.cs_bucket)
220 self.assertEqual('cs_hash', dep_info1.cs_hash)
221 self.assertEqual('download_path', dep_info1.download_path)
222 self.assertEqual('cs_remote_path', dep_info1.cs_remote_path)
223 self.assertFalse(dep_info1.local_paths)
225 self.assertRaises(ValueError, dep_info1.Update, dep_info4)
227 def testUpdateCloudStorageInfoWithVersions(self):
228 dep_info1 = dependency_info.DependencyInfo(
229 'dep1', 'platform1', 'config_file1')
230 dep_info2 = dependency_info.DependencyInfo(
231 'dep1', 'platform1', 'config_file2', cs_bucket='cs_bucket2',
232 cs_hash='cs_hash2', download_path='download_path2',
233 cs_remote_path='cs_remote_path2', version_in_cs='2.1.1')
234 dep_info3 = dependency_info.DependencyInfo(
235 'dep1', 'platform1', 'config_file3')
236 dep_info4 = dependency_info.DependencyInfo(
237 'dep1', 'platform1', 'config_file4', cs_bucket='cs_bucket4',
238 cs_hash='cs_hash4', download_path='download_path4',
239 cs_remote_path='cs_remote_path4')
240 dep_info5 = dependency_info.DependencyInfo(
241 'dep1', 'platform1', 'config_file5', cs_bucket='cs_bucket5',
242 cs_hash='cs_hash5', download_path='download_path5',
243 cs_remote_path='cs_remote_path5')
245 dep_info1.Update(dep_info2)
246 self.assertEqual('cs_bucket2', dep_info1.cs_bucket)
247 self.assertEqual('cs_hash2', dep_info1.cs_hash)
248 self.assertEqual('download_path2', dep_info1.download_path)
249 self.assertEqual('cs_remote_path2', dep_info1.cs_remote_path)
250 self.assertEqual('2.1.1', dep_info1.version_in_cs)
251 self.assertFalse(dep_info1.local_paths)
253 dep_info1.Update(dep_info3)
254 self.assertEqual('cs_bucket2', dep_info1.cs_bucket)
255 self.assertEqual('cs_hash2', dep_info1.cs_hash)
256 self.assertEqual('download_path2', dep_info1.download_path)
257 self.assertEqual('cs_remote_path2', dep_info1.cs_remote_path)
258 self.assertEqual('2.1.1', dep_info1.version_in_cs)
259 self.assertFalse(dep_info1.local_paths)
261 self.assertRaises(ValueError, dep_info1.Update, dep_info4)
262 self.assertEqual('cs_bucket2', dep_info1.cs_bucket)
263 self.assertEqual('cs_hash2', dep_info1.cs_hash)
264 self.assertEqual('download_path2', dep_info1.download_path)
265 self.assertEqual('cs_remote_path2', dep_info1.cs_remote_path)
266 self.assertEqual('2.1.1', dep_info1.version_in_cs)
267 self.assertFalse(dep_info1.local_paths)
269 self.assertRaises(ValueError, dep_info1.Update, dep_info5)
271 def testUpdateAllInfo(self):
272 dep_info1 = dependency_info.DependencyInfo(
273 'dep1', 'platform1', 'config_file1', local_paths=['path1'])
274 dep_info2 = dependency_info.DependencyInfo(
275 'dep1', 'platform1', 'config_file2', cs_bucket='cs_bucket',
276 cs_hash='cs_hash', download_path='download_path',
277 cs_remote_path='cs_remote_path', local_paths=['path2'])
278 dep_info3 = dependency_info.DependencyInfo(
279 'dep1', 'platform1', 'config_file3', local_paths=['path3'])
280 dep_info4 = dependency_info.DependencyInfo(
281 'dep1', 'platform1', 'config_file4', cs_bucket='cs_bucket',
282 cs_hash='cs_hash', download_path='download_path',
283 cs_remote_path='cs_remote_path', local_paths=['path4'])
285 dep_info1.Update(dep_info2)
286 self.assertEqual('cs_bucket', dep_info1.cs_bucket)
287 self.assertEqual('cs_hash', dep_info1.cs_hash)
288 self.assertEqual('download_path', dep_info1.download_path)
289 self.assertEqual('cs_remote_path', dep_info1.cs_remote_path)
290 self.assertEqual(['path1', 'path2'], dep_info1.local_paths)
292 dep_info1.Update(dep_info3)
293 self.assertEqual('cs_bucket', dep_info1.cs_bucket)
294 self.assertEqual('cs_hash', dep_info1.cs_hash)
295 self.assertEqual('download_path', dep_info1.download_path)
296 self.assertEqual('cs_remote_path', dep_info1.cs_remote_path)
297 self.assertEqual(['path1', 'path2', 'path3'], dep_info1.local_paths)
299 self.assertRaises(ValueError, dep_info1.Update, dep_info4)
301 def testAppendConflictingLocalFiles(self):
302 dep_info1 = dependency_info.DependencyInfo(
303 'dep1', 'platform1', 'config_file1',
304 local_paths=['path0', 'path1', 'path3', 'path5', 'path6'])
305 dep_info2 = dependency_info.DependencyInfo(
306 'dep1', 'platform1', 'config_file2',
307 local_paths=['path0', 'path2', 'path4', 'path5'])
309 expected_local_paths = ['path0', 'path1', 'path3', 'path5', 'path6',
310 'path2', 'path4']
311 dep_info1.Update(dep_info2)
312 self.assertEquals(expected_local_paths, dep_info1.local_paths)