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

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

Issue 78683002: Let ChangeLog get auto-generated in push-to-trunk script. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Review Created 7 years, 1 month 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 | « tools/push-to-trunk/push_to_trunk.py ('k') | 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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 CHANGELOG_FILE: None, 46 CHANGELOG_FILE: None,
47 CHANGELOG_ENTRY_FILE: "/tmp/test-v8-push-to-trunk-tempfile-changelog-entry", 47 CHANGELOG_ENTRY_FILE: "/tmp/test-v8-push-to-trunk-tempfile-changelog-entry",
48 PATCH_FILE: "/tmp/test-v8-push-to-trunk-tempfile-patch", 48 PATCH_FILE: "/tmp/test-v8-push-to-trunk-tempfile-patch",
49 COMMITMSG_FILE: "/tmp/test-v8-push-to-trunk-tempfile-commitmsg", 49 COMMITMSG_FILE: "/tmp/test-v8-push-to-trunk-tempfile-commitmsg",
50 CHROMIUM: "/tmp/test-v8-push-to-trunk-tempfile-chromium", 50 CHROMIUM: "/tmp/test-v8-push-to-trunk-tempfile-chromium",
51 DEPS_FILE: "/tmp/test-v8-push-to-trunk-tempfile-chromium/DEPS", 51 DEPS_FILE: "/tmp/test-v8-push-to-trunk-tempfile-chromium/DEPS",
52 } 52 }
53 53
54 54
55 class ToplevelTest(unittest.TestCase): 55 class ToplevelTest(unittest.TestCase):
56 def testMakeComment(self):
57 self.assertEquals("# Line 1\n# Line 2\n#",
58 MakeComment(" Line 1\n Line 2\n"))
59 self.assertEquals("#Line 1\n#Line 2",
60 MakeComment("Line 1\n Line 2"))
61
62 def testStripComments(self):
63 self.assertEquals(" Line 1\n Line 3\n",
64 StripComments(" Line 1\n# Line 2\n Line 3\n#\n"))
65 self.assertEquals("\nLine 2 ### Test\n #",
66 StripComments("###\n# \n\n# Line 1\nLine 2 ### Test\n #"))
67
56 def testMakeChangeLogBodySimple(self): 68 def testMakeChangeLogBodySimple(self):
57 commits = lambda: [ 69 commits = [
58 [" Title text 1", 70 [" Title text 1",
59 "Title text 1\n\nBUG=\n", 71 "Title text 1\n\nBUG=\n",
60 " author1@chromium.org"], 72 " author1@chromium.org"],
61 [" Title text 2", 73 [" Title text 2",
62 "Title text 2\n\nBUG=1234\n", 74 "Title text 2\n\nBUG=1234\n",
63 " author2@chromium.org"], 75 " author2@chromium.org"],
64 ] 76 ]
65 self.assertEquals(" Title text 1\n" 77 self.assertEquals(" Title text 1\n"
66 " author1@chromium.org\n\n" 78 " author1@chromium.org\n\n"
67 " Title text 2\n" 79 " Title text 2\n"
68 " (Chromium issue 1234)\n" 80 " (Chromium issue 1234)\n"
69 " author2@chromium.org\n\n", 81 " author2@chromium.org\n\n",
70 MakeChangeLogBody(commits)) 82 MakeChangeLogBody(commits))
71 83
72 def testMakeChangeLogBodyEmpty(self): 84 def testMakeChangeLogBodyEmpty(self):
73 commits = lambda: [] 85 self.assertEquals("", MakeChangeLogBody([]))
74 self.assertEquals("", MakeChangeLogBody(commits)) 86
87 def testMakeChangeLogBodyAutoFormat(self):
88 commits = [
89 [" Title text 1",
90 "Title text 1\nLOG=y\nBUG=\n",
91 " author1@chromium.org"],
92 [" Title text 2",
93 "Title text 2\n\nBUG=1234\n",
94 " author2@chromium.org"],
95 [" Title text 3",
96 "Title text 3\n\nBUG=1234\nLOG = Yes\n",
97 " author3@chromium.org"],
98 [" Title text 3",
99 "Title text 4\n\nBUG=1234\nLOG=\n",
100 " author4@chromium.org"],
101 ]
102 self.assertEquals(" Title text 1\n\n"
103 " Title text 3\n"
104 " (Chromium issue 1234)\n\n",
105 MakeChangeLogBody(commits, True))
75 106
76 def testMakeChangeLogBugReferenceEmpty(self): 107 def testMakeChangeLogBugReferenceEmpty(self):
77 self.assertEquals("", MakeChangeLogBugReference("")) 108 self.assertEquals("", MakeChangeLogBugReference(""))
78 self.assertEquals("", MakeChangeLogBugReference("LOG=")) 109 self.assertEquals("", MakeChangeLogBugReference("LOG="))
79 self.assertEquals("", MakeChangeLogBugReference(" BUG =")) 110 self.assertEquals("", MakeChangeLogBugReference(" BUG ="))
80 self.assertEquals("", MakeChangeLogBugReference("BUG=none\t")) 111 self.assertEquals("", MakeChangeLogBugReference("BUG=none\t"))
81 112
82 def testMakeChangeLogBugReferenceSimple(self): 113 def testMakeChangeLogBugReferenceSimple(self):
83 self.assertEquals(" (issue 987654)\n", 114 self.assertEquals(" (issue 987654)\n",
84 MakeChangeLogBugReference("BUG = v8:987654")) 115 MakeChangeLogBugReference("BUG = v8:987654"))
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 self.assertEqual("//\n#define BUILD_NUMBER 3\n", 351 self.assertEqual("//\n#define BUILD_NUMBER 3\n",
321 MSub(r"(?<=#define BUILD_NUMBER)(?P<space>\s+)\d*$", 352 MSub(r"(?<=#define BUILD_NUMBER)(?P<space>\s+)\d*$",
322 r"\g<space>3", 353 r"\g<space>3",
323 "//\n#define BUILD_NUMBER 321\n")) 354 "//\n#define BUILD_NUMBER 321\n"))
324 355
325 def testPrepareChangeLog(self): 356 def testPrepareChangeLog(self):
326 TEST_CONFIG[VERSION_FILE] = self.MakeTempVersionFile() 357 TEST_CONFIG[VERSION_FILE] = self.MakeTempVersionFile()
327 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() 358 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile()
328 359
329 self._git_recipe = [ 360 self._git_recipe = [
330 ["log 1234..HEAD --format=%H", "rev1\nrev2"], 361 ["log 1234..HEAD --format=%H", "rev1\nrev2\nrev3"],
331 ["log -1 rev1 --format=\"%w(80,8,8)%s\"", " Title text 1"], 362 ["log -1 rev1 --format=\"%w(80,8,8)%s\"", " Title text 1"],
332 ["log -1 rev1 --format=\"%B\"", "Title\n\nBUG=\n"], 363 ["log -1 rev1 --format=\"%B\"", "Title\n\nBUG=\nLOG=y\n"],
333 ["log -1 rev1 --format=\"%w(80,8,8)(%an)\"", 364 ["log -1 rev1 --format=\"%w(80,8,8)(%an)\"",
334 " author1@chromium.org"], 365 " author1@chromium.org"],
335 ["log -1 rev2 --format=\"%w(80,8,8)%s\"", " Title text 2"], 366 ["log -1 rev2 --format=\"%w(80,8,8)%s\"", " Title text 2"],
336 ["log -1 rev2 --format=\"%B\"", "Title\n\nBUG=321\n"], 367 ["log -1 rev2 --format=\"%B\"", "Title\n\nBUG=123\nLOG= \n"],
337 ["log -1 rev2 --format=\"%w(80,8,8)(%an)\"", 368 ["log -1 rev2 --format=\"%w(80,8,8)(%an)\"",
338 " author2@chromium.org"], 369 " author2@chromium.org"],
370 ["log -1 rev3 --format=\"%w(80,8,8)%s\"", " Title text 3"],
371 ["log -1 rev3 --format=\"%B\"", "Title\n\nBUG=321\nLOG=true\n"],
372 ["log -1 rev3 --format=\"%w(80,8,8)(%an)\"",
373 " author3@chromium.org"],
339 ] 374 ]
340 375
341 self.MakeStep().Persist("last_push", "1234") 376 self.MakeStep().Persist("last_push", "1234")
342 self.MakeStep(PrepareChangeLog).Run() 377 self.MakeStep(PrepareChangeLog).Run()
343 378
344 cl = FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE]) 379 actual_cl = FileToText(TEST_CONFIG[CHANGELOG_ENTRY_FILE])
345 self.assertTrue(re.search(r"\d+\-\d+\-\d+: Version 3\.22\.5", cl)) 380
346 self.assertTrue(re.search(r" Title text 1", cl)) 381 # TODO(machenbach): Mock out call to date() in order to make a fixed
347 self.assertTrue(re.search(r" Title text 2", cl)) 382 # comparison here instead of a regexp match.
348 self.assertTrue(re.search(r" author1@chromium.org", cl)) 383 expected_cl = """\\d+\\-\\d+\\-\\d+: Version 3\\.22\\.5
349 self.assertTrue(re.search(r" author2@chromium.org", cl)) 384
350 self.assertTrue(re.search(r" \(Chromium issue 321\)", cl)) 385 Title text 1
351 self.assertFalse(re.search(r"BUG=", cl)) 386
387 Title text 3
388 \\(Chromium issue 321\\)
389
390 Performance and stability improvements on all platforms\\.
391 #
392 # The change log above is auto-generated\\. Please review if all relevant
393 # commit messages from the list below are included\\.
394 # All lines starting with # will be stripped\\.
395 #
396 # Title text 1
397 # author1@chromium\\.org
398 #
399 # Title text 2
400 # \\(Chromium issue 123\\)
401 # author2@chromium\\.org
402 #
403 # Title text 3
404 # \\(Chromium issue 321\\)
405 # author3@chromium\\.org
406 #
407 #"""
408
409 self.assertTrue(re.match(expected_cl, actual_cl))
352 self.assertEquals("3", self.MakeStep().Restore("major")) 410 self.assertEquals("3", self.MakeStep().Restore("major"))
353 self.assertEquals("22", self.MakeStep().Restore("minor")) 411 self.assertEquals("22", self.MakeStep().Restore("minor"))
354 self.assertEquals("5", self.MakeStep().Restore("build")) 412 self.assertEquals("5", self.MakeStep().Restore("build"))
355 self.assertEquals("0", self.MakeStep().Restore("patch")) 413 self.assertEquals("0", self.MakeStep().Restore("patch"))
356 414
357 def testEditChangeLog(self): 415 def testEditChangeLog(self):
358 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile() 416 TEST_CONFIG[CHANGELOG_ENTRY_FILE] = self.MakeEmptyTempFile()
359 TEST_CONFIG[CHANGELOG_FILE] = self.MakeEmptyTempFile() 417 TEST_CONFIG[CHANGELOG_FILE] = self.MakeEmptyTempFile()
360 TextToFile(" Original CL", TEST_CONFIG[CHANGELOG_FILE]) 418 TextToFile(" Original CL", TEST_CONFIG[CHANGELOG_FILE])
361 TextToFile(" New \n\tLines \n", TEST_CONFIG[CHANGELOG_ENTRY_FILE]) 419 TextToFile(" New \n\tLines \n", TEST_CONFIG[CHANGELOG_ENTRY_FILE])
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 TextToFile("1999-04-05: Version 3.22.4", TEST_CONFIG[CHANGELOG_FILE]) 498 TextToFile("1999-04-05: Version 3.22.4", TEST_CONFIG[CHANGELOG_FILE])
441 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line", 499 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line",
442 TEST_CONFIG[DEPS_FILE]) 500 TEST_CONFIG[DEPS_FILE])
443 os.environ["EDITOR"] = "vi" 501 os.environ["EDITOR"] = "vi"
444 502
445 def CheckPreparePush(): 503 def CheckPreparePush():
446 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE]) 504 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE])
447 self.assertTrue(re.search(r"Version 3.22.5", cl)) 505 self.assertTrue(re.search(r"Version 3.22.5", cl))
448 self.assertTrue(re.search(r" Log text 1", cl)) 506 self.assertTrue(re.search(r" Log text 1", cl))
449 self.assertTrue(re.search(r" \(issue 321\)", cl)) 507 self.assertTrue(re.search(r" \(issue 321\)", cl))
508 self.assertFalse(re.search(r" author1@chromium\.org", cl))
509
510 # Make sure all comments got stripped.
511 self.assertFalse(re.search(r"^#", cl, flags=re.M))
512
450 version = FileToText(TEST_CONFIG[VERSION_FILE]) 513 version = FileToText(TEST_CONFIG[VERSION_FILE])
451 self.assertTrue(re.search(r"#define BUILD_NUMBER\s+6", version)) 514 self.assertTrue(re.search(r"#define BUILD_NUMBER\s+6", version))
452 515
516 def CheckUpload():
517 cl = FileToText(TEST_CONFIG[CHANGELOG_FILE])
518
453 def CheckSVNCommit(): 519 def CheckSVNCommit():
454 commit = FileToText(TEST_CONFIG[COMMITMSG_FILE]) 520 commit = FileToText(TEST_CONFIG[COMMITMSG_FILE])
455 self.assertTrue(re.search(r"Version 3.22.5", commit)) 521 self.assertTrue(re.search(r"Version 3.22.5", commit))
456 self.assertTrue(re.search(r"Log text 1. \(issue 321\)", commit)) 522 self.assertTrue(re.search(r"Log text 1. \(issue 321\)", commit))
457 version = FileToText(TEST_CONFIG[VERSION_FILE]) 523 version = FileToText(TEST_CONFIG[VERSION_FILE])
458 self.assertTrue(re.search(r"#define MINOR_VERSION\s+22", version)) 524 self.assertTrue(re.search(r"#define MINOR_VERSION\s+22", version))
459 self.assertTrue(re.search(r"#define BUILD_NUMBER\s+5", version)) 525 self.assertTrue(re.search(r"#define BUILD_NUMBER\s+5", version))
460 self.assertFalse(re.search(r"#define BUILD_NUMBER\s+6", version)) 526 self.assertFalse(re.search(r"#define BUILD_NUMBER\s+6", version))
461 self.assertTrue(re.search(r"#define PATCH_LEVEL\s+0", version)) 527 self.assertTrue(re.search(r"#define PATCH_LEVEL\s+0", version))
462 self.assertTrue(re.search(r"#define IS_CANDIDATE_VERSION\s+0", version)) 528 self.assertTrue(re.search(r"#define IS_CANDIDATE_VERSION\s+0", version))
463 529
464 force_flag = " -f" if force else "" 530 force_flag = " -f" if force else ""
465 self._git_recipe = [ 531 self._git_recipe = [
466 ["status -s -uno", ""], 532 ["status -s -uno", ""],
467 ["status -s -b -uno", "## some_branch\n"], 533 ["status -s -b -uno", "## some_branch\n"],
468 ["svn fetch", ""], 534 ["svn fetch", ""],
469 ["branch", " branch1\n* branch2\n"], 535 ["branch", " branch1\n* branch2\n"],
470 ["checkout -b %s" % TEST_CONFIG[TEMP_BRANCH], ""], 536 ["checkout -b %s" % TEST_CONFIG[TEMP_BRANCH], ""],
471 ["branch", " branch1\n* branch2\n"], 537 ["branch", " branch1\n* branch2\n"],
472 ["branch", " branch1\n* branch2\n"], 538 ["branch", " branch1\n* branch2\n"],
473 ["checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], ""], 539 ["checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], ""],
474 ["log -1 --format=%H ChangeLog", "1234\n"], 540 ["log -1 --format=%H ChangeLog", "1234\n"],
475 ["log -1 1234", "Last push ouput\n"], 541 ["log -1 1234", "Last push ouput\n"],
476 ["log 1234..HEAD --format=%H", "rev1\n"], 542 ["log 1234..HEAD --format=%H", "rev1\n"],
477 ["log -1 rev1 --format=\"%w(80,8,8)%s\"", " Log text 1.\n"], 543 ["log -1 rev1 --format=\"%w(80,8,8)%s\"", " Log text 1.\n"],
478 ["log -1 rev1 --format=\"%B\"", "Text\nBUG=v8:321\nText\n"], 544 ["log -1 rev1 --format=\"%B\"", "Text\nLOG=YES\nBUG=v8:321\nText\n"],
479 ["log -1 rev1 --format=\"%w(80,8,8)(%an)\"", 545 ["log -1 rev1 --format=\"%w(80,8,8)(%an)\"",
480 " author1@chromium.org\n"], 546 " author1@chromium.org\n"],
481 [("commit -a -m \"Prepare push to trunk. " 547 [("commit -a -m \"Prepare push to trunk. "
482 "Now working on version 3.22.6.\""), 548 "Now working on version 3.22.6.\""),
483 " 2 files changed\n", 549 " 2 files changed\n",
484 CheckPreparePush], 550 CheckPreparePush],
485 ["cl upload -r \"reviewer@chromium.org\" --send-mail%s" % force_flag, 551 ["cl upload -r \"reviewer@chromium.org\" --send-mail%s" % force_flag,
486 "done\n"], 552 "done\n"],
487 ["cl dcommit -f", "Closing issue\n"], 553 ["cl dcommit -f", "Closing issue\n"],
488 ["svn fetch", "fetch result\n"], 554 ["svn fetch", "fetch result\n"],
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 615
550 # Note: The version file is on build number 5 again in the end of this test 616 # Note: The version file is on build number 5 again in the end of this test
551 # since the git command that merges to the bleeding edge branch is mocked 617 # since the git command that merges to the bleeding edge branch is mocked
552 # out. 618 # out.
553 619
554 def testPushToTrunk(self): 620 def testPushToTrunk(self):
555 self._PushToTrunk() 621 self._PushToTrunk()
556 622
557 def testPushToTrunkForced(self): 623 def testPushToTrunkForced(self):
558 self._PushToTrunk(force=True) 624 self._PushToTrunk(force=True)
OLDNEW
« no previous file with comments | « tools/push-to-trunk/push_to_trunk.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698