OLD | NEW |
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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 MakeComment("Line 1\n Line 2")) | 61 MakeComment("Line 1\n Line 2")) |
62 | 62 |
63 def testStripComments(self): | 63 def testStripComments(self): |
64 self.assertEquals(" Line 1\n Line 3\n", | 64 self.assertEquals(" Line 1\n Line 3\n", |
65 StripComments(" Line 1\n# Line 2\n Line 3\n#\n")) | 65 StripComments(" Line 1\n# Line 2\n Line 3\n#\n")) |
66 self.assertEquals("\nLine 2 ### Test\n #", | 66 self.assertEquals("\nLine 2 ### Test\n #", |
67 StripComments("###\n# \n\n# Line 1\nLine 2 ### Test\n #")) | 67 StripComments("###\n# \n\n# Line 1\nLine 2 ### Test\n #")) |
68 | 68 |
69 def testMakeChangeLogBodySimple(self): | 69 def testMakeChangeLogBodySimple(self): |
70 commits = [ | 70 commits = [ |
71 [" Title text 1", | 71 ["Title text 1", |
72 "Title text 1\n\nBUG=\n", | 72 "Title text 1\n\nBUG=\n", |
73 " author1@chromium.org"], | 73 "author1@chromium.org"], |
74 [" Title text 2", | 74 ["Title text 2", |
75 "Title text 2\n\nBUG=1234\n", | 75 "Title text 2\n\nBUG=1234\n", |
76 " author2@chromium.org"], | 76 "author2@chromium.org"], |
77 ] | 77 ] |
78 self.assertEquals(" Title text 1\n" | 78 self.assertEquals(" Title text 1\n" |
79 " author1@chromium.org\n\n" | 79 " (author1@chromium.org)\n\n" |
80 " Title text 2\n" | 80 " Title text 2\n" |
81 " (Chromium issue 1234)\n" | 81 " (Chromium issue 1234)\n" |
82 " author2@chromium.org\n\n", | 82 " (author2@chromium.org)\n\n", |
83 MakeChangeLogBody(commits)) | 83 MakeChangeLogBody(commits)) |
84 | 84 |
85 def testMakeChangeLogBodyEmpty(self): | 85 def testMakeChangeLogBodyEmpty(self): |
86 self.assertEquals("", MakeChangeLogBody([])) | 86 self.assertEquals("", MakeChangeLogBody([])) |
87 | 87 |
88 def testMakeChangeLogBodyAutoFormat(self): | 88 def testMakeChangeLogBodyAutoFormat(self): |
89 commits = [ | 89 commits = [ |
90 [" Title text 1", | 90 ["Title text 1", |
91 "Title text 1\nLOG=y\nBUG=\n", | 91 "Title text 1\nLOG=y\nBUG=\n", |
92 " author1@chromium.org"], | 92 "author1@chromium.org"], |
93 [" Title text 2", | 93 ["Title text 2", |
94 "Title text 2\n\nBUG=1234\n", | 94 "Title text 2\n\nBUG=1234\n", |
95 " author2@chromium.org"], | 95 "author2@chromium.org"], |
96 [" Title text 3", | 96 ["Title text 3", |
97 "Title text 3\n\nBUG=1234\nLOG = Yes\n", | 97 "Title text 3\n\nBUG=1234\nLOG = Yes\n", |
98 " author3@chromium.org"], | 98 "author3@chromium.org"], |
99 [" Title text 3", | 99 ["Title text 3", |
100 "Title text 4\n\nBUG=1234\nLOG=\n", | 100 "Title text 4\n\nBUG=1234\nLOG=\n", |
101 " author4@chromium.org"], | 101 "author4@chromium.org"], |
102 ] | 102 ] |
103 self.assertEquals(" Title text 1\n\n" | 103 self.assertEquals(" Title text 1\n\n" |
104 " Title text 3\n" | 104 " Title text 3\n" |
105 " (Chromium issue 1234)\n\n", | 105 " (Chromium issue 1234)\n\n", |
106 MakeChangeLogBody(commits, True)) | 106 MakeChangeLogBody(commits, True)) |
107 | 107 |
108 def testMakeChangeLogBugReferenceEmpty(self): | 108 def testMakeChangeLogBugReferenceEmpty(self): |
109 self.assertEquals("", MakeChangeLogBugReference("")) | 109 self.assertEquals("", MakeChangeLogBugReference("")) |
110 self.assertEquals("", MakeChangeLogBugReference("LOG=")) | 110 self.assertEquals("", MakeChangeLogBugReference("LOG=")) |
111 self.assertEquals("", MakeChangeLogBugReference(" BUG =")) | 111 self.assertEquals("", MakeChangeLogBugReference(" BUG =")) |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 f.write("\n") | 238 f.write("\n") |
239 f.write("#define MAJOR_VERSION 3\n") | 239 f.write("#define MAJOR_VERSION 3\n") |
240 f.write("#define MINOR_VERSION 22\n") | 240 f.write("#define MINOR_VERSION 22\n") |
241 f.write("#define BUILD_NUMBER 5\n") | 241 f.write("#define BUILD_NUMBER 5\n") |
242 f.write("#define PATCH_LEVEL 0\n") | 242 f.write("#define PATCH_LEVEL 0\n") |
243 f.write(" // Some line...\n") | 243 f.write(" // Some line...\n") |
244 f.write("#define IS_CANDIDATE_VERSION 0\n") | 244 f.write("#define IS_CANDIDATE_VERSION 0\n") |
245 return name | 245 return name |
246 | 246 |
247 def MakeStep(self, step_class=Step, state=None): | 247 def MakeStep(self, step_class=Step, state=None): |
248 state = state or {} | 248 """Convenience wrapper.""" |
249 step = step_class() | 249 return MakeStep(step_class=step_class, number=0, state=state, |
250 step.SetConfig(TEST_CONFIG) | 250 config=TEST_CONFIG, options=None, side_effect_handler=self) |
251 step.SetState(state) | |
252 step.SetNumber(0) | |
253 step.SetSideEffectHandler(self) | |
254 return step | |
255 | 251 |
256 def GitMock(self, cmd, args="", pipe=True): | 252 def GitMock(self, cmd, args="", pipe=True): |
257 return self._git_mock.Call(args) | 253 return self._git_mock.Call(args) |
258 | 254 |
259 def LogMock(self, cmd, args=""): | 255 def LogMock(self, cmd, args=""): |
260 print "Log: %s %s" % (cmd, args) | 256 print "Log: %s %s" % (cmd, args) |
261 | 257 |
262 MOCKS = { | 258 MOCKS = { |
263 "git": GitMock, | 259 "git": GitMock, |
264 "vi": LogMock, | 260 "vi": LogMock, |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
395 MSub(r"(?<=#define BUILD_NUMBER)(?P<space>\s+)\d*$", | 391 MSub(r"(?<=#define BUILD_NUMBER)(?P<space>\s+)\d*$", |
396 r"\g<space>3", | 392 r"\g<space>3", |
397 "//\n#define BUILD_NUMBER 321\n")) | 393 "//\n#define BUILD_NUMBER 321\n")) |
398 | 394 |
399 def testPrepareChangeLog(self): | 395 def testPrepareChangeLog(self): |
400 TEST_CONFIG[VERSION_FILE] = self.MakeTempVersionFile() | 396 TEST_CONFIG[VERSION_FILE] = self.MakeTempVersionFile() |
401 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() | 397 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() |
402 | 398 |
403 self.ExpectGit([ | 399 self.ExpectGit([ |
404 ["log 1234..HEAD --format=%H", "rev1\nrev2\nrev3"], | 400 ["log 1234..HEAD --format=%H", "rev1\nrev2\nrev3"], |
405 ["log -1 rev1 --format=\"%w(80,8,8)%s\"", " Title text 1"], | 401 ["log -1 rev1 --format=\"%s\"", "Title text 1"], |
406 ["log -1 rev1 --format=\"%B\"", "Title\n\nBUG=\nLOG=y\n"], | 402 ["log -1 rev1 --format=\"%B\"", "Title\n\nBUG=\nLOG=y\n"], |
407 ["log -1 rev1 --format=\"%w(80,8,8)(%an)\"", | 403 ["log -1 rev1 --format=\"%an\"", "author1@chromium.org"], |
408 " author1@chromium.org"], | 404 ["log -1 rev2 --format=\"%s\"", "Title text 2"], |
409 ["log -1 rev2 --format=\"%w(80,8,8)%s\"", " Title text 2"], | |
410 ["log -1 rev2 --format=\"%B\"", "Title\n\nBUG=123\nLOG= \n"], | 405 ["log -1 rev2 --format=\"%B\"", "Title\n\nBUG=123\nLOG= \n"], |
411 ["log -1 rev2 --format=\"%w(80,8,8)(%an)\"", | 406 ["log -1 rev2 --format=\"%an\"", "author2@chromium.org"], |
412 " author2@chromium.org"], | 407 ["log -1 rev3 --format=\"%s\"", "Title text 3"], |
413 ["log -1 rev3 --format=\"%w(80,8,8)%s\"", " Title text 3"], | |
414 ["log -1 rev3 --format=\"%B\"", "Title\n\nBUG=321\nLOG=true\n"], | 408 ["log -1 rev3 --format=\"%B\"", "Title\n\nBUG=321\nLOG=true\n"], |
415 ["log -1 rev3 --format=\"%w(80,8,8)(%an)\"", | 409 ["log -1 rev3 --format=\"%an\"", "author3@chromium.org"], |
416 " author3@chromium.org"], | |
417 ]) | 410 ]) |
418 | 411 |
419 self.MakeStep().Persist("last_push", "1234") | 412 self.MakeStep().Persist("last_push", "1234") |
420 self.MakeStep(PrepareChangeLog).Run() | 413 self.MakeStep(PrepareChangeLog).Run() |
421 | 414 |
422 actual_cl = FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE]) | 415 actual_cl = FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE]) |
423 | 416 |
424 # TODO(machenbach): Mock out call to date() in order to make a fixed | 417 # TODO(machenbach): Mock out call to date() in order to make a fixed |
425 # comparison here instead of a regexp match. | 418 # comparison here instead of a regexp match. |
426 expected_cl = """\\d+\\-\\d+\\-\\d+: Version 3\\.22\\.5 | 419 expected_cl = """\\d+\\-\\d+\\-\\d+: Version 3\\.22\\.5 |
427 | 420 |
428 Title text 1 | 421 Title text 1 |
429 | 422 |
430 Title text 3 | 423 Title text 3 |
431 \\(Chromium issue 321\\) | 424 \\(Chromium issue 321\\) |
432 | 425 |
433 Performance and stability improvements on all platforms\\. | 426 Performance and stability improvements on all platforms\\. |
434 # | 427 # |
435 # The change log above is auto-generated\\. Please review if all relevant | 428 # The change log above is auto-generated\\. Please review if all relevant |
436 # commit messages from the list below are included\\. | 429 # commit messages from the list below are included\\. |
437 # All lines starting with # will be stripped\\. | 430 # All lines starting with # will be stripped\\. |
438 # | 431 # |
439 # Title text 1 | 432 # Title text 1 |
440 # author1@chromium\\.org | 433 # \\(author1@chromium\\.org\\) |
441 # | 434 # |
442 # Title text 2 | 435 # Title text 2 |
443 # \\(Chromium issue 123\\) | 436 # \\(Chromium issue 123\\) |
444 # author2@chromium\\.org | 437 # \\(author2@chromium\\.org\\) |
445 # | 438 # |
446 # Title text 3 | 439 # Title text 3 |
447 # \\(Chromium issue 321\\) | 440 # \\(Chromium issue 321\\) |
448 # author3@chromium\\.org | 441 # \\(author3@chromium\\.org\\) |
449 # | 442 # |
450 #""" | 443 #""" |
451 | 444 |
452 self.assertTrue(re.match(expected_cl, actual_cl)) | 445 self.assertTrue(re.match(expected_cl, actual_cl)) |
453 self.assertEquals("3", self.MakeStep().Restore("major")) | 446 self.assertEquals("3", self.MakeStep().Restore("major")) |
454 self.assertEquals("22", self.MakeStep().Restore("minor")) | 447 self.assertEquals("22", self.MakeStep().Restore("minor")) |
455 self.assertEquals("5", self.MakeStep().Restore("build")) | 448 self.assertEquals("5", self.MakeStep().Restore("build")) |
456 self.assertEquals("0", self.MakeStep().Restore("patch")) | 449 self.assertEquals("0", self.MakeStep().Restore("patch")) |
457 | 450 |
458 def testEditChangeLog(self): | 451 def testEditChangeLog(self): |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
541 TextToFile("1999-04-05: Version 3.22.4", TEST_CONFIG[CHANGELOG_FILE]) | 534 TextToFile("1999-04-05: Version 3.22.4", TEST_CONFIG[CHANGELOG_FILE]) |
542 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line", | 535 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line", |
543 TEST_CONFIG[DEPS_FILE]) | 536 TEST_CONFIG[DEPS_FILE]) |
544 os.environ["EDITOR"] = "vi" | 537 os.environ["EDITOR"] = "vi" |
545 | 538 |
546 def CheckPreparePush(): | 539 def CheckPreparePush(): |
547 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE]) | 540 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE]) |
548 self.assertTrue(re.search(r"Version 3.22.5", cl)) | 541 self.assertTrue(re.search(r"Version 3.22.5", cl)) |
549 self.assertTrue(re.search(r" Log text 1", cl)) | 542 self.assertTrue(re.search(r" Log text 1", cl)) |
550 self.assertTrue(re.search(r" \(issue 321\)", cl)) | 543 self.assertTrue(re.search(r" \(issue 321\)", cl)) |
551 self.assertFalse(re.search(r" author1@chromium\.org", cl)) | 544 self.assertFalse(re.search(r" \(author1@chromium\.org\)", cl)) |
552 | 545 |
553 # Make sure all comments got stripped. | 546 # Make sure all comments got stripped. |
554 self.assertFalse(re.search(r"^#", cl, flags=re.M)) | 547 self.assertFalse(re.search(r"^#", cl, flags=re.M)) |
555 | 548 |
556 version = FileToText(TEST_CONFIG[VERSION_FILE]) | 549 version = FileToText(TEST_CONFIG[VERSION_FILE]) |
557 self.assertTrue(re.search(r"#define BUILD_NUMBER\s+6", version)) | 550 self.assertTrue(re.search(r"#define BUILD_NUMBER\s+6", version)) |
558 | 551 |
559 def CheckUpload(): | 552 def CheckUpload(): |
560 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE]) | 553 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE]) |
561 | 554 |
(...skipping 14 matching lines...) Expand all Loading... |
576 ["status -s -b -uno", "## some_branch\n"], | 569 ["status -s -b -uno", "## some_branch\n"], |
577 ["svn fetch", ""], | 570 ["svn fetch", ""], |
578 ["branch", " branch1\n* branch2\n"], | 571 ["branch", " branch1\n* branch2\n"], |
579 ["checkout -b %s" % TEST_CONFIG[TEMP_BRANCH], ""], | 572 ["checkout -b %s" % TEST_CONFIG[TEMP_BRANCH], ""], |
580 ["branch", " branch1\n* branch2\n"], | 573 ["branch", " branch1\n* branch2\n"], |
581 ["branch", " branch1\n* branch2\n"], | 574 ["branch", " branch1\n* branch2\n"], |
582 ["checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], ""], | 575 ["checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], ""], |
583 ["log -1 --format=%H ChangeLog", "1234\n"], | 576 ["log -1 --format=%H ChangeLog", "1234\n"], |
584 ["log -1 1234", "Last push ouput\n"], | 577 ["log -1 1234", "Last push ouput\n"], |
585 ["log 1234..HEAD --format=%H", "rev1\n"], | 578 ["log 1234..HEAD --format=%H", "rev1\n"], |
586 ["log -1 rev1 --format=\"%w(80,8,8)%s\"", " Log text 1.\n"], | 579 ["log -1 rev1 --format=\"%s\"", "Log text 1.\n"], |
587 ["log -1 rev1 --format=\"%B\"", "Text\nLOG=YES\nBUG=v8:321\nText\n"], | 580 ["log -1 rev1 --format=\"%B\"", "Text\nLOG=YES\nBUG=v8:321\nText\n"], |
588 ["log -1 rev1 --format=\"%w(80,8,8)(%an)\"", | 581 ["log -1 rev1 --format=\"%an\"", "author1@chromium.org\n"], |
589 " author1@chromium.org\n"], | |
590 [("commit -a -m \"Prepare push to trunk. " | 582 [("commit -a -m \"Prepare push to trunk. " |
591 "Now working on version 3.22.6.\""), | 583 "Now working on version 3.22.6.\""), |
592 " 2 files changed\n", | 584 " 2 files changed\n", |
593 CheckPreparePush], | 585 CheckPreparePush], |
594 ["cl upload -r \"reviewer@chromium.org\" --send-mail%s" % force_flag, | 586 ["cl upload -r \"reviewer@chromium.org\" --send-mail%s" % force_flag, |
595 "done\n"], | 587 "done\n"], |
596 ["cl dcommit -f", "Closing issue\n"], | 588 ["cl dcommit -f", "Closing issue\n"], |
597 ["svn fetch", "fetch result\n"], | 589 ["svn fetch", "fetch result\n"], |
598 ["checkout svn/bleeding_edge", ""], | 590 ["checkout svn/bleeding_edge", ""], |
599 [("log -1 --format=%H --grep=\"Prepare push to trunk. " | 591 [("log -1 --format=%H --grep=\"Prepare push to trunk. " |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
687 class Options( object ): | 679 class Options( object ): |
688 pass | 680 pass |
689 | 681 |
690 options = Options() | 682 options = Options() |
691 options.s = 0 | 683 options.s = 0 |
692 | 684 |
693 auto_roll.RunAutoRoll(TEST_CONFIG, options, self) | 685 auto_roll.RunAutoRoll(TEST_CONFIG, options, self) |
694 | 686 |
695 self.assertEquals("100", self.MakeStep().Restore("lkgr")) | 687 self.assertEquals("100", self.MakeStep().Restore("lkgr")) |
696 self.assertEquals("101", self.MakeStep().Restore("latest")) | 688 self.assertEquals("101", self.MakeStep().Restore("latest")) |
OLD | NEW |