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

Side by Side Diff: infra/services/gnumbd/test/data_test.py

Issue 355153002: Refactor infra git libs and testing. (Closed) Base URL: https://chromium.googlesource.com/infra/infra@fake_testing_support
Patch Set: Change config ref to have a sandard naming scheme Created 6 years, 5 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 2014 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 collections
6 import textwrap
7 import unittest
8
9 from infra.services.gnumbd.support import data
10
11 class TestCommitTimestamp(unittest.TestCase):
12 def testBasic(self):
13 TS = '1399330903 -0700'
14 t = data.CommitTimestamp.from_raw(TS)
15 self.assertEqual(1399330903, t.secs)
16 self.assertEqual(7, t.hours)
17 self.assertEqual(0, t.mins)
18 self.assertEqual('-', t.sign)
19 self.assertEqual('-0700', t.tz_str)
20 self.assertEqual(TS, str(t))
21 self.assertEqual("CommitTimestamp(1399330903, '-', 7, 0)", repr(t))
22
23 def testError(self):
24 with self.assertRaises(Exception):
25 data.CommitTimestamp.from_raw(' 1000 +0700')
26 with self.assertRaises(Exception):
27 data.CommitTimestamp.from_raw('1000 +0700 ')
28 with self.assertRaises(Exception):
29 data.CommitTimestamp.from_raw('1000 +0700')
30 with self.assertRaises(Exception):
31 data.CommitTimestamp.from_raw('cat -0700')
32 with self.assertRaises(Exception):
33 data.CommitTimestamp.from_raw('1000 =0700')
34 with self.assertRaises(Exception):
35 data.CommitTimestamp.from_raw('1000 +x100')
36 with self.assertRaises(Exception):
37 data.CommitTimestamp.from_raw('1000 +010x')
38
39 def testEquality(self):
40 TS = '1399330903 -0700'
41 t = data.CommitTimestamp.from_raw(TS)
42 self.assertEqual(t, t)
43 self.assertIs(t, t)
44
45 t2 = data.CommitTimestamp.from_raw(TS)
46 self.assertEqual(t, t2)
47 self.assertIsNot(t, t2)
48
49 self.assertNotEqual(t, t.alter(sign='+'))
50
51 def testToDict(self):
52 TS = '1399330903 -0700'
53 t = data.CommitTimestamp.from_raw(TS)
54 self.assertEqual(t.to_dict(), {
55 'secs': 1399330903, 'sign': '-', 'hours': 7, 'mins': 0})
56
57 def testAlter(self):
58 TS = '1399330903 -0700'
59 t = data.CommitTimestamp.from_raw(TS)
60 self.assertEqual(str(t.alter(hours=20, sign='+')), '1399330903 +2000')
61
62
63 class TestCommitUser(unittest.TestCase):
64 def testBasic(self):
65 USER = 'Bob Boberton <bob@chromium.org> 1399330903 -0700'
66 u = data.CommitUser.from_raw(USER)
67 self.assertEqual(u.email, 'bob@chromium.org')
68 self.assertEqual(u.user, 'Bob Boberton')
69 self.assertEqual(u.timestamp, data.CommitTimestamp(1399330903, '-', 7, 0))
70 self.assertEqual(str(u), USER)
71 self.assertEqual(
72 repr(u), (
73 "CommitUser('Bob Boberton', 'bob@chromium.org', "
74 "CommitTimestamp(1399330903, '-', 7, 0))"
75 )
76 )
77
78 USER = 'Bob Boberton < bob@chromium.org> 1399330903 -0700'
79 u = data.CommitUser.from_raw(USER)
80 self.assertEqual(u.email, ' bob@chromium.org')
81 self.assertEqual(u.user, 'Bob Boberton ')
82 self.assertEqual(str(u), USER)
83
84 def testError(self):
85 with self.assertRaises(Exception):
86 USER = 'Bob Boberton <bob@chromium.org> 1399330903 -0700'
87 data.CommitUser.from_raw(USER)
88 with self.assertRaises(Exception):
89 USER = 'Bob Boberton <bob@chromium.org 1399330903 -0700'
90 data.CommitUser.from_raw(USER)
91 with self.assertRaises(Exception):
92 USER = 'Bob Boberton bob@chromium.org> 1399330903 -0700'
93 data.CommitUser.from_raw(USER)
94 with self.assertRaises(Exception):
95 USER = ' <bob@chromium.org> 1399330903 -0700'
96 data.CommitUser.from_raw(USER)
97 with self.assertRaises(Exception):
98 USER = '<bob@chromium.org> 1399330903 -0700'
99 data.CommitUser.from_raw(USER)
100 with self.assertRaises(Exception):
101 USER = 'Bob <> 1399330903 -0700'
102 data.CommitUser.from_raw(USER)
103
104 def testToDict(self):
105 USER = 'Bob Boberton <bob@chromium.org> 1399330903 -0700'
106 u = data.CommitUser.from_raw(USER)
107 self.assertEqual(u.to_dict(), {
108 'user': 'Bob Boberton', 'email': 'bob@chromium.org',
109 'timestamp': data.CommitTimestamp(1399330903, '-', 7, 0)})
110
111 def testEquality(self):
112 USER = 'Bob Boberton <bob@chromium.org> 1399330903 -0700'
113 u = data.CommitUser.from_raw(USER)
114 self.assertEqual(u, u)
115 self.assertIs(u, u)
116
117 u2 = data.CommitUser.from_raw(USER)
118 self.assertEqual(u, u2)
119 self.assertIsNot(u, u2)
120
121 self.assertNotEqual(u, u.alter(user='Catty Catterson'))
122
123 def testAlter(self):
124 USER = 'Bob Boberton <bob@chromium.org> 1399330903 -0700'
125 u = data.CommitUser.from_raw(USER)
126 self.assertEqual(u, u.alter(user='Bob Boberton'))
127
128 USER = 'Bob Boberton <roberton@chromium.org> 1399330903 -0700'
129 u2 = data.CommitUser.from_raw(USER)
130 nu = u2.alter(email='bob@chromium.org')
131 self.assertEqual(u, nu)
132
133 self.assertEqual(u2.alter(timestamp=u2.timestamp.alter(secs=100)).timestamp,
134 data.CommitTimestamp.from_raw('100 -0700'))
135
136
137 class TestCommitData(unittest.TestCase):
138 def testBasic(self):
139 COMMIT = textwrap.dedent("""\
140 tree b966f77e58b8a3cf7c02dd0271a4d636c0857af4
141 parent 1b346cb5145e1fe4c074611e335d8ac96e18c686
142 parent ab8d80f57839fb03674c0fc69ff5ccf2145fa6e2
143 author Bob Boberton <bob@chromium.org> 1399330903 -0700
144 committer Jane January <jane@chromium.org> 1399330903 -0700
145
146 Cool commit message
147 """)
148 self.maxDiff = 10000
149 d = data.CommitData.from_raw(COMMIT)
150 self.assertEqual(d.to_dict(), {
151 'tree': 'b966f77e58b8a3cf7c02dd0271a4d636c0857af4',
152 'parents': ('1b346cb5145e1fe4c074611e335d8ac96e18c686',
153 'ab8d80f57839fb03674c0fc69ff5ccf2145fa6e2'),
154 'author': data.CommitUser(
155 'Bob Boberton', 'bob@chromium.org',
156 data.CommitTimestamp(1399330903, '-', 7, 0)),
157 'committer': data.CommitUser(
158 'Jane January', 'jane@chromium.org',
159 data.CommitTimestamp(1399330903, '-', 7, 0)),
160 'message_lines': ('Cool commit message',),
161 'footer_lines': (),
162 'other_header_lines': ()
163 })
164 self.assertEqual(
165 repr(d),
166 "CommitData('b966f77e58b8a3cf7c02dd0271a4d636c0857af4', "
167 "('1b346cb5145e1fe4c074611e335d8ac96e18c686', "
168 "'ab8d80f57839fb03674c0fc69ff5ccf2145fa6e2'), "
169 "CommitUser('Bob Boberton', 'bob@chromium.org', "
170 "CommitTimestamp(1399330903, '-', 7, 0)), "
171 "CommitUser('Jane January', 'jane@chromium.org', "
172 "CommitTimestamp(1399330903, '-', 7, 0)), (), "
173 "('Cool commit message',), ())"
174 )
175 self.assertEqual(str(d), COMMIT)
176
177 def testFooters(self):
178 COMMIT = textwrap.dedent("""\
179 tree b966f77e58b8a3cf7c02dd0271a4d636c0857af4
180 author Bob Boberton <bob@chromium.org> 1399330903 -0700
181 committer Jane January <jane@chromium.org> 1399330903 -0700
182
183 Cool commit message
184 with: misleading footers
185
186 Xenophobe: False
187 Cool-Footer: 100
188 Double-Awesome: 100
189 Cool-Footer: Redux
190 """)
191 d = data.CommitData.from_raw(COMMIT)
192 self.assertEqual(d, d)
193 self.assertNotEqual(d, {})
194 self.assertDictContainsSubset({
195 'tree': 'b966f77e58b8a3cf7c02dd0271a4d636c0857af4',
196 'author': data.CommitUser(
197 'Bob Boberton', 'bob@chromium.org',
198 data.CommitTimestamp(1399330903, '-', 7, 0)),
199 'committer': data.CommitUser(
200 'Jane January', 'jane@chromium.org',
201 data.CommitTimestamp(1399330903, '-', 7, 0))
202 }, d.to_dict())
203 self.assertSequenceEqual(
204 d.message_lines, ['Cool commit message', 'with: misleading footers'])
205 self.assertSequenceEqual(
206 d.footer_lines,
207 [('Xenophobe', 'False'), ('Cool-Footer', '100'),
208 ('Double-Awesome', '100'), ('Cool-Footer', 'Redux')])
209 self.assertEqual(d.footers, {
210 'Cool-Footer': ('100', 'Redux'),
211 'Double-Awesome': ('100',),
212 'Xenophobe': ('False',),
213 })
214 self.assertSequenceEqual(['Xenophobe', 'Cool-Footer', 'Double-Awesome'],
215 d.footers.keys())
216 self.assertEqual(str(d), COMMIT)
217
218 def testMisleadingFooters(self):
219 COMMIT = textwrap.dedent("""\
220 tree b966f77e58b8a3cf7c02dd0271a4d636c0857af4
221 author Bob Boberton <bob@chromium.org> 1399330903 -0700
222 committer Jane January <jane@chromium.org> 1399330903 -0700
223
224 Cool commit message
225 with: misleading footers
226 """)
227 d = data.CommitData.from_raw(COMMIT)
228 self.assertDictContainsSubset({
229 'tree': 'b966f77e58b8a3cf7c02dd0271a4d636c0857af4',
230 'author': data.CommitUser(
231 'Bob Boberton', 'bob@chromium.org',
232 data.CommitTimestamp(1399330903, '-', 7, 0)),
233 'committer': data.CommitUser(
234 'Jane January', 'jane@chromium.org',
235 data.CommitTimestamp(1399330903, '-', 7, 0)),
236 }, d.to_dict())
237 self.assertSequenceEqual(
238 d.message_lines, ['Cool commit message', 'with: misleading footers'])
239 self.assertSequenceEqual(
240 d.footer_lines, [])
241 self.assertEqual(d.footers, {})
242
243 def testAlter(self):
244 TREE1 = "tree b966f77e58b8a3cf7c02dd0271a4d636c0857af4\n"
245
246 TREE2 = "tree deadbeefdeadbeefdeadbeefdeadbeefdeadbeef\n"
247
248 POSTFIX = textwrap.dedent("""\
249 author Bob Boberton <bob@chromium.org> 1399330903 -0700
250 committer Jane January <jane@chromium.org> 1399330903 -0700
251
252 Cool commit message
253 with: misleading footers
254 """)
255
256 d = data.CommitData.from_raw(TREE1 + POSTFIX)
257 d2 = data.CommitData.from_raw(TREE2 + POSTFIX)
258
259 self.assertEqual(
260 d.alter(tree='deadbeefdeadbeefdeadbeefdeadbeefdeadbeef'), d2)
261
262 HEADERS = textwrap.dedent("""\
263 tree b966f77e58b8a3cf7c02dd0271a4d636c0857af4
264 author Bob Boberton <bob@chromium.org> 1399330903 -0700
265 committer Jane January <jane@chromium.org> 1399330903 -0700
266 meep happytimes
267
268 Cool commit message
269 with: misleading footers
270 """)
271 self.assertEqual(str(d.alter(other_headers={'meep': ['happytimes']})),
272 HEADERS)
273
274 def testAlterReorder(self):
275 PREFIX = textwrap.dedent("""\
276 tree b966f77e58b8a3cf7c02dd0271a4d636c0857af4
277 author Bob Boberton <bob@chromium.org> 1399330903 -0700
278 committer Jane January <jane@chromium.org> 1399330903 -0700
279
280 Cool commit message
281 with: misleading footers
282
283 """)
284 COMMIT = PREFIX + textwrap.dedent("""\
285 Xenophobe: False
286 Cool-Footer: 100
287 Double-Awesome: 100
288 Cool-Footer: Redux
289 """)
290 NEW_COMMIT = PREFIX + textwrap.dedent("""\
291 Xenophobe: False
292 Cool-Footer: 100
293 Cool-Footer: Redux
294 Double-Awesome: 100
295 """)
296 d = data.CommitData.from_raw(COMMIT)
297 nd = data.CommitData.from_raw(NEW_COMMIT)
298 self.assertEqual(d, d)
299 self.assertNotEqual(d, nd)
300
301 def testAlterAdd(self):
302 PREFIX = textwrap.dedent("""\
303 tree b966f77e58b8a3cf7c02dd0271a4d636c0857af4
304 author Bob Boberton <bob@chromium.org> 1399330903 -0700
305 committer Jane January <jane@chromium.org> 1399330903 -0700
306
307 Cool commit message
308 with: misleading footers
309
310 """)
311 COMMIT = PREFIX + textwrap.dedent("""\
312 Xenophobe: False
313 Cool-Footer: 100
314 Double-Awesome: 100
315 Cool-Footer: Redux
316 """)
317 NEW_COMMIT = PREFIX + textwrap.dedent("""\
318 Cool-Footer: 100
319 Cool-Footer: Redux
320 Double-Awesome: 100
321 Fungus: neat!
322 """)
323 d = data.CommitData.from_raw(COMMIT)
324 nd = data.CommitData.from_raw(NEW_COMMIT)
325
326 f = {'Fungus': ('neat!',)}
327 f['Xenophobe'] = None
328 self.assertEqual(d.alter(footers=f), nd)
329
330 def testAlterDel(self):
331 PREFIX = textwrap.dedent("""\
332 tree b966f77e58b8a3cf7c02dd0271a4d636c0857af4
333 author Bob Boberton <bob@chromium.org> 1399330903 -0700
334 committer Jane January <jane@chromium.org> 1399330903 -0700
335
336 Cool commit message
337 with: misleading footers
338
339 """)
340 COMMIT = PREFIX + textwrap.dedent("""\
341 Xenophobe: False
342 Cool-Footer: 100
343 Double-Awesome: 100
344 Cool-Footer: Redux
345 """)
346 NEW_COMMIT = PREFIX[:-1]
347 d = data.CommitData.from_raw(COMMIT)
348 nd = data.CommitData.from_raw(NEW_COMMIT)
349 to_nuke = {k: None for k in d.footers}
350 to_nuke['Non-exist'] = None
351 self.assertEqual(d.alter(footers=to_nuke), nd)
352
353 def testAlterAppend(self):
354 PREFIX = textwrap.dedent("""\
355 tree b966f77e58b8a3cf7c02dd0271a4d636c0857af4
356 author Bob Boberton <bob@chromium.org> 1399330903 -0700
357 committer Jane January <jane@chromium.org> 1399330903 -0700
358
359 Cool commit message
360 with: misleading footers
361
362 """)
363 COMMIT = PREFIX + textwrap.dedent("""\
364 Xenophobe: False
365 Cool-Footer: 100
366 Double-Awesome: 100
367 Cool-Footer: Redux
368 """)
369 NEW_COMMIT = PREFIX + textwrap.dedent("""\
370 Xenophobe: False
371 Cool-Footer: 100
372 Cool-Footer: Redux
373 Cool-Footer: Sweet
374 Double-Awesome: 100
375 """)
376 d = data.CommitData.from_raw(COMMIT)
377 nd = data.CommitData.from_raw(NEW_COMMIT)
378 self.assertEqual(
379 d.alter(
380 footers={'Cool-Footer': d.footers['Cool-Footer'] + ('Sweet',)}
381 ),
382 nd)
383
384 def testOtherHeaders(self):
385 COMMIT = textwrap.dedent("""\
386 tree b966f77e58b8a3cf7c02dd0271a4d636c0857af4
387 parent 1b346cb5145e1fe4c074611e335d8ac96e18c686
388 author Bob Boberton <bob@chromium.org> 1399330903 -0700
389 committer Jane January <jane@chromium.org> 1399330903 -0700
390 generation 300
391 apple-sauce cat food
392 generation 100
393
394 Cool commit message
395 with: misleading footers
396 """)
397 c = data.CommitData.from_raw(COMMIT)
398 expect = collections.OrderedDict()
399 expect['generation'] = ('300', '100')
400 expect['apple-sauce'] = ('cat food',)
401 self.assertEqual(c.other_headers, expect)
402 self.assertEqual(str(c), COMMIT)
403
404 # Error cases
405 def testDupTree(self):
406 COMMIT = textwrap.dedent("""\
407 tree b966f77e58b8a3cf7c02dd0271a4d636c0857af4
408 tree b966f77e58b8a3cf7c02dd0271a4d636c0857af4
409 parent 1b346cb5145e1fe4c074611e335d8ac96e18c686
410 author Bob Boberton <bob@chromium.org> 1399330903 -0700
411 committer Jane January <jane@chromium.org> 1399330903 -0700
412
413 Cool commit message
414 with: misleading footers
415 """)
416 with self.assertRaises(data.UnexpectedHeader):
417 data.CommitData.from_raw(COMMIT)
418
419 def testDupUser(self):
420 COMMIT = textwrap.dedent("""\
421 tree b966f77e58b8a3cf7c02dd0271a4d636c0857af4
422 parent 1b346cb5145e1fe4c074611e335d8ac96e18c686
423 author Bob Boberton <bob@chromium.org> 1399330903 -0700
424 author Bob Boberton <bob@chromium.org> 1399330903 -0700
425 committer Jane January <jane@chromium.org> 1399330903 -0700
426
427 Cool commit message
428 with: misleading footers
429 """)
430 with self.assertRaises(data.UnexpectedHeader):
431 data.CommitData.from_raw(COMMIT)
432
433 def testPartial(self):
434 COMMIT = textwrap.dedent("""\
435 tree deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
436 """)
437 with self.assertRaises(data.PartialCommit):
438 data.CommitData.from_raw(COMMIT)
439
440 def testEmpty(self):
441 with self.assertRaises(data.PartialCommit):
442 data.CommitData.from_raw('')
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698