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

Side by Side Diff: tools/push-to-trunk/test_scripts.py

Issue 533693002: Refactoring: Unify all mocks in auto roll tests. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 the V8 project authors. All rights reserved. 2 # Copyright 2013 the V8 project authors. All rights reserved.
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are 4 # modification, are permitted provided that the following conditions are
5 # met: 5 # met:
6 # 6 #
7 # * Redistributions of source code must retain the above copyright 7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer. 8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above 9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following 10 # copyright notice, this list of conditions and the following
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 self.assertEquals("(Chromium issues 234, 1234567890" 246 self.assertEquals("(Chromium issues 234, 1234567890"
247 ", 12345678901234567, " 247 ", 12345678901234567, "
248 "1234567890123456789)", 248 "1234567890123456789)",
249 MakeChangeLogBugReference("BUG=234\n" 249 MakeChangeLogBugReference("BUG=234\n"
250 "BUG=12345678901234567\n" 250 "BUG=12345678901234567\n"
251 "BUG=1234567890123456789\n" 251 "BUG=1234567890123456789\n"
252 "BUG=1234567890\n")) 252 "BUG=1234567890\n"))
253 253
254 254
255 def Cmd(*args, **kwargs): 255 def Cmd(*args, **kwargs):
256 """Convenience function returning a git test expectation.""" 256 """Convenience function returning a shell command test expectation."""
257 return { 257 return {
258 "name": "git", 258 "name": "command",
259 "args": args, 259 "args": args,
260 "ret": args[-1], 260 "ret": args[-1],
261 "cb": kwargs.get("cb"), 261 "cb": kwargs.get("cb"),
262 } 262 }
263 263
264 264
265 def RL(text, cb=None): 265 def RL(text, cb=None):
266 """Convenience function returning a readline test expectation.""" 266 """Convenience function returning a readline test expectation."""
267 return {"name": "readline", "args": [], "ret": text, "cb": cb} 267 return {"name": "readline", "args": [], "ret": text, "cb": cb}
268 268
269 269
270 def URL(*args, **kwargs): 270 def URL(*args, **kwargs):
271 """Convenience function returning a readurl test expectation.""" 271 """Convenience function returning a readurl test expectation."""
272 return { 272 return {
273 "name": "readurl", 273 "name": "readurl",
274 "args": args[:-1], 274 "args": args[:-1],
275 "ret": args[-1], 275 "ret": args[-1],
276 "cb": kwargs.get("cb"), 276 "cb": kwargs.get("cb"),
277 } 277 }
278 278
279 279
280 class SimpleMock(object): 280 class SimpleMock(object):
281 def __init__(self, name): 281 def __init__(self):
282 self._name = name
283 self._recipe = [] 282 self._recipe = []
284 self._index = -1 283 self._index = -1
285 284
286 def Expect(self, recipe): 285 def Expect(self, recipe):
287 self._recipe = recipe 286 self._recipe = recipe
288 287
289 def Call(self, *args): # pragma: no cover 288 def Call(self, name, *args): # pragma: no cover
290 self._index += 1 289 self._index += 1
291 try: 290 try:
292 expected_call = self._recipe[self._index] 291 expected_call = self._recipe[self._index]
293 except IndexError: 292 except IndexError:
294 raise NoRetryException("Calling %s %s" % (self._name, " ".join(args))) 293 raise NoRetryException("Calling %s %s" % (name, " ".join(args)))
295 294
296 if not isinstance(expected_call, dict): 295 if not isinstance(expected_call, dict):
297 raise NoRetryException("Found wrong expectation type for %s %s" 296 raise NoRetryException("Found wrong expectation type for %s %s" %
298 % (self._name, " ".join(args))) 297 (name, " ".join(args)))
299 298
299 if expected_call["name"] != name:
300 raise NoRetryException("Expected action: %s %s - Actual: %s" %
301 (expected_call["name"], expected_call["args"], name))
300 302
301 # The number of arguments in the expectation must match the actual 303 # The number of arguments in the expectation must match the actual
302 # arguments. 304 # arguments.
303 if len(args) > len(expected_call['args']): 305 if len(args) > len(expected_call['args']):
304 raise NoRetryException("When calling %s with arguments, the " 306 raise NoRetryException("When calling %s with arguments, the "
305 "expectations must consist of at least as many arguments." % 307 "expectations must consist of at least as many arguments." %
306 self._name) 308 name)
307 309
308 # Compare expected and actual arguments. 310 # Compare expected and actual arguments.
309 for (expected_arg, actual_arg) in zip(expected_call['args'], args): 311 for (expected_arg, actual_arg) in zip(expected_call['args'], args):
310 if expected_arg != actual_arg: 312 if expected_arg != actual_arg:
311 raise NoRetryException("Expected: %s - Actual: %s" 313 raise NoRetryException("Expected: %s - Actual: %s" %
312 % (expected_arg, actual_arg)) 314 (expected_arg, actual_arg))
313 315
314 # The expected call contains an optional callback for checking the context 316 # The expected call contains an optional callback for checking the context
315 # at the time of the call. 317 # at the time of the call.
316 if expected_call['cb']: 318 if expected_call['cb']:
317 try: 319 try:
318 expected_call['cb']() 320 expected_call['cb']()
319 except: 321 except:
320 tb = traceback.format_exc() 322 tb = traceback.format_exc()
321 raise NoRetryException("Caught exception from callback: %s" % tb) 323 raise NoRetryException("Caught exception from callback: %s" % tb)
322 324
323 # If the return value is an exception, raise it instead of returning. 325 # If the return value is an exception, raise it instead of returning.
324 if isinstance(expected_call['ret'], Exception): 326 if isinstance(expected_call['ret'], Exception):
325 raise expected_call['ret'] 327 raise expected_call['ret']
326 return expected_call['ret'] 328 return expected_call['ret']
327 329
328 def AssertFinished(self): # pragma: no cover 330 def AssertFinished(self): # pragma: no cover
329 if self._index < len(self._recipe) -1: 331 if self._index < len(self._recipe) -1:
330 raise NoRetryException("Called %s too seldom: %d vs. %d" 332 raise NoRetryException("Called mock too seldom: %d vs. %d" %
331 % (self._name, self._index, len(self._recipe))) 333 (self._index, len(self._recipe)))
332 334
333 335
334 class ScriptTest(unittest.TestCase): 336 class ScriptTest(unittest.TestCase):
335 def MakeEmptyTempFile(self): 337 def MakeEmptyTempFile(self):
336 handle, name = tempfile.mkstemp() 338 handle, name = tempfile.mkstemp()
337 os.close(handle) 339 os.close(handle)
338 self._tmp_files.append(name) 340 self._tmp_files.append(name)
339 return name 341 return name
340 342
341 def WriteFakeVersionFile(self, minor=22, build=4, patch=0): 343 def WriteFakeVersionFile(self, minor=22, build=4, patch=0):
(...skipping 12 matching lines...) Expand all
354 options = ScriptsBase(TEST_CONFIG, self, self._state).MakeOptions([]) 356 options = ScriptsBase(TEST_CONFIG, self, self._state).MakeOptions([])
355 return MakeStep(step_class=Step, state=self._state, 357 return MakeStep(step_class=Step, state=self._state,
356 config=TEST_CONFIG, side_effect_handler=self, 358 config=TEST_CONFIG, side_effect_handler=self,
357 options=options) 359 options=options)
358 360
359 def RunStep(self, script=PushToTrunk, step_class=Step, args=None): 361 def RunStep(self, script=PushToTrunk, step_class=Step, args=None):
360 """Convenience wrapper.""" 362 """Convenience wrapper."""
361 args = args if args is not None else ["-m"] 363 args = args if args is not None else ["-m"]
362 return script(TEST_CONFIG, self, self._state).RunSteps([step_class], args) 364 return script(TEST_CONFIG, self, self._state).RunSteps([step_class], args)
363 365
364 def CmdMock(self, cmd, args="", pipe=True):
365 print "%s %s" % (cmd, args)
366 return self._cmd_mock.Call(cmd + " " + args)
367
368 def Call(self, fun, *args, **kwargs): 366 def Call(self, fun, *args, **kwargs):
369 print "Calling %s with %s and %s" % (str(fun), str(args), str(kwargs)) 367 print "Calling %s with %s and %s" % (str(fun), str(args), str(kwargs))
370 368
371 def Command(self, cmd, args="", prefix="", pipe=True): 369 def Command(self, cmd, args="", prefix="", pipe=True):
372 return self.CmdMock(cmd, args) 370 print "%s %s" % (cmd, args)
371 return self._mock.Call("command", cmd + " " + args)
373 372
374 def ReadLine(self): 373 def ReadLine(self):
375 return self._rl_mock.Call() 374 return self._mock.Call("readline")
376 375
377 def ReadURL(self, url, params): 376 def ReadURL(self, url, params):
378 if params is not None: 377 if params is not None:
379 return self._url_mock.Call(url, params) 378 return self._mock.Call("readurl", url, params)
380 else: 379 else:
381 return self._url_mock.Call(url) 380 return self._mock.Call("readurl", url)
382 381
383 def ReadClusterFuzzAPI(self, api_key, **params): 382 def ReadClusterFuzzAPI(self, api_key, **params):
384 # TODO(machenbach): Use a mock for this and add a test that stops rolling 383 # TODO(machenbach): Use a mock for this and add a test that stops rolling
385 # due to clustefuzz results. 384 # due to clustefuzz results.
386 return [] 385 return []
387 386
388 def Sleep(self, seconds): 387 def Sleep(self, seconds):
389 pass 388 pass
390 389
391 def GetDate(self): 390 def GetDate(self):
392 return "1999-07-31" 391 return "1999-07-31"
393 392
394 def GetUTCStamp(self): 393 def GetUTCStamp(self):
395 return "100000" 394 return "100000"
396 395
397 def ExpectCmd(self, *args): 396 def Expect(self, *args):
398 """Convenience wrapper.""" 397 """Convenience wrapper."""
399 self._cmd_mock.Expect(*args) 398 self._mock.Expect(*args)
400
401 def ExpectReadline(self, *args):
402 """Convenience wrapper."""
403 self._rl_mock.Expect(*args)
404
405 def ExpectReadURL(self, *args):
406 """Convenience wrapper."""
407 self._url_mock.Expect(*args)
408 399
409 def setUp(self): 400 def setUp(self):
410 self._cmd_mock = SimpleMock("command") 401 self._mock = SimpleMock()
411 self._rl_mock = SimpleMock("readline")
412 self._url_mock = SimpleMock("readurl")
413 self._tmp_files = [] 402 self._tmp_files = []
414 self._state = {} 403 self._state = {}
415 404
416 def tearDown(self): 405 def tearDown(self):
417 Command("rm", "-rf %s*" % TEST_CONFIG[PERSISTFILE_BASENAME]) 406 Command("rm", "-rf %s*" % TEST_CONFIG[PERSISTFILE_BASENAME])
418 407
419 # Clean up temps. Doesn't work automatically. 408 # Clean up temps. Doesn't work automatically.
420 for name in self._tmp_files: 409 for name in self._tmp_files:
421 if os.path.exists(name): 410 if os.path.exists(name):
422 os.remove(name) 411 os.remove(name)
423 412
424 self._cmd_mock.AssertFinished() 413 self._mock.AssertFinished()
425 self._rl_mock.AssertFinished()
426 self._url_mock.AssertFinished()
427 414
428 def testGitOrig(self): 415 def testGitOrig(self):
429 self.assertTrue(Command("git", "--version").startswith("git version")) 416 self.assertTrue(Command("git", "--version").startswith("git version"))
430 417
431 def testGitMock(self): 418 def testGitMock(self):
432 self.ExpectCmd([Cmd("git --version", "git version 1.2.3"), 419 self.Expect([Cmd("git --version", "git version 1.2.3"),
433 Cmd("git dummy", "")]) 420 Cmd("git dummy", "")])
434 self.assertEquals("git version 1.2.3", self.MakeStep().Git("--version")) 421 self.assertEquals("git version 1.2.3", self.MakeStep().Git("--version"))
435 self.assertEquals("", self.MakeStep().Git("dummy")) 422 self.assertEquals("", self.MakeStep().Git("dummy"))
436 423
437 def testCommonPrepareDefault(self): 424 def testCommonPrepareDefault(self):
438 self.ExpectCmd([ 425 self.Expect([
439 Cmd("git status -s -uno", ""), 426 Cmd("git status -s -uno", ""),
440 Cmd("git status -s -b -uno", "## some_branch"), 427 Cmd("git status -s -b -uno", "## some_branch"),
441 Cmd("git svn fetch", ""), 428 Cmd("git svn fetch", ""),
442 Cmd("git branch", " branch1\n* %s" % TEST_CONFIG[BRANCHNAME]), 429 Cmd("git branch", " branch1\n* %s" % TEST_CONFIG[BRANCHNAME]),
430 RL("Y"),
443 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), 431 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], ""),
444 ]) 432 ])
445 self.ExpectReadline([RL("Y")])
446 self.MakeStep().CommonPrepare() 433 self.MakeStep().CommonPrepare()
447 self.MakeStep().PrepareBranch() 434 self.MakeStep().PrepareBranch()
448 self.assertEquals("some_branch", self._state["current_branch"]) 435 self.assertEquals("some_branch", self._state["current_branch"])
449 436
450 def testCommonPrepareNoConfirm(self): 437 def testCommonPrepareNoConfirm(self):
451 self.ExpectCmd([ 438 self.Expect([
452 Cmd("git status -s -uno", ""), 439 Cmd("git status -s -uno", ""),
453 Cmd("git status -s -b -uno", "## some_branch"), 440 Cmd("git status -s -b -uno", "## some_branch"),
454 Cmd("git svn fetch", ""), 441 Cmd("git svn fetch", ""),
455 Cmd("git branch", " branch1\n* %s" % TEST_CONFIG[BRANCHNAME]), 442 Cmd("git branch", " branch1\n* %s" % TEST_CONFIG[BRANCHNAME]),
443 RL("n"),
456 ]) 444 ])
457 self.ExpectReadline([RL("n")])
458 self.MakeStep().CommonPrepare() 445 self.MakeStep().CommonPrepare()
459 self.assertRaises(Exception, self.MakeStep().PrepareBranch) 446 self.assertRaises(Exception, self.MakeStep().PrepareBranch)
460 self.assertEquals("some_branch", self._state["current_branch"]) 447 self.assertEquals("some_branch", self._state["current_branch"])
461 448
462 def testCommonPrepareDeleteBranchFailure(self): 449 def testCommonPrepareDeleteBranchFailure(self):
463 self.ExpectCmd([ 450 self.Expect([
464 Cmd("git status -s -uno", ""), 451 Cmd("git status -s -uno", ""),
465 Cmd("git status -s -b -uno", "## some_branch"), 452 Cmd("git status -s -b -uno", "## some_branch"),
466 Cmd("git svn fetch", ""), 453 Cmd("git svn fetch", ""),
467 Cmd("git branch", " branch1\n* %s" % TEST_CONFIG[BRANCHNAME]), 454 Cmd("git branch", " branch1\n* %s" % TEST_CONFIG[BRANCHNAME]),
455 RL("Y"),
468 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], None), 456 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], None),
469 ]) 457 ])
470 self.ExpectReadline([RL("Y")])
471 self.MakeStep().CommonPrepare() 458 self.MakeStep().CommonPrepare()
472 self.assertRaises(Exception, self.MakeStep().PrepareBranch) 459 self.assertRaises(Exception, self.MakeStep().PrepareBranch)
473 self.assertEquals("some_branch", self._state["current_branch"]) 460 self.assertEquals("some_branch", self._state["current_branch"])
474 461
475 def testInitialEnvironmentChecks(self): 462 def testInitialEnvironmentChecks(self):
476 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() 463 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
477 os.environ["EDITOR"] = "vi" 464 os.environ["EDITOR"] = "vi"
478 self.MakeStep().InitialEnvironmentChecks() 465 self.MakeStep().InitialEnvironmentChecks()
479 466
480 def testReadAndPersistVersion(self): 467 def testReadAndPersistVersion(self):
(...skipping 22 matching lines...) Expand all
503 " too much\n" 490 " too much\n"
504 " trailing", cl) 491 " trailing", cl)
505 492
506 self.assertEqual("//\n#define BUILD_NUMBER 3\n", 493 self.assertEqual("//\n#define BUILD_NUMBER 3\n",
507 MSub(r"(?<=#define BUILD_NUMBER)(?P<space>\s+)\d*$", 494 MSub(r"(?<=#define BUILD_NUMBER)(?P<space>\s+)\d*$",
508 r"\g<space>3", 495 r"\g<space>3",
509 "//\n#define BUILD_NUMBER 321\n")) 496 "//\n#define BUILD_NUMBER 321\n"))
510 497
511 def testPreparePushRevision(self): 498 def testPreparePushRevision(self):
512 # Tests the default push hash used when the --revision option is not set. 499 # Tests the default push hash used when the --revision option is not set.
513 self.ExpectCmd([ 500 self.Expect([
514 Cmd("git log -1 --format=%H HEAD", "push_hash") 501 Cmd("git log -1 --format=%H HEAD", "push_hash")
515 ]) 502 ])
516 503
517 self.RunStep(PushToTrunk, PreparePushRevision) 504 self.RunStep(PushToTrunk, PreparePushRevision)
518 self.assertEquals("push_hash", self._state["push_hash"]) 505 self.assertEquals("push_hash", self._state["push_hash"])
519 506
520 def testPrepareChangeLog(self): 507 def testPrepareChangeLog(self):
521 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() 508 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile()
522 self.WriteFakeVersionFile() 509 self.WriteFakeVersionFile()
523 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() 510 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile()
524 511
525 self.ExpectCmd([ 512 self.Expect([
526 Cmd("git log --format=%H 1234..push_hash", "rev1\nrev2\nrev3\nrev4"), 513 Cmd("git log --format=%H 1234..push_hash", "rev1\nrev2\nrev3\nrev4"),
527 Cmd("git log -1 --format=%s rev1", "Title text 1"), 514 Cmd("git log -1 --format=%s rev1", "Title text 1"),
528 Cmd("git log -1 --format=%B rev1", "Title\n\nBUG=\nLOG=y\n"), 515 Cmd("git log -1 --format=%B rev1", "Title\n\nBUG=\nLOG=y\n"),
529 Cmd("git log -1 --format=%an rev1", "author1@chromium.org"), 516 Cmd("git log -1 --format=%an rev1", "author1@chromium.org"),
530 Cmd("git log -1 --format=%s rev2", "Title text 2."), 517 Cmd("git log -1 --format=%s rev2", "Title text 2."),
531 Cmd("git log -1 --format=%B rev2", "Title\n\nBUG=123\nLOG= \n"), 518 Cmd("git log -1 --format=%B rev2", "Title\n\nBUG=123\nLOG= \n"),
532 Cmd("git log -1 --format=%an rev2", "author2@chromium.org"), 519 Cmd("git log -1 --format=%an rev2", "author2@chromium.org"),
533 Cmd("git log -1 --format=%s rev3", "Title text 3"), 520 Cmd("git log -1 --format=%s rev3", "Title text 3"),
534 Cmd("git log -1 --format=%B rev3", "Title\n\nBUG=321\nLOG=true\n"), 521 Cmd("git log -1 --format=%B rev3", "Title\n\nBUG=321\nLOG=true\n"),
535 Cmd("git log -1 --format=%an rev3", "author3@chromium.org"), 522 Cmd("git log -1 --format=%an rev3", "author3@chromium.org"),
536 Cmd("git log -1 --format=%s rev4", "Title text 4"), 523 Cmd("git log -1 --format=%s rev4", "Title text 4"),
537 Cmd("git log -1 --format=%B rev4", 524 Cmd("git log -1 --format=%B rev4",
538 ("Title\n\nBUG=456\nLOG=Y\n\n" 525 ("Title\n\nBUG=456\nLOG=Y\n\n"
539 "Review URL: https://codereview.chromium.org/9876543210\n")), 526 "Review URL: https://codereview.chromium.org/9876543210\n")),
527 URL("https://codereview.chromium.org/9876543210/description",
528 "Title\n\nBUG=456\nLOG=N\n\n"),
540 Cmd("git log -1 --format=%an rev4", "author4@chromium.org"), 529 Cmd("git log -1 --format=%an rev4", "author4@chromium.org"),
541 ]) 530 ])
542 531
543 # The cl for rev4 on rietveld has an updated LOG flag.
544 self.ExpectReadURL([
545 URL("https://codereview.chromium.org/9876543210/description",
546 "Title\n\nBUG=456\nLOG=N\n\n"),
547 ])
548
549 self._state["last_push_bleeding_edge"] = "1234" 532 self._state["last_push_bleeding_edge"] = "1234"
550 self._state["push_hash"] = "push_hash" 533 self._state["push_hash"] = "push_hash"
551 self._state["version"] = "3.22.5" 534 self._state["version"] = "3.22.5"
552 self.RunStep(PushToTrunk, PrepareChangeLog) 535 self.RunStep(PushToTrunk, PrepareChangeLog)
553 536
554 actual_cl = FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE]) 537 actual_cl = FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE])
555 538
556 expected_cl = """1999-07-31: Version 3.22.5 539 expected_cl = """1999-07-31: Version 3.22.5
557 540
558 Title text 1. 541 Title text 1.
(...skipping 19 matching lines...) Expand all
578 # (author4@chromium.org) 561 # (author4@chromium.org)
579 # 562 #
580 #""" 563 #"""
581 564
582 self.assertEquals(expected_cl, actual_cl) 565 self.assertEquals(expected_cl, actual_cl)
583 566
584 def testEditChangeLog(self): 567 def testEditChangeLog(self):
585 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() 568 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile()
586 TextToFile(" New \n\tLines \n", TEST_CONFIG[CHANGELOG_ENTRY_FILE]) 569 TextToFile(" New \n\tLines \n", TEST_CONFIG[CHANGELOG_ENTRY_FILE])
587 os.environ["EDITOR"] = "vi" 570 os.environ["EDITOR"] = "vi"
588 self.ExpectCmd([ 571 self.Expect([
572 RL(""), # Open editor.
589 Cmd("vi %s" % TEST_CONFIG[CHANGELOG_ENTRY_FILE], ""), 573 Cmd("vi %s" % TEST_CONFIG[CHANGELOG_ENTRY_FILE], ""),
590 ]) 574 ])
591 self.ExpectReadline([
592 RL(""), # Open editor.
593 ])
594 575
595 self.RunStep(PushToTrunk, EditChangeLog) 576 self.RunStep(PushToTrunk, EditChangeLog)
596 577
597 self.assertEquals("New\n Lines", 578 self.assertEquals("New\n Lines",
598 FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE])) 579 FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE]))
599 580
600 # Version on trunk: 3.22.4.0. Version on master (bleeding_edge): 3.22.6. 581 # Version on trunk: 3.22.4.0. Version on master (bleeding_edge): 3.22.6.
601 # Make sure that the increment is 3.22.7.0. 582 # Make sure that the increment is 3.22.7.0.
602 def testIncrementVersion(self): 583 def testIncrementVersion(self):
603 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() 584 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile()
604 self.WriteFakeVersionFile() 585 self.WriteFakeVersionFile()
605 self._state["last_push_trunk"] = "hash1" 586 self._state["last_push_trunk"] = "hash1"
606 self._state["latest_build"] = "6" 587 self._state["latest_build"] = "6"
607 self._state["latest_version"] = "3.22.6.0" 588 self._state["latest_version"] = "3.22.6.0"
608 589
609 self.ExpectCmd([ 590 self.Expect([
610 Cmd("git checkout -f hash1 -- %s" % TEST_CONFIG[VERSION_FILE], ""), 591 Cmd("git checkout -f hash1 -- %s" % TEST_CONFIG[VERSION_FILE], ""),
611 Cmd(("git checkout -f svn/bleeding_edge -- %s" % 592 Cmd(("git checkout -f svn/bleeding_edge -- %s" %
612 TEST_CONFIG[VERSION_FILE]), 593 TEST_CONFIG[VERSION_FILE]),
613 "", cb=lambda: self.WriteFakeVersionFile(22, 6)), 594 "", cb=lambda: self.WriteFakeVersionFile(22, 6)),
614 ])
615
616 self.ExpectReadline([
617 RL("Y"), # Increment build number. 595 RL("Y"), # Increment build number.
618 ]) 596 ])
619 597
620 self.RunStep(PushToTrunk, IncrementVersion) 598 self.RunStep(PushToTrunk, IncrementVersion)
621 599
622 self.assertEquals("3", self._state["new_major"]) 600 self.assertEquals("3", self._state["new_major"])
623 self.assertEquals("22", self._state["new_minor"]) 601 self.assertEquals("22", self._state["new_minor"])
624 self.assertEquals("7", self._state["new_build"]) 602 self.assertEquals("7", self._state["new_build"])
625 self.assertEquals("0", self._state["new_patch"]) 603 self.assertEquals("0", self._state["new_patch"])
626 604
627 def _TestSquashCommits(self, change_log, expected_msg): 605 def _TestSquashCommits(self, change_log, expected_msg):
628 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() 606 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile()
629 with open(TEST_CONFIG[CHANGELOG_ENTRY_FILE], "w") as f: 607 with open(TEST_CONFIG[CHANGELOG_ENTRY_FILE], "w") as f:
630 f.write(change_log) 608 f.write(change_log)
631 609
632 self.ExpectCmd([ 610 self.Expect([
633 Cmd("git diff svn/trunk hash1", "patch content"), 611 Cmd("git diff svn/trunk hash1", "patch content"),
634 Cmd("git svn find-rev hash1", "123455\n"), 612 Cmd("git svn find-rev hash1", "123455\n"),
635 ]) 613 ])
636 614
637 self._state["push_hash"] = "hash1" 615 self._state["push_hash"] = "hash1"
638 self._state["date"] = "1999-11-11" 616 self._state["date"] = "1999-11-11"
639 617
640 self.RunStep(PushToTrunk, SquashCommits) 618 self.RunStep(PushToTrunk, SquashCommits)
641 self.assertEquals(FileToText(TEST_CONFIG[COMMITMSG_FILE]), expected_msg) 619 self.assertEquals(FileToText(TEST_CONFIG[COMMITMSG_FILE]), expected_msg)
642 620
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 Cmd("git svn fetch", ""), 717 Cmd("git svn fetch", ""),
740 Cmd("git branch", " branch1\n* branch2\n"), 718 Cmd("git branch", " branch1\n* branch2\n"),
741 Cmd("git branch", " branch1\n* branch2\n"), 719 Cmd("git branch", " branch1\n* branch2\n"),
742 Cmd("git checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], 720 Cmd("git checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME],
743 ""), 721 ""),
744 Cmd("git svn find-rev r123455", "push_hash\n"), 722 Cmd("git svn find-rev r123455", "push_hash\n"),
745 Cmd(("git log -1 --format=%H --grep=" 723 Cmd(("git log -1 --format=%H --grep="
746 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" " 724 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" "
747 "svn/trunk"), "hash2\n"), 725 "svn/trunk"), "hash2\n"),
748 Cmd("git log -1 hash2", "Log message\n"), 726 Cmd("git log -1 hash2", "Log message\n"),
727 ]
728 if manual:
729 expectations.append(RL("Y")) # Confirm last push.
730 expectations += [
749 Cmd("git log -1 --format=%s hash2", 731 Cmd("git log -1 --format=%s hash2",
750 "Version 3.4.5 (based on bleeding_edge revision r1234)\n"), 732 "Version 3.4.5 (based on bleeding_edge revision r1234)\n"),
751 Cmd("git svn find-rev r1234", "hash3\n"), 733 Cmd("git svn find-rev r1234", "hash3\n"),
752 Cmd(("git checkout -f svn/bleeding_edge -- %s" % 734 Cmd(("git checkout -f svn/bleeding_edge -- %s" %
753 TEST_CONFIG[VERSION_FILE]), 735 TEST_CONFIG[VERSION_FILE]),
754 "", cb=self.WriteFakeVersionFile), 736 "", cb=self.WriteFakeVersionFile),
755 Cmd("git checkout -f hash2 -- %s" % TEST_CONFIG[VERSION_FILE], "", 737 Cmd("git checkout -f hash2 -- %s" % TEST_CONFIG[VERSION_FILE], "",
756 cb=self.WriteFakeVersionFile), 738 cb=self.WriteFakeVersionFile),
739 ]
740 if manual:
741 expectations.append(RL("")) # Increment build number.
742 expectations += [
757 Cmd("git log --format=%H hash3..push_hash", "rev1\n"), 743 Cmd("git log --format=%H hash3..push_hash", "rev1\n"),
758 Cmd("git log -1 --format=%s rev1", "Log text 1.\n"), 744 Cmd("git log -1 --format=%s rev1", "Log text 1.\n"),
759 Cmd("git log -1 --format=%B rev1", "Text\nLOG=YES\nBUG=v8:321\nText\n"), 745 Cmd("git log -1 --format=%B rev1", "Text\nLOG=YES\nBUG=v8:321\nText\n"),
760 Cmd("git log -1 --format=%an rev1", "author1@chromium.org\n"), 746 Cmd("git log -1 --format=%an rev1", "author1@chromium.org\n"),
761 ] 747 ]
748 if manual:
749 expectations.append(RL("")) # Open editor.
762 if not force: 750 if not force:
763 expectations.append(Cmd("vi %s" % TEST_CONFIG[CHANGELOG_ENTRY_FILE], "")) 751 expectations.append(Cmd("vi %s" % TEST_CONFIG[CHANGELOG_ENTRY_FILE], ""))
764 expectations += [ 752 expectations += [
765 Cmd("git svn fetch", "fetch result\n"), 753 Cmd("git svn fetch", "fetch result\n"),
766 Cmd("git checkout -f svn/bleeding_edge", ""), 754 Cmd("git checkout -f svn/bleeding_edge", ""),
767 Cmd("git diff svn/trunk push_hash", "patch content\n"), 755 Cmd("git diff svn/trunk push_hash", "patch content\n"),
768 Cmd("git svn find-rev push_hash", "123455\n"), 756 Cmd("git svn find-rev push_hash", "123455\n"),
769 Cmd("git checkout -b %s svn/trunk" % TEST_CONFIG[TRUNKBRANCH], "", 757 Cmd("git checkout -b %s svn/trunk" % TEST_CONFIG[TRUNKBRANCH], "",
770 cb=ResetToTrunk), 758 cb=ResetToTrunk),
771 Cmd("git apply --index --reject \"%s\"" % TEST_CONFIG[PATCH_FILE], ""), 759 Cmd("git apply --index --reject \"%s\"" % TEST_CONFIG[PATCH_FILE], ""),
772 Cmd("git checkout -f svn/trunk -- %s" % TEST_CONFIG[CHANGELOG_FILE], "", 760 Cmd("git checkout -f svn/trunk -- %s" % TEST_CONFIG[CHANGELOG_FILE], "",
773 cb=ResetChangeLog), 761 cb=ResetChangeLog),
774 Cmd("git checkout -f svn/trunk -- %s" % TEST_CONFIG[VERSION_FILE], "", 762 Cmd("git checkout -f svn/trunk -- %s" % TEST_CONFIG[VERSION_FILE], "",
775 cb=self.WriteFakeVersionFile), 763 cb=self.WriteFakeVersionFile),
776 Cmd("git commit -aF \"%s\"" % TEST_CONFIG[COMMITMSG_FILE], "", 764 Cmd("git commit -aF \"%s\"" % TEST_CONFIG[COMMITMSG_FILE], "",
777 cb=CheckSVNCommit), 765 cb=CheckSVNCommit),
766 ]
767 if manual:
768 expectations.append(RL("Y")) # Sanity check.
769 expectations += [
778 Cmd("git svn dcommit 2>&1", 770 Cmd("git svn dcommit 2>&1",
779 "Some output\nCommitted r123456\nSome output\n"), 771 "Some output\nCommitted r123456\nSome output\n"),
780 Cmd("git svn tag 3.22.5 -m \"Tagging version 3.22.5\"", ""), 772 Cmd("git svn tag 3.22.5 -m \"Tagging version 3.22.5\"", ""),
781 Cmd("git checkout -f some_branch", ""), 773 Cmd("git checkout -f some_branch", ""),
782 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), 774 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], ""),
783 Cmd("git branch -D %s" % TEST_CONFIG[TRUNKBRANCH], ""), 775 Cmd("git branch -D %s" % TEST_CONFIG[TRUNKBRANCH], ""),
784 ] 776 ]
785 self.ExpectCmd(expectations) 777 self.Expect(expectations)
786
787 # Expected keyboard input in manual mode:
788 if manual:
789 self.ExpectReadline([
790 RL("Y"), # Confirm last push.
791 RL(""), # Open editor.
792 RL("Y"), # Increment build number.
793 RL("Y"), # Sanity check.
794 ])
795
796 # Expected keyboard input in semi-automatic mode and forced mode:
797 if not manual:
798 self.ExpectReadline([])
799 778
800 args = ["-a", "author@chromium.org", "--revision", "123455"] 779 args = ["-a", "author@chromium.org", "--revision", "123455"]
801 if force: args.append("-f") 780 if force: args.append("-f")
802 if manual: args.append("-m") 781 if manual: args.append("-m")
803 else: args += ["-r", "reviewer@chromium.org"] 782 else: args += ["-r", "reviewer@chromium.org"]
804 PushToTrunk(TEST_CONFIG, self).Run(args) 783 PushToTrunk(TEST_CONFIG, self).Run(args)
805 784
806 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE]) 785 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE])
807 self.assertTrue(re.search(r"^\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl)) 786 self.assertTrue(re.search(r"^\d\d\d\d\-\d+\-\d+: Version 3\.22\.5", cl))
808 self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl)) 787 self.assertTrue(re.search(r" Log text 1 \(issue 321\).", cl))
(...skipping 27 matching lines...) Expand all
836 if not os.path.exists(os.path.join(TEST_CONFIG[CHROMIUM], "v8")): 815 if not os.path.exists(os.path.join(TEST_CONFIG[CHROMIUM], "v8")):
837 os.makedirs(os.path.join(TEST_CONFIG[CHROMIUM], "v8")) 816 os.makedirs(os.path.join(TEST_CONFIG[CHROMIUM], "v8"))
838 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line", 817 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line",
839 TEST_CONFIG[DEPS_FILE]) 818 TEST_CONFIG[DEPS_FILE])
840 def WriteDeps(): 819 def WriteDeps():
841 TextToFile("Some line\n \"v8_revision\": \"123455\",\n some line", 820 TextToFile("Some line\n \"v8_revision\": \"123455\",\n some line",
842 TEST_CONFIG[DEPS_FILE]) 821 TEST_CONFIG[DEPS_FILE])
843 822
844 os.environ["EDITOR"] = "vi" 823 os.environ["EDITOR"] = "vi"
845 force_flag = " -f" if not manual else "" 824 force_flag = " -f" if not manual else ""
846 self.ExpectCmd([ 825 expectations = [
847 Cmd("git status -s -uno", ""), 826 Cmd("git status -s -uno", ""),
848 Cmd("git status -s -b -uno", "## some_branch\n"), 827 Cmd("git status -s -b -uno", "## some_branch\n"),
849 Cmd("git svn fetch", ""), 828 Cmd("git svn fetch", ""),
850 Cmd(("git log -1 --format=%H --grep=" 829 Cmd(("git log -1 --format=%H --grep="
851 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" " 830 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" "
852 "svn/trunk"), "push_hash\n"), 831 "svn/trunk"), "push_hash\n"),
853 Cmd("git svn find-rev push_hash", "123455\n"), 832 Cmd("git svn find-rev push_hash", "123455\n"),
854 Cmd("git log -1 --format=%s push_hash", 833 Cmd("git log -1 --format=%s push_hash",
855 "Version 3.22.5 (based on bleeding_edge revision r123454)\n"), 834 "Version 3.22.5 (based on bleeding_edge revision r123454)\n"),
835 URL("https://chromium-build.appspot.com/p/chromium/sheriff_v8.js",
836 "document.write('g_name')"),
856 Cmd("git status -s -uno", ""), 837 Cmd("git status -s -uno", ""),
857 Cmd("git checkout -f master", ""), 838 Cmd("git checkout -f master", ""),
858 Cmd("gclient sync --nohooks", "syncing..."), 839 Cmd("gclient sync --nohooks", "syncing..."),
859 Cmd("git pull", ""), 840 Cmd("git pull", ""),
860 Cmd("git fetch origin", ""), 841 Cmd("git fetch origin", ""),
861 Cmd("git checkout -b v8-roll-123455", ""), 842 Cmd("git checkout -b v8-roll-123455", ""),
862 Cmd("roll-dep v8 123455", "rolled", cb=WriteDeps), 843 Cmd("roll-dep v8 123455", "rolled", cb=WriteDeps),
844 ]
845 if manual:
846 expectations.append(RL("c_name@chromium.org")) # Chromium reviewer.
847 expectations += [
863 Cmd(("git commit -am \"Update V8 to version 3.22.5 " 848 Cmd(("git commit -am \"Update V8 to version 3.22.5 "
864 "(based on bleeding_edge revision r123454).\n\n" 849 "(based on bleeding_edge revision r123454).\n\n"
865 "Please reply to the V8 sheriff c_name@chromium.org in " 850 "Please reply to the V8 sheriff c_name@chromium.org in "
866 "case of problems.\n\nTBR=c_name@chromium.org\""), 851 "case of problems.\n\nTBR=c_name@chromium.org\""),
867 ""), 852 ""),
868 Cmd(("git cl upload --send-mail --email \"author@chromium.org\"%s" 853 Cmd(("git cl upload --send-mail --email \"author@chromium.org\"%s"
869 % force_flag), ""), 854 % force_flag), ""),
870 ]) 855 ]
871 856 self.Expect(expectations)
872 self.ExpectReadURL([
873 URL("https://chromium-build.appspot.com/p/chromium/sheriff_v8.js",
874 "document.write('g_name')"),
875 ])
876
877 # Expected keyboard input in manual mode:
878 if manual:
879 self.ExpectReadline([
880 RL("c_name@chromium.org"), # Chromium reviewer.
881 ])
882
883 # Expected keyboard input in semi-automatic mode and forced mode:
884 if not manual:
885 self.ExpectReadline([])
886 857
887 args = ["-a", "author@chromium.org", "-c", TEST_CONFIG[CHROMIUM], 858 args = ["-a", "author@chromium.org", "-c", TEST_CONFIG[CHROMIUM],
888 "--sheriff", "--googlers-mapping", googlers_mapping_py] 859 "--sheriff", "--googlers-mapping", googlers_mapping_py]
889 if force: args.append("-f") 860 if force: args.append("-f")
890 if manual: args.append("-m") 861 if manual: args.append("-m")
891 else: args += ["-r", "reviewer@chromium.org"] 862 else: args += ["-r", "reviewer@chromium.org"]
892 ChromiumRoll(TEST_CONFIG, self).Run(args) 863 ChromiumRoll(TEST_CONFIG, self).Run(args)
893 864
894 deps = FileToText(TEST_CONFIG[DEPS_FILE]) 865 deps = FileToText(TEST_CONFIG[DEPS_FILE])
895 self.assertTrue(re.search("\"v8_revision\": \"123455\"", deps)) 866 self.assertTrue(re.search("\"v8_revision\": \"123455\"", deps))
896 867
897 def testChromiumRollManual(self): 868 def testChromiumRollManual(self):
898 self._ChromiumRoll(manual=True) 869 self._ChromiumRoll(manual=True)
899 870
900 def testChromiumRollSemiAutomatic(self): 871 def testChromiumRollSemiAutomatic(self):
901 self._ChromiumRoll() 872 self._ChromiumRoll()
902 873
903 def testChromiumRollForced(self): 874 def testChromiumRollForced(self):
904 self._ChromiumRoll(force=True) 875 self._ChromiumRoll(force=True)
905 876
906 def testCheckLastPushRecently(self): 877 def testCheckLastPushRecently(self):
907 self.ExpectCmd([ 878 self.Expect([
908 Cmd(("git log -1 --format=%H --grep=" 879 Cmd(("git log -1 --format=%H --grep="
909 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" " 880 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" "
910 "svn/trunk"), "hash2\n"), 881 "svn/trunk"), "hash2\n"),
911 Cmd("git log -1 --format=%s hash2", 882 Cmd("git log -1 --format=%s hash2",
912 "Version 3.4.5 (based on bleeding_edge revision r99)\n"), 883 "Version 3.4.5 (based on bleeding_edge revision r99)\n"),
913 ]) 884 ])
914 885
915 self._state["lkgr"] = "101" 886 self._state["lkgr"] = "101"
916 887
917 self.assertRaises(Exception, lambda: self.RunStep(auto_push.AutoPush, 888 self.assertRaises(Exception, lambda: self.RunStep(auto_push.AutoPush,
918 CheckLastPush, 889 CheckLastPush,
919 AUTO_PUSH_ARGS)) 890 AUTO_PUSH_ARGS))
920 891
921 def testAutoPush(self): 892 def testAutoPush(self):
922 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() 893 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
923 TEST_CONFIG[SETTINGS_LOCATION] = "~/.doesnotexist" 894 TEST_CONFIG[SETTINGS_LOCATION] = "~/.doesnotexist"
924 895
925 self.ExpectReadURL([ 896 self.Expect([
897 Cmd("git status -s -uno", ""),
898 Cmd("git status -s -b -uno", "## some_branch\n"),
899 Cmd("git svn fetch", ""),
926 URL("https://v8-status.appspot.com/current?format=json", 900 URL("https://v8-status.appspot.com/current?format=json",
927 "{\"message\": \"Tree is throttled\"}"), 901 "{\"message\": \"Tree is throttled\"}"),
928 URL("https://v8-status.appspot.com/lkgr", Exception("Network problem")), 902 URL("https://v8-status.appspot.com/lkgr", Exception("Network problem")),
929 URL("https://v8-status.appspot.com/lkgr", "100"), 903 URL("https://v8-status.appspot.com/lkgr", "100"),
930 ])
931
932 self.ExpectCmd([
933 Cmd("git status -s -uno", ""),
934 Cmd("git status -s -b -uno", "## some_branch\n"),
935 Cmd("git svn fetch", ""),
936 Cmd(("git log -1 --format=%H --grep=\"" 904 Cmd(("git log -1 --format=%H --grep=\""
937 "^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\"" 905 "^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\""
938 " svn/trunk"), "push_hash\n"), 906 " svn/trunk"), "push_hash\n"),
939 Cmd("git log -1 --format=%s push_hash", 907 Cmd("git log -1 --format=%s push_hash",
940 "Version 3.4.5 (based on bleeding_edge revision r79)\n"), 908 "Version 3.4.5 (based on bleeding_edge revision r79)\n"),
941 ]) 909 ])
942 910
943 auto_push.AutoPush(TEST_CONFIG, self).Run(AUTO_PUSH_ARGS + ["--push"]) 911 auto_push.AutoPush(TEST_CONFIG, self).Run(AUTO_PUSH_ARGS + ["--push"])
944 912
945 state = json.loads(FileToText("%s-state.json" 913 state = json.loads(FileToText("%s-state.json"
946 % TEST_CONFIG[PERSISTFILE_BASENAME])) 914 % TEST_CONFIG[PERSISTFILE_BASENAME]))
947 915
948 self.assertEquals("100", state["lkgr"]) 916 self.assertEquals("100", state["lkgr"])
949 917
950 def testAutoPushStoppedBySettings(self): 918 def testAutoPushStoppedBySettings(self):
951 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() 919 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
952 TEST_CONFIG[SETTINGS_LOCATION] = self.MakeEmptyTempFile() 920 TEST_CONFIG[SETTINGS_LOCATION] = self.MakeEmptyTempFile()
953 TextToFile("{\"enable_auto_push\": false}", TEST_CONFIG[SETTINGS_LOCATION]) 921 TextToFile("{\"enable_auto_push\": false}", TEST_CONFIG[SETTINGS_LOCATION])
954 922
955 self.ExpectReadURL([]) 923 self.Expect([
956
957 self.ExpectCmd([
958 Cmd("git status -s -uno", ""), 924 Cmd("git status -s -uno", ""),
959 Cmd("git status -s -b -uno", "## some_branch\n"), 925 Cmd("git status -s -b -uno", "## some_branch\n"),
960 Cmd("git svn fetch", ""), 926 Cmd("git svn fetch", ""),
961 ]) 927 ])
962 928
963 def RunAutoPush(): 929 def RunAutoPush():
964 auto_push.AutoPush(TEST_CONFIG, self).Run(AUTO_PUSH_ARGS) 930 auto_push.AutoPush(TEST_CONFIG, self).Run(AUTO_PUSH_ARGS)
965 self.assertRaises(Exception, RunAutoPush) 931 self.assertRaises(Exception, RunAutoPush)
966 932
967 def testAutoPushStoppedByTreeStatus(self): 933 def testAutoPushStoppedByTreeStatus(self):
968 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() 934 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
969 TEST_CONFIG[SETTINGS_LOCATION] = "~/.doesnotexist" 935 TEST_CONFIG[SETTINGS_LOCATION] = "~/.doesnotexist"
970 936
971 self.ExpectReadURL([ 937 self.Expect([
938 Cmd("git status -s -uno", ""),
939 Cmd("git status -s -b -uno", "## some_branch\n"),
940 Cmd("git svn fetch", ""),
972 URL("https://v8-status.appspot.com/current?format=json", 941 URL("https://v8-status.appspot.com/current?format=json",
973 "{\"message\": \"Tree is throttled (no push)\"}"), 942 "{\"message\": \"Tree is throttled (no push)\"}"),
974 ]) 943 ])
975 944
976 self.ExpectCmd([
977 Cmd("git status -s -uno", ""),
978 Cmd("git status -s -b -uno", "## some_branch\n"),
979 Cmd("git svn fetch", ""),
980 ])
981
982 def RunAutoPush(): 945 def RunAutoPush():
983 auto_push.AutoPush(TEST_CONFIG, self).Run(AUTO_PUSH_ARGS) 946 auto_push.AutoPush(TEST_CONFIG, self).Run(AUTO_PUSH_ARGS)
984 self.assertRaises(Exception, RunAutoPush) 947 self.assertRaises(Exception, RunAutoPush)
985 948
986 def testAutoRollExistingRoll(self): 949 def testAutoRollExistingRoll(self):
987 self.ExpectReadURL([ 950 self.Expect([
988 URL("https://codereview.chromium.org/search", 951 URL("https://codereview.chromium.org/search",
989 "owner=author%40chromium.org&limit=30&closed=3&format=json", 952 "owner=author%40chromium.org&limit=30&closed=3&format=json",
990 ("{\"results\": [{\"subject\": \"different\"}," 953 ("{\"results\": [{\"subject\": \"different\"},"
991 "{\"subject\": \"Update V8 to Version...\"}]}")), 954 "{\"subject\": \"Update V8 to Version...\"}]}")),
992 ]) 955 ])
993 956
994 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run( 957 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run(
995 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG[CHROMIUM]]) 958 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG[CHROMIUM]])
996 self.assertEquals(1, result) 959 self.assertEquals(1, result)
997 960
998 # Snippet from the original DEPS file. 961 # Snippet from the original DEPS file.
999 FAKE_DEPS = """ 962 FAKE_DEPS = """
1000 vars = { 963 vars = {
1001 "v8_revision": "123455", 964 "v8_revision": "123455",
1002 } 965 }
1003 deps = { 966 deps = {
1004 "src/v8": 967 "src/v8":
1005 (Var("googlecode_url") % "v8") + "/" + Var("v8_branch") + "@" + 968 (Var("googlecode_url") % "v8") + "/" + Var("v8_branch") + "@" +
1006 Var("v8_revision"), 969 Var("v8_revision"),
1007 } 970 }
1008 """ 971 """
1009 972
1010 def testAutoRollUpToDate(self): 973 def testAutoRollUpToDate(self):
1011 self.ExpectReadURL([ 974 self.Expect([
1012 URL("https://codereview.chromium.org/search", 975 URL("https://codereview.chromium.org/search",
1013 "owner=author%40chromium.org&limit=30&closed=3&format=json", 976 "owner=author%40chromium.org&limit=30&closed=3&format=json",
1014 ("{\"results\": [{\"subject\": \"different\"}]}")), 977 ("{\"results\": [{\"subject\": \"different\"}]}")),
978 Cmd(("git log -1 --format=%H --grep="
979 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" "
980 "svn/trunk"), "push_hash\n"),
981 Cmd("git svn find-rev push_hash", "123455\n"),
1015 URL("http://src.chromium.org/svn/trunk/src/DEPS", 982 URL("http://src.chromium.org/svn/trunk/src/DEPS",
1016 self.FAKE_DEPS), 983 self.FAKE_DEPS),
1017 ]) 984 ])
1018 985
1019 self.ExpectCmd([
1020 Cmd(("git log -1 --format=%H --grep="
1021 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" "
1022 "svn/trunk"), "push_hash\n"),
1023 Cmd("git svn find-rev push_hash", "123455\n"),
1024 ])
1025
1026 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run( 986 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run(
1027 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG[CHROMIUM]]) 987 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG[CHROMIUM]])
1028 self.assertEquals(1, result) 988 self.assertEquals(1, result)
1029 989
1030 def testAutoRoll(self): 990 def testAutoRoll(self):
1031 TEST_CONFIG[CLUSTERFUZZ_API_KEY_FILE] = self.MakeEmptyTempFile() 991 TEST_CONFIG[CLUSTERFUZZ_API_KEY_FILE] = self.MakeEmptyTempFile()
1032 TextToFile("fake key", TEST_CONFIG[CLUSTERFUZZ_API_KEY_FILE]) 992 TextToFile("fake key", TEST_CONFIG[CLUSTERFUZZ_API_KEY_FILE])
1033 self.ExpectReadURL([ 993
994 self.Expect([
1034 URL("https://codereview.chromium.org/search", 995 URL("https://codereview.chromium.org/search",
1035 "owner=author%40chromium.org&limit=30&closed=3&format=json", 996 "owner=author%40chromium.org&limit=30&closed=3&format=json",
1036 ("{\"results\": [{\"subject\": \"different\"}]}")), 997 ("{\"results\": [{\"subject\": \"different\"}]}")),
998 Cmd(("git log -1 --format=%H --grep="
999 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" "
1000 "svn/trunk"), "push_hash\n"),
1001 Cmd("git svn find-rev push_hash", "123456\n"),
1037 URL("http://src.chromium.org/svn/trunk/src/DEPS", 1002 URL("http://src.chromium.org/svn/trunk/src/DEPS",
1038 self.FAKE_DEPS), 1003 self.FAKE_DEPS),
1039 ]) 1004 ])
1040 1005
1041 self.ExpectCmd([
1042 Cmd(("git log -1 --format=%H --grep="
1043 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" "
1044 "svn/trunk"), "push_hash\n"),
1045 Cmd("git svn find-rev push_hash", "123456\n"),
1046 ])
1047
1048 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run( 1006 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run(
1049 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG[CHROMIUM], "--roll"]) 1007 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG[CHROMIUM], "--roll"])
1050 self.assertEquals(0, result) 1008 self.assertEquals(0, result)
1051 1009
1052 def testMergeToBranch(self): 1010 def testMergeToBranch(self):
1053 TEST_CONFIG[ALREADY_MERGING_SENTINEL_FILE] = self.MakeEmptyTempFile() 1011 TEST_CONFIG[ALREADY_MERGING_SENTINEL_FILE] = self.MakeEmptyTempFile()
1054 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() 1012 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
1055 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() 1013 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile()
1056 self.WriteFakeVersionFile(build=5) 1014 self.WriteFakeVersionFile(build=5)
1057 os.environ["EDITOR"] = "vi" 1015 os.environ["EDITOR"] = "vi"
(...skipping 21 matching lines...) Expand all
1079 1037
1080 def VerifySVNCommit(): 1038 def VerifySVNCommit():
1081 commit = FileToText(TEST_CONFIG[COMMITMSG_FILE]) 1039 commit = FileToText(TEST_CONFIG[COMMITMSG_FILE])
1082 self.assertEquals(msg, commit) 1040 self.assertEquals(msg, commit)
1083 version = FileToText(TEST_CONFIG[VERSION_FILE]) 1041 version = FileToText(TEST_CONFIG[VERSION_FILE])
1084 self.assertTrue(re.search(r"#define MINOR_VERSION\s+22", version)) 1042 self.assertTrue(re.search(r"#define MINOR_VERSION\s+22", version))
1085 self.assertTrue(re.search(r"#define BUILD_NUMBER\s+5", version)) 1043 self.assertTrue(re.search(r"#define BUILD_NUMBER\s+5", version))
1086 self.assertTrue(re.search(r"#define PATCH_LEVEL\s+1", version)) 1044 self.assertTrue(re.search(r"#define PATCH_LEVEL\s+1", version))
1087 self.assertTrue(re.search(r"#define IS_CANDIDATE_VERSION\s+0", version)) 1045 self.assertTrue(re.search(r"#define IS_CANDIDATE_VERSION\s+0", version))
1088 1046
1089 self.ExpectCmd([ 1047 self.Expect([
1090 Cmd("git status -s -uno", ""), 1048 Cmd("git status -s -uno", ""),
1091 Cmd("git status -s -b -uno", "## some_branch\n"), 1049 Cmd("git status -s -b -uno", "## some_branch\n"),
1092 Cmd("git svn fetch", ""), 1050 Cmd("git svn fetch", ""),
1093 Cmd("git branch", " branch1\n* branch2\n"), 1051 Cmd("git branch", " branch1\n* branch2\n"),
1094 Cmd("git checkout -b %s svn/trunk" % TEST_CONFIG[BRANCHNAME], ""), 1052 Cmd("git checkout -b %s svn/trunk" % TEST_CONFIG[BRANCHNAME], ""),
1095 Cmd(("git log --format=%H --grep=\"Port r12345\" " 1053 Cmd(("git log --format=%H --grep=\"Port r12345\" "
1096 "--reverse svn/bleeding_edge"), 1054 "--reverse svn/bleeding_edge"),
1097 "hash1\nhash2"), 1055 "hash1\nhash2"),
1098 Cmd("git svn find-rev hash1 svn/bleeding_edge", "45678"), 1056 Cmd("git svn find-rev hash1 svn/bleeding_edge", "45678"),
1099 Cmd("git log -1 --format=%s hash1", "Title1"), 1057 Cmd("git log -1 --format=%s hash1", "Title1"),
1100 Cmd("git svn find-rev hash2 svn/bleeding_edge", "23456"), 1058 Cmd("git svn find-rev hash2 svn/bleeding_edge", "23456"),
1101 Cmd("git log -1 --format=%s hash2", "Title2"), 1059 Cmd("git log -1 --format=%s hash2", "Title2"),
1102 Cmd(("git log --format=%H --grep=\"Port r23456\" " 1060 Cmd(("git log --format=%H --grep=\"Port r23456\" "
1103 "--reverse svn/bleeding_edge"), 1061 "--reverse svn/bleeding_edge"),
1104 ""), 1062 ""),
1105 Cmd(("git log --format=%H --grep=\"Port r34567\" " 1063 Cmd(("git log --format=%H --grep=\"Port r34567\" "
1106 "--reverse svn/bleeding_edge"), 1064 "--reverse svn/bleeding_edge"),
1107 "hash3"), 1065 "hash3"),
1108 Cmd("git svn find-rev hash3 svn/bleeding_edge", "56789"), 1066 Cmd("git svn find-rev hash3 svn/bleeding_edge", "56789"),
1109 Cmd("git log -1 --format=%s hash3", "Title3"), 1067 Cmd("git log -1 --format=%s hash3", "Title3"),
1068 RL("Y"), # Automatically add corresponding ports (34567, 56789)?
1110 Cmd("git svn find-rev r12345 svn/bleeding_edge", "hash4"), 1069 Cmd("git svn find-rev r12345 svn/bleeding_edge", "hash4"),
1111 # Simulate svn being down which stops the script. 1070 # Simulate svn being down which stops the script.
1112 Cmd("git svn find-rev r23456 svn/bleeding_edge", None), 1071 Cmd("git svn find-rev r23456 svn/bleeding_edge", None),
1113 # Restart script in the failing step. 1072 # Restart script in the failing step.
1114 Cmd("git svn find-rev r12345 svn/bleeding_edge", "hash4"), 1073 Cmd("git svn find-rev r12345 svn/bleeding_edge", "hash4"),
1115 Cmd("git svn find-rev r23456 svn/bleeding_edge", "hash2"), 1074 Cmd("git svn find-rev r23456 svn/bleeding_edge", "hash2"),
1116 Cmd("git svn find-rev r34567 svn/bleeding_edge", "hash3"), 1075 Cmd("git svn find-rev r34567 svn/bleeding_edge", "hash3"),
1117 Cmd("git svn find-rev r45678 svn/bleeding_edge", "hash1"), 1076 Cmd("git svn find-rev r45678 svn/bleeding_edge", "hash1"),
1118 Cmd("git svn find-rev r56789 svn/bleeding_edge", "hash5"), 1077 Cmd("git svn find-rev r56789 svn/bleeding_edge", "hash5"),
1119 Cmd("git log -1 --format=%s hash4", "Title4"), 1078 Cmd("git log -1 --format=%s hash4", "Title4"),
(...skipping 20 matching lines...) Expand all
1140 "", cb=VerifyPatch("patch3")), 1099 "", cb=VerifyPatch("patch3")),
1141 Cmd("git log -1 -p hash1", "patch1"), 1100 Cmd("git log -1 -p hash1", "patch1"),
1142 Cmd(("git apply --index --reject \"%s\"" % 1101 Cmd(("git apply --index --reject \"%s\"" %
1143 TEST_CONFIG[TEMPORARY_PATCH_FILE]), 1102 TEST_CONFIG[TEMPORARY_PATCH_FILE]),
1144 "", cb=VerifyPatch("patch1")), 1103 "", cb=VerifyPatch("patch1")),
1145 Cmd("git log -1 -p hash5", "patch5\n"), 1104 Cmd("git log -1 -p hash5", "patch5\n"),
1146 Cmd(("git apply --index --reject \"%s\"" % 1105 Cmd(("git apply --index --reject \"%s\"" %
1147 TEST_CONFIG[TEMPORARY_PATCH_FILE]), 1106 TEST_CONFIG[TEMPORARY_PATCH_FILE]),
1148 "", cb=VerifyPatch("patch5\n")), 1107 "", cb=VerifyPatch("patch5\n")),
1149 Cmd("git apply --index --reject \"%s\"" % extra_patch, ""), 1108 Cmd("git apply --index --reject \"%s\"" % extra_patch, ""),
1109 RL("Y"), # Automatically increment patch level?
1150 Cmd("git commit -aF \"%s\"" % TEST_CONFIG[COMMITMSG_FILE], ""), 1110 Cmd("git commit -aF \"%s\"" % TEST_CONFIG[COMMITMSG_FILE], ""),
1111 RL("reviewer@chromium.org"), # V8 reviewer.
1151 Cmd("git cl upload --send-mail -r \"reviewer@chromium.org\"", ""), 1112 Cmd("git cl upload --send-mail -r \"reviewer@chromium.org\"", ""),
1152 Cmd("git checkout -f %s" % TEST_CONFIG[BRANCHNAME], ""), 1113 Cmd("git checkout -f %s" % TEST_CONFIG[BRANCHNAME], ""),
1114 RL("LGTM"), # Enter LGTM for V8 CL.
1153 Cmd("git cl presubmit", "Presubmit successfull\n"), 1115 Cmd("git cl presubmit", "Presubmit successfull\n"),
1154 Cmd("git cl dcommit -f --bypass-hooks", "Closing issue\n", 1116 Cmd("git cl dcommit -f --bypass-hooks", "Closing issue\n",
1155 cb=VerifySVNCommit), 1117 cb=VerifySVNCommit),
1156 Cmd("git svn fetch", ""), 1118 Cmd("git svn fetch", ""),
1157 Cmd(("git log -1 --format=%%H --grep=\"%s\" svn/trunk" 1119 Cmd(("git log -1 --format=%%H --grep=\"%s\" svn/trunk"
1158 % msg.replace("\"", "\\\"")), "hash6"), 1120 % msg.replace("\"", "\\\"")), "hash6"),
1159 Cmd("git svn find-rev hash6", "1324"), 1121 Cmd("git svn find-rev hash6", "1324"),
1160 Cmd(("svn copy -r 1324 https://v8.googlecode.com/svn/trunk " 1122 Cmd(("svn copy -r 1324 https://v8.googlecode.com/svn/trunk "
1161 "https://v8.googlecode.com/svn/tags/3.22.5.1 -m " 1123 "https://v8.googlecode.com/svn/tags/3.22.5.1 -m "
1162 "\"Tagging version 3.22.5.1\""), ""), 1124 "\"Tagging version 3.22.5.1\""), ""),
1163 Cmd("git checkout -f some_branch", ""), 1125 Cmd("git checkout -f some_branch", ""),
1164 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), 1126 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], ""),
1165 ]) 1127 ])
1166 1128
1167 self.ExpectReadline([
1168 RL("Y"), # Automatically add corresponding ports (34567, 56789)?
1169 RL("Y"), # Automatically increment patch level?
1170 RL("reviewer@chromium.org"), # V8 reviewer.
1171 RL("LGTM"), # Enter LGTM for V8 CL.
1172 ])
1173
1174 # r12345 and r34567 are patches. r23456 (included) and r45678 are the MIPS 1129 # r12345 and r34567 are patches. r23456 (included) and r45678 are the MIPS
1175 # ports of r12345. r56789 is the MIPS port of r34567. 1130 # ports of r12345. r56789 is the MIPS port of r34567.
1176 args = ["-f", "-p", extra_patch, "--branch", "trunk", "12345", "23456", 1131 args = ["-f", "-p", extra_patch, "--branch", "trunk", "12345", "23456",
1177 "34567"] 1132 "34567"]
1178 1133
1179 # The first run of the script stops because of the svn being down. 1134 # The first run of the script stops because of the svn being down.
1180 self.assertRaises(GitFailedException, 1135 self.assertRaises(GitFailedException,
1181 lambda: MergeToBranch(TEST_CONFIG, self).Run(args)) 1136 lambda: MergeToBranch(TEST_CONFIG, self).Run(args))
1182 1137
1183 # Test that state recovery after restarting the script works. 1138 # Test that state recovery after restarting the script works.
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1253 WriteDEPS(567) 1208 WriteDEPS(567)
1254 1209
1255 def ResetVersion(minor, build, patch=0): 1210 def ResetVersion(minor, build, patch=0):
1256 return lambda: self.WriteFakeVersionFile(minor=minor, 1211 return lambda: self.WriteFakeVersionFile(minor=minor,
1257 build=build, 1212 build=build,
1258 patch=patch) 1213 patch=patch)
1259 1214
1260 def ResetDEPS(revision): 1215 def ResetDEPS(revision):
1261 return lambda: WriteDEPS(revision) 1216 return lambda: WriteDEPS(revision)
1262 1217
1263 self.ExpectCmd([ 1218 self.Expect([
1264 Cmd("git status -s -uno", ""), 1219 Cmd("git status -s -uno", ""),
1265 Cmd("git status -s -b -uno", "## some_branch\n"), 1220 Cmd("git status -s -b -uno", "## some_branch\n"),
1266 Cmd("git svn fetch", ""), 1221 Cmd("git svn fetch", ""),
1267 Cmd("git branch", " branch1\n* branch2\n"), 1222 Cmd("git branch", " branch1\n* branch2\n"),
1268 Cmd("git checkout -b %s" % TEST_CONFIG[BRANCHNAME], ""), 1223 Cmd("git checkout -b %s" % TEST_CONFIG[BRANCHNAME], ""),
1269 Cmd("git branch -r", " svn/3.21\n svn/3.3\n"), 1224 Cmd("git branch -r", " svn/3.21\n svn/3.3\n"),
1270 Cmd("git reset --hard svn/3.3", ""), 1225 Cmd("git reset --hard svn/3.3", ""),
1271 Cmd("git log --format=%H", "hash1\nhash2"), 1226 Cmd("git log --format=%H", "hash1\nhash2"),
1272 Cmd("git diff --name-only hash1 hash1^", ""), 1227 Cmd("git diff --name-only hash1 hash1^", ""),
1273 Cmd("git diff --name-only hash2 hash2^", TEST_CONFIG[VERSION_FILE]), 1228 Cmd("git diff --name-only hash2 hash2^", TEST_CONFIG[VERSION_FILE]),
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1385 1340
1386 def testBumpUpVersion(self): 1341 def testBumpUpVersion(self):
1387 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() 1342 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile()
1388 self.WriteFakeVersionFile() 1343 self.WriteFakeVersionFile()
1389 1344
1390 def ResetVersion(minor, build, patch=0): 1345 def ResetVersion(minor, build, patch=0):
1391 return lambda: self.WriteFakeVersionFile(minor=minor, 1346 return lambda: self.WriteFakeVersionFile(minor=minor,
1392 build=build, 1347 build=build,
1393 patch=patch) 1348 patch=patch)
1394 1349
1395 self.ExpectCmd([ 1350 self.Expect([
1396 Cmd("git status -s -uno", ""), 1351 Cmd("git status -s -uno", ""),
1397 Cmd("git checkout -f bleeding_edge", "", cb=ResetVersion(11, 4)), 1352 Cmd("git checkout -f bleeding_edge", "", cb=ResetVersion(11, 4)),
1398 Cmd("git pull", ""), 1353 Cmd("git pull", ""),
1399 Cmd("git branch", ""), 1354 Cmd("git branch", ""),
1400 Cmd("git checkout -f bleeding_edge", ""), 1355 Cmd("git checkout -f bleeding_edge", ""),
1401 Cmd("git log -1 --format=%H", "latest_hash"), 1356 Cmd("git log -1 --format=%H", "latest_hash"),
1402 Cmd("git diff --name-only latest_hash latest_hash^", ""), 1357 Cmd("git diff --name-only latest_hash latest_hash^", ""),
1358 URL("https://v8-status.appspot.com/lkgr", "12345"),
1403 Cmd("git checkout -f bleeding_edge", ""), 1359 Cmd("git checkout -f bleeding_edge", ""),
1404 Cmd(("git log --format=%H --grep=" 1360 Cmd(("git log --format=%H --grep="
1405 "\"^git-svn-id: [^@]*@12345 [A-Za-z0-9-]*$\""), 1361 "\"^git-svn-id: [^@]*@12345 [A-Za-z0-9-]*$\""),
1406 "lkgr_hash"), 1362 "lkgr_hash"),
1407 Cmd("git checkout -b auto-bump-up-version lkgr_hash", ""), 1363 Cmd("git checkout -b auto-bump-up-version lkgr_hash", ""),
1408 Cmd("git checkout -f bleeding_edge", ""), 1364 Cmd("git checkout -f bleeding_edge", ""),
1409 Cmd("git branch", ""), 1365 Cmd("git branch", ""),
1410 Cmd("git diff --name-only lkgr_hash lkgr_hash^", ""), 1366 Cmd("git diff --name-only lkgr_hash lkgr_hash^", ""),
1411 Cmd("git checkout -f master", "", cb=ResetVersion(11, 5)), 1367 Cmd("git checkout -f master", "", cb=ResetVersion(11, 5)),
1412 Cmd("git pull", ""), 1368 Cmd("git pull", ""),
1369 URL("https://v8-status.appspot.com/current?format=json",
1370 "{\"message\": \"Tree is open\"}"),
1413 Cmd("git checkout -b auto-bump-up-version bleeding_edge", "", 1371 Cmd("git checkout -b auto-bump-up-version bleeding_edge", "",
1414 cb=ResetVersion(11, 4)), 1372 cb=ResetVersion(11, 4)),
1415 Cmd("git commit -am \"[Auto-roll] Bump up version to 3.11.6.0\n\n" 1373 Cmd("git commit -am \"[Auto-roll] Bump up version to 3.11.6.0\n\n"
1416 "TBR=author@chromium.org\"", ""), 1374 "TBR=author@chromium.org\"", ""),
1417 Cmd("git cl upload --send-mail --email \"author@chromium.org\" -f " 1375 Cmd("git cl upload --send-mail --email \"author@chromium.org\" -f "
1418 "--bypass-hooks", ""), 1376 "--bypass-hooks", ""),
1419 Cmd("git cl dcommit -f --bypass-hooks", ""), 1377 Cmd("git cl dcommit -f --bypass-hooks", ""),
1420 Cmd("git checkout -f bleeding_edge", ""), 1378 Cmd("git checkout -f bleeding_edge", ""),
1421 Cmd("git branch", "auto-bump-up-version\n* bleeding_edge"), 1379 Cmd("git branch", "auto-bump-up-version\n* bleeding_edge"),
1422 Cmd("git branch -D auto-bump-up-version", ""), 1380 Cmd("git branch -D auto-bump-up-version", ""),
1423 ]) 1381 ])
1424 1382
1425 self.ExpectReadURL([
1426 URL("https://v8-status.appspot.com/lkgr", "12345"),
1427 URL("https://v8-status.appspot.com/current?format=json",
1428 "{\"message\": \"Tree is open\"}"),
1429 ])
1430
1431 BumpUpVersion(TEST_CONFIG, self).Run(["-a", "author@chromium.org"]) 1383 BumpUpVersion(TEST_CONFIG, self).Run(["-a", "author@chromium.org"])
1432 1384
1433 def testAutoTag(self): 1385 def testAutoTag(self):
1434 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() 1386 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile()
1435 self.WriteFakeVersionFile() 1387 self.WriteFakeVersionFile()
1436 1388
1437 def ResetVersion(minor, build, patch=0): 1389 def ResetVersion(minor, build, patch=0):
1438 return lambda: self.WriteFakeVersionFile(minor=minor, 1390 return lambda: self.WriteFakeVersionFile(minor=minor,
1439 build=build, 1391 build=build,
1440 patch=patch) 1392 patch=patch)
1441 1393
1442 self.ExpectCmd([ 1394 self.Expect([
1443 Cmd("git status -s -uno", ""), 1395 Cmd("git status -s -uno", ""),
1444 Cmd("git status -s -b -uno", "## some_branch\n"), 1396 Cmd("git status -s -b -uno", "## some_branch\n"),
1445 Cmd("git svn fetch", ""), 1397 Cmd("git svn fetch", ""),
1446 Cmd("git branch", " branch1\n* branch2\n"), 1398 Cmd("git branch", " branch1\n* branch2\n"),
1447 Cmd("git checkout -f master", ""), 1399 Cmd("git checkout -f master", ""),
1448 Cmd("git svn rebase", ""), 1400 Cmd("git svn rebase", ""),
1449 Cmd("git checkout -b %s" % TEST_CONFIG[BRANCHNAME], "", 1401 Cmd("git checkout -b %s" % TEST_CONFIG[BRANCHNAME], "",
1450 cb=ResetVersion(4, 5)), 1402 cb=ResetVersion(4, 5)),
1451 Cmd("git branch -r", 1403 Cmd("git branch -r",
1452 "svn/tags/3.4.2\nsvn/tags/3.2.1.0\nsvn/branches/3.4"), 1404 "svn/tags/3.4.2\nsvn/tags/3.2.1.0\nsvn/branches/3.4"),
1453 Cmd(("git log --format=%H --grep=" 1405 Cmd(("git log --format=%H --grep="
1454 "\"\\[Auto\\-roll\\] Bump up version to\""), 1406 "\"\\[Auto\\-roll\\] Bump up version to\""),
1455 "hash125\nhash118\nhash111\nhash101"), 1407 "hash125\nhash118\nhash111\nhash101"),
1456 Cmd("git checkout -f hash125 -- %s" % TEST_CONFIG[VERSION_FILE], "", 1408 Cmd("git checkout -f hash125 -- %s" % TEST_CONFIG[VERSION_FILE], "",
1457 cb=ResetVersion(4, 4)), 1409 cb=ResetVersion(4, 4)),
1458 Cmd("git checkout -f HEAD -- %s" % TEST_CONFIG[VERSION_FILE], "", 1410 Cmd("git checkout -f HEAD -- %s" % TEST_CONFIG[VERSION_FILE], "",
1459 cb=ResetVersion(4, 5)), 1411 cb=ResetVersion(4, 5)),
1460 Cmd("git checkout -f hash118 -- %s" % TEST_CONFIG[VERSION_FILE], "", 1412 Cmd("git checkout -f hash118 -- %s" % TEST_CONFIG[VERSION_FILE], "",
1461 cb=ResetVersion(4, 3)), 1413 cb=ResetVersion(4, 3)),
1462 Cmd("git checkout -f HEAD -- %s" % TEST_CONFIG[VERSION_FILE], "", 1414 Cmd("git checkout -f HEAD -- %s" % TEST_CONFIG[VERSION_FILE], "",
1463 cb=ResetVersion(4, 5)), 1415 cb=ResetVersion(4, 5)),
1464 Cmd("git checkout -f hash111 -- %s" % TEST_CONFIG[VERSION_FILE], "", 1416 Cmd("git checkout -f hash111 -- %s" % TEST_CONFIG[VERSION_FILE], "",
1465 cb=ResetVersion(4, 2)), 1417 cb=ResetVersion(4, 2)),
1466 Cmd("git checkout -f HEAD -- %s" % TEST_CONFIG[VERSION_FILE], "", 1418 Cmd("git checkout -f HEAD -- %s" % TEST_CONFIG[VERSION_FILE], "",
1467 cb=ResetVersion(4, 5)), 1419 cb=ResetVersion(4, 5)),
1420 URL("https://v8-status.appspot.com/revisions?format=json",
1421 "[{\"revision\": \"126\", \"status\": true},"
1422 "{\"revision\": \"123\", \"status\": true},"
1423 "{\"revision\": \"112\", \"status\": true}]"),
1468 Cmd("git svn find-rev hash118", "118"), 1424 Cmd("git svn find-rev hash118", "118"),
1469 Cmd("git svn find-rev hash125", "125"), 1425 Cmd("git svn find-rev hash125", "125"),
1470 Cmd("git svn find-rev r123", "hash123"), 1426 Cmd("git svn find-rev r123", "hash123"),
1471 Cmd("git log -1 --format=%at hash123", "1"), 1427 Cmd("git log -1 --format=%at hash123", "1"),
1472 Cmd("git reset --hard hash123", ""), 1428 Cmd("git reset --hard hash123", ""),
1473 Cmd("git svn tag 3.4.3 -m \"Tagging version 3.4.3\"", ""), 1429 Cmd("git svn tag 3.4.3 -m \"Tagging version 3.4.3\"", ""),
1474 Cmd("git checkout -f some_branch", ""), 1430 Cmd("git checkout -f some_branch", ""),
1475 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), 1431 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], ""),
1476 ]) 1432 ])
1477 1433
1478 self.ExpectReadURL([
1479 URL("https://v8-status.appspot.com/revisions?format=json",
1480 "[{\"revision\": \"126\", \"status\": true},"
1481 "{\"revision\": \"123\", \"status\": true},"
1482 "{\"revision\": \"112\", \"status\": true}]"),
1483 ])
1484
1485 AutoTag(TEST_CONFIG, self).Run(["-a", "author@chromium.org"]) 1434 AutoTag(TEST_CONFIG, self).Run(["-a", "author@chromium.org"])
1486 1435
1487 # Test that we bail out if the last change was a version change. 1436 # Test that we bail out if the last change was a version change.
1488 def testBumpUpVersionBailout1(self): 1437 def testBumpUpVersionBailout1(self):
1489 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() 1438 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile()
1490 self._state["latest"] = "latest_hash" 1439 self._state["latest"] = "latest_hash"
1491 1440
1492 self.ExpectCmd([ 1441 self.Expect([
1493 Cmd("git diff --name-only latest_hash latest_hash^", 1442 Cmd("git diff --name-only latest_hash latest_hash^",
1494 TEST_CONFIG[VERSION_FILE]), 1443 TEST_CONFIG[VERSION_FILE]),
1495 ]) 1444 ])
1496 1445
1497 self.assertEquals(1, 1446 self.assertEquals(1,
1498 self.RunStep(BumpUpVersion, LastChangeBailout, ["--dry_run"])) 1447 self.RunStep(BumpUpVersion, LastChangeBailout, ["--dry_run"]))
1499 1448
1500 # Test that we bail out if the lkgr was a version change. 1449 # Test that we bail out if the lkgr was a version change.
1501 def testBumpUpVersionBailout2(self): 1450 def testBumpUpVersionBailout2(self):
1502 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() 1451 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile()
1503 self._state["lkgr"] = "lkgr_hash" 1452 self._state["lkgr"] = "lkgr_hash"
1504 1453
1505 self.ExpectCmd([ 1454 self.Expect([
1506 Cmd("git diff --name-only lkgr_hash lkgr_hash^", 1455 Cmd("git diff --name-only lkgr_hash lkgr_hash^",
1507 TEST_CONFIG[VERSION_FILE]), 1456 TEST_CONFIG[VERSION_FILE]),
1508 ]) 1457 ])
1509 1458
1510 self.assertEquals(1, 1459 self.assertEquals(1,
1511 self.RunStep(BumpUpVersion, LKGRVersionUpToDateBailout, ["--dry_run"])) 1460 self.RunStep(BumpUpVersion, LKGRVersionUpToDateBailout, ["--dry_run"]))
1512 1461
1513 # Test that we bail out if the last version is already newer than the lkgr's 1462 # Test that we bail out if the last version is already newer than the lkgr's
1514 # version. 1463 # version.
1515 def testBumpUpVersionBailout3(self): 1464 def testBumpUpVersionBailout3(self):
1516 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() 1465 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile()
1517 self._state["lkgr"] = "lkgr_hash" 1466 self._state["lkgr"] = "lkgr_hash"
1518 self._state["lkgr_version"] = "3.22.4.0" 1467 self._state["lkgr_version"] = "3.22.4.0"
1519 self._state["latest_version"] = "3.22.5.0" 1468 self._state["latest_version"] = "3.22.5.0"
1520 1469
1521 self.ExpectCmd([ 1470 self.Expect([
1522 Cmd("git diff --name-only lkgr_hash lkgr_hash^", ""), 1471 Cmd("git diff --name-only lkgr_hash lkgr_hash^", ""),
1523 ]) 1472 ])
1524 1473
1525 self.assertEquals(1, 1474 self.assertEquals(1,
1526 self.RunStep(BumpUpVersion, LKGRVersionUpToDateBailout, ["--dry_run"])) 1475 self.RunStep(BumpUpVersion, LKGRVersionUpToDateBailout, ["--dry_run"]))
1527 1476
1528 1477
1529 class SystemTest(unittest.TestCase): 1478 class SystemTest(unittest.TestCase):
1530 def testReload(self): 1479 def testReload(self):
1531 step = MakeStep(step_class=PrepareChangeLog, number=0, state={}, config={}, 1480 step = MakeStep(step_class=PrepareChangeLog, number=0, state={}, config={},
1532 side_effect_handler=DEFAULT_SIDE_EFFECT_HANDLER) 1481 side_effect_handler=DEFAULT_SIDE_EFFECT_HANDLER)
1533 body = step.Reload( 1482 body = step.Reload(
1534 """------------------------------------------------------------------------ 1483 """------------------------------------------------------------------------
1535 r17997 | machenbach@chromium.org | 2013-11-22 11:04:04 +0100 (...) | 6 lines 1484 r17997 | machenbach@chromium.org | 2013-11-22 11:04:04 +0100 (...) | 6 lines
1536 1485
1537 Prepare push to trunk. Now working on version 3.23.11. 1486 Prepare push to trunk. Now working on version 3.23.11.
1538 1487
1539 R=danno@chromium.org 1488 R=danno@chromium.org
1540 1489
1541 Review URL: https://codereview.chromium.org/83173002 1490 Review URL: https://codereview.chromium.org/83173002
1542 1491
1543 ------------------------------------------------------------------------""") 1492 ------------------------------------------------------------------------""")
1544 self.assertEquals( 1493 self.assertEquals(
1545 """Prepare push to trunk. Now working on version 3.23.11. 1494 """Prepare push to trunk. Now working on version 3.23.11.
1546 1495
1547 R=danno@chromium.org 1496 R=danno@chromium.org
1548 1497
1549 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) 1498 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698