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 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 % (self._name, self._index, len(self._recipe))) | 287 % (self._name, self._index, len(self._recipe))) |
288 | 288 |
289 | 289 |
290 class ScriptTest(unittest.TestCase): | 290 class ScriptTest(unittest.TestCase): |
291 def MakeEmptyTempFile(self): | 291 def MakeEmptyTempFile(self): |
292 handle, name = tempfile.mkstemp() | 292 handle, name = tempfile.mkstemp() |
293 os.close(handle) | 293 os.close(handle) |
294 self._tmp_files.append(name) | 294 self._tmp_files.append(name) |
295 return name | 295 return name |
296 | 296 |
297 def WriteFakeVersionFile(self): | 297 def WriteFakeVersionFile(self, build=4): |
298 with open(TEST_CONFIG[VERSION_FILE], "w") as f: | 298 with open(TEST_CONFIG[VERSION_FILE], "w") as f: |
299 f.write(" // Some line...\n") | 299 f.write(" // Some line...\n") |
300 f.write("\n") | 300 f.write("\n") |
301 f.write("#define MAJOR_VERSION 3\n") | 301 f.write("#define MAJOR_VERSION 3\n") |
302 f.write("#define MINOR_VERSION 22\n") | 302 f.write("#define MINOR_VERSION 22\n") |
303 f.write("#define BUILD_NUMBER 5\n") | 303 f.write("#define BUILD_NUMBER %s\n" % build) |
304 f.write("#define PATCH_LEVEL 0\n") | 304 f.write("#define PATCH_LEVEL 0\n") |
305 f.write(" // Some line...\n") | 305 f.write(" // Some line...\n") |
306 f.write("#define IS_CANDIDATE_VERSION 0\n") | 306 f.write("#define IS_CANDIDATE_VERSION 0\n") |
307 | 307 |
308 def MakeStep(self): | 308 def MakeStep(self): |
309 """Convenience wrapper.""" | 309 """Convenience wrapper.""" |
310 options = ScriptsBase(TEST_CONFIG, self, self._state).MakeOptions([]) | 310 options = ScriptsBase(TEST_CONFIG, self, self._state).MakeOptions([]) |
311 return MakeStep(step_class=Step, state=self._state, | 311 return MakeStep(step_class=Step, state=self._state, |
312 config=TEST_CONFIG, side_effect_handler=self, | 312 config=TEST_CONFIG, side_effect_handler=self, |
313 options=options) | 313 options=options) |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
433 self.assertRaises(Exception, self.MakeStep().PrepareBranch) | 433 self.assertRaises(Exception, self.MakeStep().PrepareBranch) |
434 self.assertEquals("some_branch", self._state["current_branch"]) | 434 self.assertEquals("some_branch", self._state["current_branch"]) |
435 | 435 |
436 def testInitialEnvironmentChecks(self): | 436 def testInitialEnvironmentChecks(self): |
437 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() | 437 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() |
438 os.environ["EDITOR"] = "vi" | 438 os.environ["EDITOR"] = "vi" |
439 self.MakeStep().InitialEnvironmentChecks() | 439 self.MakeStep().InitialEnvironmentChecks() |
440 | 440 |
441 def testReadAndPersistVersion(self): | 441 def testReadAndPersistVersion(self): |
442 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() | 442 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() |
443 self.WriteFakeVersionFile() | 443 self.WriteFakeVersionFile(build=5) |
444 step = self.MakeStep() | 444 step = self.MakeStep() |
445 step.ReadAndPersistVersion() | 445 step.ReadAndPersistVersion() |
446 self.assertEquals("3", step["major"]) | 446 self.assertEquals("3", step["major"]) |
447 self.assertEquals("22", step["minor"]) | 447 self.assertEquals("22", step["minor"]) |
448 self.assertEquals("5", step["build"]) | 448 self.assertEquals("5", step["build"]) |
449 self.assertEquals("0", step["patch"]) | 449 self.assertEquals("0", step["patch"]) |
450 | 450 |
451 def testRegex(self): | 451 def testRegex(self): |
452 self.assertEqual("(issue 321)", | 452 self.assertEqual("(issue 321)", |
453 re.sub(r"BUG=v8:(.*)$", r"(issue \1)", "BUG=v8:321")) | 453 re.sub(r"BUG=v8:(.*)$", r"(issue \1)", "BUG=v8:321")) |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 Git("log -1 --format=%an rev4", "author4@chromium.org"), | 492 Git("log -1 --format=%an rev4", "author4@chromium.org"), |
493 ]) | 493 ]) |
494 | 494 |
495 # The cl for rev4 on rietveld has an updated LOG flag. | 495 # The cl for rev4 on rietveld has an updated LOG flag. |
496 self.ExpectReadURL([ | 496 self.ExpectReadURL([ |
497 URL("https://codereview.chromium.org/9876543210/description", | 497 URL("https://codereview.chromium.org/9876543210/description", |
498 "Title\n\nBUG=456\nLOG=N\n\n"), | 498 "Title\n\nBUG=456\nLOG=N\n\n"), |
499 ]) | 499 ]) |
500 | 500 |
501 self._state["last_push_bleeding_edge"] = "1234" | 501 self._state["last_push_bleeding_edge"] = "1234" |
| 502 self._state["version"] = "3.22.5" |
502 self.RunStep(PushToTrunk, PrepareChangeLog) | 503 self.RunStep(PushToTrunk, PrepareChangeLog) |
503 | 504 |
504 actual_cl = FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE]) | 505 actual_cl = FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE]) |
505 | 506 |
506 expected_cl = """1999-07-31: Version 3.22.5 | 507 expected_cl = """1999-07-31: Version 3.22.5 |
507 | 508 |
508 Title text 1. | 509 Title text 1. |
509 | 510 |
510 Title text 3 (Chromium issue 321). | 511 Title text 3 (Chromium issue 321). |
511 | 512 |
(...skipping 11 matching lines...) Expand all Loading... |
523 # | 524 # |
524 # Title text 3 (Chromium issue 321). | 525 # Title text 3 (Chromium issue 321). |
525 # (author3@chromium.org) | 526 # (author3@chromium.org) |
526 # | 527 # |
527 # Title text 4 (Chromium issue 456). | 528 # Title text 4 (Chromium issue 456). |
528 # (author4@chromium.org) | 529 # (author4@chromium.org) |
529 # | 530 # |
530 #""" | 531 #""" |
531 | 532 |
532 self.assertEquals(expected_cl, actual_cl) | 533 self.assertEquals(expected_cl, actual_cl) |
533 self.assertEquals("3", self._state["major"]) | |
534 self.assertEquals("22", self._state["minor"]) | |
535 self.assertEquals("5", self._state["build"]) | |
536 self.assertEquals("0", self._state["patch"]) | |
537 | 534 |
538 def testEditChangeLog(self): | 535 def testEditChangeLog(self): |
539 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() | 536 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() |
540 TextToFile(" New \n\tLines \n", TEST_CONFIG[CHANGELOG_ENTRY_FILE]) | 537 TextToFile(" New \n\tLines \n", TEST_CONFIG[CHANGELOG_ENTRY_FILE]) |
541 os.environ["EDITOR"] = "vi" | 538 os.environ["EDITOR"] = "vi" |
542 | 539 |
543 self.ExpectReadline([ | 540 self.ExpectReadline([ |
544 RL(""), # Open editor. | 541 RL(""), # Open editor. |
545 ]) | 542 ]) |
546 | 543 |
547 self.RunStep(PushToTrunk, EditChangeLog) | 544 self.RunStep(PushToTrunk, EditChangeLog) |
548 | 545 |
549 self.assertEquals("New\n Lines", | 546 self.assertEquals("New\n Lines", |
550 FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE])) | 547 FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE])) |
551 | 548 |
552 def testIncrementVersion(self): | 549 def testIncrementVersion(self): |
553 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() | 550 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() |
554 self.WriteFakeVersionFile() | 551 self.WriteFakeVersionFile() |
555 self._state["build"] = "5" | 552 self._state["last_push_trunk"] = "hash1" |
| 553 |
| 554 self.ExpectGit([ |
| 555 Git("checkout -f hash1 -- %s" % TEST_CONFIG[VERSION_FILE], "") |
| 556 ]) |
556 | 557 |
557 self.ExpectReadline([ | 558 self.ExpectReadline([ |
558 RL("Y"), # Increment build number. | 559 RL("Y"), # Increment build number. |
559 ]) | 560 ]) |
560 | 561 |
561 self.RunStep(PushToTrunk, IncrementVersion) | 562 self.RunStep(PushToTrunk, IncrementVersion) |
562 | 563 |
563 self.assertEquals("3", self._state["new_major"]) | 564 self.assertEquals("3", self._state["new_major"]) |
564 self.assertEquals("22", self._state["new_minor"]) | 565 self.assertEquals("22", self._state["new_minor"]) |
565 self.assertEquals("6", self._state["new_build"]) | 566 self.assertEquals("5", self._state["new_build"]) |
566 self.assertEquals("0", self._state["new_patch"]) | 567 self.assertEquals("0", self._state["new_patch"]) |
567 | 568 |
568 def _TestSquashCommits(self, change_log, expected_msg): | 569 def _TestSquashCommits(self, change_log, expected_msg): |
569 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() | 570 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() |
570 with open(TEST_CONFIG[CHANGELOG_ENTRY_FILE], "w") as f: | 571 with open(TEST_CONFIG[CHANGELOG_ENTRY_FILE], "w") as f: |
571 f.write(change_log) | 572 f.write(change_log) |
572 | 573 |
573 self.ExpectGit([ | 574 self.ExpectGit([ |
574 Git("diff svn/trunk hash1", "patch content"), | 575 Git("diff svn/trunk hash1", "patch content"), |
575 Git("svn find-rev hash1", "123455\n"), | 576 Git("svn find-rev hash1", "123455\n"), |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
612 Performance and stability improvements on all platforms.""" | 613 Performance and stability improvements on all platforms.""" |
613 self._TestSquashCommits(change_log, commit_msg) | 614 self._TestSquashCommits(change_log, commit_msg) |
614 | 615 |
615 def testSquashCommitsQuotationMarks(self): | 616 def testSquashCommitsQuotationMarks(self): |
616 change_log = """Line with "quotation marks".\n""" | 617 change_log = """Line with "quotation marks".\n""" |
617 commit_msg = """Line with "quotation marks".""" | 618 commit_msg = """Line with "quotation marks".""" |
618 self._TestSquashCommits(change_log, commit_msg) | 619 self._TestSquashCommits(change_log, commit_msg) |
619 | 620 |
620 def _PushToTrunk(self, force=False, manual=False): | 621 def _PushToTrunk(self, force=False, manual=False): |
621 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() | 622 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() |
| 623 |
| 624 # The version file on bleeding edge has build level 5, while the version |
| 625 # file from trunk has build level 4. |
622 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() | 626 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() |
623 self.WriteFakeVersionFile() | 627 self.WriteFakeVersionFile(build=5) |
| 628 |
624 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() | 629 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() |
625 TEST_CONFIG[CHANGELOG_FILE] = self.MakeEmptyTempFile() | 630 TEST_CONFIG[CHANGELOG_FILE] = self.MakeEmptyTempFile() |
626 if not os.path.exists(TEST_CONFIG[CHROMIUM]): | 631 if not os.path.exists(TEST_CONFIG[CHROMIUM]): |
627 os.makedirs(TEST_CONFIG[CHROMIUM]) | 632 os.makedirs(TEST_CONFIG[CHROMIUM]) |
628 bleeding_edge_change_log = "2014-03-17: Sentinel\n" | 633 bleeding_edge_change_log = "2014-03-17: Sentinel\n" |
629 TextToFile(bleeding_edge_change_log, TEST_CONFIG[CHANGELOG_FILE]) | 634 TextToFile(bleeding_edge_change_log, TEST_CONFIG[CHANGELOG_FILE]) |
630 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line", | 635 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line", |
631 TEST_CONFIG[DEPS_FILE]) | 636 TEST_CONFIG[DEPS_FILE]) |
632 os.environ["EDITOR"] = "vi" | 637 os.environ["EDITOR"] = "vi" |
633 | 638 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
691 Git("branch", " branch1\n* branch2\n"), | 696 Git("branch", " branch1\n* branch2\n"), |
692 Git("branch", " branch1\n* branch2\n"), | 697 Git("branch", " branch1\n* branch2\n"), |
693 Git("checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], ""), | 698 Git("checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], ""), |
694 Git(("log -1 --format=%H --grep=" | 699 Git(("log -1 --format=%H --grep=" |
695 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" " | 700 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" " |
696 "svn/trunk"), "hash2\n"), | 701 "svn/trunk"), "hash2\n"), |
697 Git("log -1 hash2", "Log message\n"), | 702 Git("log -1 hash2", "Log message\n"), |
698 Git("log -1 --format=%s hash2", | 703 Git("log -1 --format=%s hash2", |
699 "Version 3.4.5 (based on bleeding_edge revision r1234)\n"), | 704 "Version 3.4.5 (based on bleeding_edge revision r1234)\n"), |
700 Git("svn find-rev r1234", "hash3\n"), | 705 Git("svn find-rev r1234", "hash3\n"), |
| 706 Git("checkout -f hash2 -- %s" % TEST_CONFIG[VERSION_FILE], "", |
| 707 cb=self.WriteFakeVersionFile), |
701 Git("log --format=%H hash3..HEAD", "rev1\n"), | 708 Git("log --format=%H hash3..HEAD", "rev1\n"), |
702 Git("log -1 --format=%s rev1", "Log text 1.\n"), | 709 Git("log -1 --format=%s rev1", "Log text 1.\n"), |
703 Git("log -1 --format=%B rev1", "Text\nLOG=YES\nBUG=v8:321\nText\n"), | 710 Git("log -1 --format=%B rev1", "Text\nLOG=YES\nBUG=v8:321\nText\n"), |
704 Git("log -1 --format=%an rev1", "author1@chromium.org\n"), | 711 Git("log -1 --format=%an rev1", "author1@chromium.org\n"), |
705 Git(("commit -am \"Prepare push to trunk. " | 712 Git(("commit -am \"Prepare push to trunk. " |
706 "Now working on version 3.22.6.%s\"" % review_suffix), | 713 "Now working on version 3.22.6.%s\"" % review_suffix), |
707 " 2 files changed\n", | 714 " 2 files changed\n", |
708 cb=CheckPreparePush), | 715 cb=CheckPreparePush), |
709 Git(("cl upload --send-mail --email \"author@chromium.org\" " | 716 Git(("cl upload --send-mail --email \"author@chromium.org\" " |
710 "-r \"reviewer@chromium.org\"%s" % force_flag), | 717 "-r \"reviewer@chromium.org\"%s" % force_flag), |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
879 ]) | 886 ]) |
880 | 887 |
881 def RunAutoRoll(): | 888 def RunAutoRoll(): |
882 auto_roll.AutoRoll(TEST_CONFIG, self).Run(AUTO_ROLL_ARGS) | 889 auto_roll.AutoRoll(TEST_CONFIG, self).Run(AUTO_ROLL_ARGS) |
883 self.assertRaises(Exception, RunAutoRoll) | 890 self.assertRaises(Exception, RunAutoRoll) |
884 | 891 |
885 def testMergeToBranch(self): | 892 def testMergeToBranch(self): |
886 TEST_CONFIG[ALREADY_MERGING_SENTINEL_FILE] = self.MakeEmptyTempFile() | 893 TEST_CONFIG[ALREADY_MERGING_SENTINEL_FILE] = self.MakeEmptyTempFile() |
887 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() | 894 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() |
888 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() | 895 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() |
889 self.WriteFakeVersionFile() | 896 self.WriteFakeVersionFile(build=5) |
890 os.environ["EDITOR"] = "vi" | 897 os.environ["EDITOR"] = "vi" |
891 extra_patch = self.MakeEmptyTempFile() | 898 extra_patch = self.MakeEmptyTempFile() |
892 | 899 |
893 def VerifyPatch(patch): | 900 def VerifyPatch(patch): |
894 return lambda: self.assertEquals(patch, | 901 return lambda: self.assertEquals(patch, |
895 FileToText(TEST_CONFIG[TEMPORARY_PATCH_FILE])) | 902 FileToText(TEST_CONFIG[TEMPORARY_PATCH_FILE])) |
896 | 903 |
897 msg = """Merged r12345, r23456, r34567, r45678, r56789 into trunk branch. | 904 msg = """Merged r12345, r23456, r34567, r45678, r56789 into trunk branch. |
898 | 905 |
899 Title4 | 906 Title4 |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1025 | 1032 |
1026 Review URL: https://codereview.chromium.org/83173002 | 1033 Review URL: https://codereview.chromium.org/83173002 |
1027 | 1034 |
1028 ------------------------------------------------------------------------""") | 1035 ------------------------------------------------------------------------""") |
1029 self.assertEquals( | 1036 self.assertEquals( |
1030 """Prepare push to trunk. Now working on version 3.23.11. | 1037 """Prepare push to trunk. Now working on version 3.23.11. |
1031 | 1038 |
1032 R=danno@chromium.org | 1039 R=danno@chromium.org |
1033 | 1040 |
1034 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) | 1041 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) |
OLD | NEW |