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 |
11 # disclaimer in the documentation and/or other materials provided | 11 # disclaimer in the documentation and/or other materials provided |
12 # with the distribution. | 12 # with the distribution. |
13 # * Neither the name of Google Inc. nor the names of its | 13 # * Neither the name of Google Inc. nor the names of its |
14 # contributors may be used to endorse or promote products derived | 14 # contributors may be used to endorse or promote products derived |
15 # from this software without specific prior written permission. | 15 # from this software without specific prior written permission. |
16 # | 16 # |
17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | 18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
28 | 28 |
29 import os | 29 import os |
| 30 import shutil |
30 import tempfile | 31 import tempfile |
31 import traceback | 32 import traceback |
32 import unittest | 33 import unittest |
33 | 34 |
34 import auto_push | 35 import auto_push |
35 from auto_push import CheckLastPush | 36 from auto_push import CheckLastPush |
36 from auto_push import SETTINGS_LOCATION | 37 from auto_push import SETTINGS_LOCATION |
37 import auto_roll | 38 import auto_roll |
38 from auto_roll import CLUSTERFUZZ_API_KEY_FILE | 39 from auto_roll import CLUSTERFUZZ_API_KEY_FILE |
39 import common_includes | 40 import common_includes |
40 from common_includes import * | 41 from common_includes import * |
41 import merge_to_branch | 42 import merge_to_branch |
42 from merge_to_branch import * | 43 from merge_to_branch import * |
43 import push_to_trunk | 44 import push_to_trunk |
44 from push_to_trunk import * | 45 from push_to_trunk import * |
45 import chromium_roll | 46 import chromium_roll |
46 from chromium_roll import CHROMIUM | 47 from chromium_roll import CHROMIUM |
47 from chromium_roll import DEPS_FILE | |
48 from chromium_roll import ChromiumRoll | 48 from chromium_roll import ChromiumRoll |
49 import releases | 49 import releases |
50 from releases import Releases | 50 from releases import Releases |
51 import bump_up_version | 51 import bump_up_version |
52 from bump_up_version import BumpUpVersion | 52 from bump_up_version import BumpUpVersion |
53 from bump_up_version import LastChangeBailout | 53 from bump_up_version import LastChangeBailout |
54 from bump_up_version import LKGRVersionUpToDateBailout | 54 from bump_up_version import LKGRVersionUpToDateBailout |
55 from auto_tag import AutoTag | 55 from auto_tag import AutoTag |
56 | 56 |
57 | 57 |
58 TEST_CONFIG = { | 58 TEST_CONFIG = { |
| 59 "DEFAULT_CWD": "[DEFAULT_CWD]", |
59 BRANCHNAME: "test-prepare-push", | 60 BRANCHNAME: "test-prepare-push", |
60 TRUNKBRANCH: "test-trunk-push", | 61 TRUNKBRANCH: "test-trunk-push", |
61 PERSISTFILE_BASENAME: "/tmp/test-v8-push-to-trunk-tempfile", | 62 PERSISTFILE_BASENAME: "/tmp/test-v8-push-to-trunk-tempfile", |
62 DOT_GIT_LOCATION: None, | 63 DOT_GIT_LOCATION: None, |
63 VERSION_FILE: None, | 64 VERSION_FILE: None, |
64 CHANGELOG_FILE: None, | 65 CHANGELOG_FILE: None, |
65 CHANGELOG_ENTRY_FILE: "/tmp/test-v8-push-to-trunk-tempfile-changelog-entry", | 66 CHANGELOG_ENTRY_FILE: "/tmp/test-v8-push-to-trunk-tempfile-changelog-entry", |
66 PATCH_FILE: "/tmp/test-v8-push-to-trunk-tempfile-patch", | 67 PATCH_FILE: "/tmp/test-v8-push-to-trunk-tempfile-patch", |
67 COMMITMSG_FILE: "/tmp/test-v8-push-to-trunk-tempfile-commitmsg", | 68 COMMITMSG_FILE: "/tmp/test-v8-push-to-trunk-tempfile-commitmsg", |
68 CHROMIUM: "/tmp/test-v8-push-to-trunk-tempfile-chromium", | 69 CHROMIUM: "/tmp/test-v8-push-to-trunk-tempfile-chromium", |
69 DEPS_FILE: "/tmp/test-v8-push-to-trunk-tempfile-chromium/DEPS", | |
70 SETTINGS_LOCATION: None, | 70 SETTINGS_LOCATION: None, |
71 ALREADY_MERGING_SENTINEL_FILE: | 71 ALREADY_MERGING_SENTINEL_FILE: |
72 "/tmp/test-merge-to-branch-tempfile-already-merging", | 72 "/tmp/test-merge-to-branch-tempfile-already-merging", |
73 COMMIT_HASHES_FILE: "/tmp/test-merge-to-branch-tempfile-PATCH_COMMIT_HASHES", | 73 COMMIT_HASHES_FILE: "/tmp/test-merge-to-branch-tempfile-PATCH_COMMIT_HASHES", |
74 TEMPORARY_PATCH_FILE: "/tmp/test-merge-to-branch-tempfile-temporary-patch", | 74 TEMPORARY_PATCH_FILE: "/tmp/test-merge-to-branch-tempfile-temporary-patch", |
75 CLUSTERFUZZ_API_KEY_FILE: "/tmp/test-fake-cf-api-key", | 75 CLUSTERFUZZ_API_KEY_FILE: "/tmp/test-fake-cf-api-key", |
76 } | 76 } |
77 | 77 |
78 | 78 |
79 AUTO_PUSH_ARGS = [ | 79 AUTO_PUSH_ARGS = [ |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 shell command test expectation.""" | 256 """Convenience function returning a shell command test expectation.""" |
257 return { | 257 return { |
258 "name": "command", | 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 "cwd": kwargs.get("cwd", "[DEFAULT_CWD]"), |
262 } | 263 } |
263 | 264 |
264 | 265 |
265 def RL(text, cb=None): | 266 def RL(text, cb=None): |
266 """Convenience function returning a readline test expectation.""" | 267 """Convenience function returning a readline test expectation.""" |
267 return {"name": "readline", "args": [], "ret": text, "cb": cb} | 268 return { |
| 269 "name": "readline", |
| 270 "args": [], |
| 271 "ret": text, |
| 272 "cb": cb, |
| 273 "cwd": None, |
| 274 } |
268 | 275 |
269 | 276 |
270 def URL(*args, **kwargs): | 277 def URL(*args, **kwargs): |
271 """Convenience function returning a readurl test expectation.""" | 278 """Convenience function returning a readurl test expectation.""" |
272 return { | 279 return { |
273 "name": "readurl", | 280 "name": "readurl", |
274 "args": args[:-1], | 281 "args": args[:-1], |
275 "ret": args[-1], | 282 "ret": args[-1], |
276 "cb": kwargs.get("cb"), | 283 "cb": kwargs.get("cb"), |
| 284 "cwd": None, |
277 } | 285 } |
278 | 286 |
279 | 287 |
280 class SimpleMock(object): | 288 class SimpleMock(object): |
281 def __init__(self): | 289 def __init__(self): |
282 self._recipe = [] | 290 self._recipe = [] |
283 self._index = -1 | 291 self._index = -1 |
284 | 292 |
285 def Expect(self, recipe): | 293 def Expect(self, recipe): |
286 self._recipe = recipe | 294 self._recipe = recipe |
287 | 295 |
288 def Call(self, name, *args): # pragma: no cover | 296 def Call(self, name, *args, **kwargs): # pragma: no cover |
289 self._index += 1 | 297 self._index += 1 |
290 try: | 298 try: |
291 expected_call = self._recipe[self._index] | 299 expected_call = self._recipe[self._index] |
292 except IndexError: | 300 except IndexError: |
293 raise NoRetryException("Calling %s %s" % (name, " ".join(args))) | 301 raise NoRetryException("Calling %s %s" % (name, " ".join(args))) |
294 | 302 |
295 if not isinstance(expected_call, dict): | 303 if not isinstance(expected_call, dict): |
296 raise NoRetryException("Found wrong expectation type for %s %s" % | 304 raise NoRetryException("Found wrong expectation type for %s %s" % |
297 (name, " ".join(args))) | 305 (name, " ".join(args))) |
298 | 306 |
299 if expected_call["name"] != name: | 307 if expected_call["name"] != name: |
300 raise NoRetryException("Expected action: %s %s - Actual: %s" % | 308 raise NoRetryException("Expected action: %s %s - Actual: %s" % |
301 (expected_call["name"], expected_call["args"], name)) | 309 (expected_call["name"], expected_call["args"], name)) |
302 | 310 |
| 311 # Check if the given working directory matches the expected one. |
| 312 if expected_call["cwd"] != kwargs.get("cwd"): |
| 313 raise NoRetryException("Expected cwd: %s in %s %s - Actual: %s" % |
| 314 (expected_call["cwd"], |
| 315 expected_call["name"], |
| 316 expected_call["args"], |
| 317 kwargs.get("cwd"))) |
| 318 |
303 # The number of arguments in the expectation must match the actual | 319 # The number of arguments in the expectation must match the actual |
304 # arguments. | 320 # arguments. |
305 if len(args) > len(expected_call['args']): | 321 if len(args) > len(expected_call['args']): |
306 raise NoRetryException("When calling %s with arguments, the " | 322 raise NoRetryException("When calling %s with arguments, the " |
307 "expectations must consist of at least as many arguments." % | 323 "expectations must consist of at least as many arguments." % |
308 name) | 324 name) |
309 | 325 |
310 # Compare expected and actual arguments. | 326 # Compare expected and actual arguments. |
311 for (expected_arg, actual_arg) in zip(expected_call['args'], args): | 327 for (expected_arg, actual_arg) in zip(expected_call['args'], args): |
312 if expected_arg != actual_arg: | 328 if expected_arg != actual_arg: |
(...skipping 20 matching lines...) Expand all Loading... |
333 (self._index, len(self._recipe))) | 349 (self._index, len(self._recipe))) |
334 | 350 |
335 | 351 |
336 class ScriptTest(unittest.TestCase): | 352 class ScriptTest(unittest.TestCase): |
337 def MakeEmptyTempFile(self): | 353 def MakeEmptyTempFile(self): |
338 handle, name = tempfile.mkstemp() | 354 handle, name = tempfile.mkstemp() |
339 os.close(handle) | 355 os.close(handle) |
340 self._tmp_files.append(name) | 356 self._tmp_files.append(name) |
341 return name | 357 return name |
342 | 358 |
| 359 def MakeEmptyTempDirectory(self): |
| 360 name = tempfile.mkdtemp() |
| 361 self._tmp_files.append(name) |
| 362 return name |
| 363 |
| 364 |
343 def WriteFakeVersionFile(self, minor=22, build=4, patch=0): | 365 def WriteFakeVersionFile(self, minor=22, build=4, patch=0): |
344 with open(TEST_CONFIG[VERSION_FILE], "w") as f: | 366 with open(TEST_CONFIG[VERSION_FILE], "w") as f: |
345 f.write(" // Some line...\n") | 367 f.write(" // Some line...\n") |
346 f.write("\n") | 368 f.write("\n") |
347 f.write("#define MAJOR_VERSION 3\n") | 369 f.write("#define MAJOR_VERSION 3\n") |
348 f.write("#define MINOR_VERSION %s\n" % minor) | 370 f.write("#define MINOR_VERSION %s\n" % minor) |
349 f.write("#define BUILD_NUMBER %s\n" % build) | 371 f.write("#define BUILD_NUMBER %s\n" % build) |
350 f.write("#define PATCH_LEVEL %s\n" % patch) | 372 f.write("#define PATCH_LEVEL %s\n" % patch) |
351 f.write(" // Some line...\n") | 373 f.write(" // Some line...\n") |
352 f.write("#define IS_CANDIDATE_VERSION 0\n") | 374 f.write("#define IS_CANDIDATE_VERSION 0\n") |
353 | 375 |
354 def MakeStep(self): | 376 def MakeStep(self): |
355 """Convenience wrapper.""" | 377 """Convenience wrapper.""" |
356 options = ScriptsBase(TEST_CONFIG, self, self._state).MakeOptions([]) | 378 options = ScriptsBase(TEST_CONFIG, self, self._state).MakeOptions([]) |
357 return MakeStep(step_class=Step, state=self._state, | 379 return MakeStep(step_class=Step, state=self._state, |
358 config=TEST_CONFIG, side_effect_handler=self, | 380 config=TEST_CONFIG, side_effect_handler=self, |
359 options=options) | 381 options=options) |
360 | 382 |
361 def RunStep(self, script=PushToTrunk, step_class=Step, args=None): | 383 def RunStep(self, script=PushToTrunk, step_class=Step, args=None): |
362 """Convenience wrapper.""" | 384 """Convenience wrapper.""" |
363 args = args if args is not None else ["-m"] | 385 args = args if args is not None else ["-m"] |
364 return script(TEST_CONFIG, self, self._state).RunSteps([step_class], args) | 386 return script(TEST_CONFIG, self, self._state).RunSteps([step_class], args) |
365 | 387 |
366 def Call(self, fun, *args, **kwargs): | 388 def Call(self, fun, *args, **kwargs): |
367 print "Calling %s with %s and %s" % (str(fun), str(args), str(kwargs)) | 389 print "Calling %s with %s and %s" % (str(fun), str(args), str(kwargs)) |
368 | 390 |
369 def Command(self, cmd, args="", prefix="", pipe=True): | 391 def Command(self, cmd, args="", prefix="", pipe=True, cwd=None): |
370 print "%s %s" % (cmd, args) | 392 print "%s %s" % (cmd, args) |
371 return self._mock.Call("command", cmd + " " + args) | 393 print "in %s" % cwd |
| 394 return self._mock.Call("command", cmd + " " + args, cwd=cwd) |
372 | 395 |
373 def ReadLine(self): | 396 def ReadLine(self): |
374 return self._mock.Call("readline") | 397 return self._mock.Call("readline") |
375 | 398 |
376 def ReadURL(self, url, params): | 399 def ReadURL(self, url, params): |
377 if params is not None: | 400 if params is not None: |
378 return self._mock.Call("readurl", url, params) | 401 return self._mock.Call("readurl", url, params) |
379 else: | 402 else: |
380 return self._mock.Call("readurl", url) | 403 return self._mock.Call("readurl", url) |
381 | 404 |
(...skipping 14 matching lines...) Expand all Loading... |
396 def Expect(self, *args): | 419 def Expect(self, *args): |
397 """Convenience wrapper.""" | 420 """Convenience wrapper.""" |
398 self._mock.Expect(*args) | 421 self._mock.Expect(*args) |
399 | 422 |
400 def setUp(self): | 423 def setUp(self): |
401 self._mock = SimpleMock() | 424 self._mock = SimpleMock() |
402 self._tmp_files = [] | 425 self._tmp_files = [] |
403 self._state = {} | 426 self._state = {} |
404 | 427 |
405 def tearDown(self): | 428 def tearDown(self): |
406 Command("rm", "-rf %s*" % TEST_CONFIG[PERSISTFILE_BASENAME]) | 429 if os.path.exists(TEST_CONFIG[PERSISTFILE_BASENAME]): |
| 430 shutil.rmtree(TEST_CONFIG[PERSISTFILE_BASENAME]) |
407 | 431 |
408 # Clean up temps. Doesn't work automatically. | 432 # Clean up temps. Doesn't work automatically. |
409 for name in self._tmp_files: | 433 for name in self._tmp_files: |
410 if os.path.exists(name): | 434 if os.path.isfile(name): |
411 os.remove(name) | 435 os.remove(name) |
| 436 if os.path.isdir(name): |
| 437 shutil.rmtree(name) |
412 | 438 |
413 self._mock.AssertFinished() | 439 self._mock.AssertFinished() |
414 | 440 |
415 def testGitOrig(self): | |
416 self.assertTrue(Command("git", "--version").startswith("git version")) | |
417 | |
418 def testGitMock(self): | 441 def testGitMock(self): |
419 self.Expect([Cmd("git --version", "git version 1.2.3"), | 442 self.Expect([Cmd("git --version", "git version 1.2.3"), |
420 Cmd("git dummy", "")]) | 443 Cmd("git dummy", "")]) |
421 self.assertEquals("git version 1.2.3", self.MakeStep().Git("--version")) | 444 self.assertEquals("git version 1.2.3", self.MakeStep().Git("--version")) |
422 self.assertEquals("", self.MakeStep().Git("dummy")) | 445 self.assertEquals("", self.MakeStep().Git("dummy")) |
423 | 446 |
424 def testCommonPrepareDefault(self): | 447 def testCommonPrepareDefault(self): |
425 self.Expect([ | 448 self.Expect([ |
426 Cmd("git status -s -uno", ""), | 449 Cmd("git status -s -uno", ""), |
427 Cmd("git status -s -b -uno", "## some_branch"), | 450 Cmd("git status -s -b -uno", "## some_branch"), |
(...skipping 27 matching lines...) Expand all Loading... |
455 RL("Y"), | 478 RL("Y"), |
456 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], None), | 479 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], None), |
457 ]) | 480 ]) |
458 self.MakeStep().CommonPrepare() | 481 self.MakeStep().CommonPrepare() |
459 self.assertRaises(Exception, self.MakeStep().PrepareBranch) | 482 self.assertRaises(Exception, self.MakeStep().PrepareBranch) |
460 self.assertEquals("some_branch", self._state["current_branch"]) | 483 self.assertEquals("some_branch", self._state["current_branch"]) |
461 | 484 |
462 def testInitialEnvironmentChecks(self): | 485 def testInitialEnvironmentChecks(self): |
463 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() | 486 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() |
464 os.environ["EDITOR"] = "vi" | 487 os.environ["EDITOR"] = "vi" |
| 488 self.Expect([ |
| 489 Cmd("which vi", "/usr/bin/vi"), |
| 490 ]) |
465 self.MakeStep().InitialEnvironmentChecks() | 491 self.MakeStep().InitialEnvironmentChecks() |
466 | 492 |
467 def testReadAndPersistVersion(self): | 493 def testReadAndPersistVersion(self): |
468 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() | 494 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() |
469 self.WriteFakeVersionFile(build=5) | 495 self.WriteFakeVersionFile(build=5) |
470 step = self.MakeStep() | 496 step = self.MakeStep() |
471 step.ReadAndPersistVersion() | 497 step.ReadAndPersistVersion() |
472 self.assertEquals("3", step["major"]) | 498 self.assertEquals("3", step["major"]) |
473 self.assertEquals("22", step["minor"]) | 499 self.assertEquals("22", step["minor"]) |
474 self.assertEquals("5", step["build"]) | 500 self.assertEquals("5", step["build"]) |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
704 | 730 |
705 Performance and stability improvements on all platforms. | 731 Performance and stability improvements on all platforms. |
706 | 732 |
707 | 733 |
708 1999-04-05: Version 3.22.4 | 734 1999-04-05: Version 3.22.4 |
709 | 735 |
710 Performance and stability improvements on all platforms.\n""", | 736 Performance and stability improvements on all platforms.\n""", |
711 change_log) | 737 change_log) |
712 | 738 |
713 force_flag = " -f" if not manual else "" | 739 force_flag = " -f" if not manual else "" |
714 expectations = [ | 740 expectations = [] |
| 741 if not force: |
| 742 expectations.append(Cmd("which vi", "/usr/bin/vi")) |
| 743 expectations += [ |
715 Cmd("git status -s -uno", ""), | 744 Cmd("git status -s -uno", ""), |
716 Cmd("git status -s -b -uno", "## some_branch\n"), | 745 Cmd("git status -s -b -uno", "## some_branch\n"), |
717 Cmd("git svn fetch", ""), | 746 Cmd("git svn fetch", ""), |
718 Cmd("git branch", " branch1\n* branch2\n"), | 747 Cmd("git branch", " branch1\n* branch2\n"), |
719 Cmd("git branch", " branch1\n* branch2\n"), | 748 Cmd("git branch", " branch1\n* branch2\n"), |
720 Cmd("git checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], | 749 Cmd("git checkout -b %s svn/bleeding_edge" % TEST_CONFIG[BRANCHNAME], |
721 ""), | 750 ""), |
722 Cmd("git svn find-rev r123455", "push_hash\n"), | 751 Cmd("git svn find-rev r123455", "push_hash\n"), |
723 Cmd(("git log -1 --format=%H --grep=" | 752 Cmd(("git log -1 --format=%H --grep=" |
724 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" " | 753 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" " |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
820 | 849 |
821 def testChromiumRoll(self): | 850 def testChromiumRoll(self): |
822 googlers_mapping_py = "%s-mapping.py" % TEST_CONFIG[PERSISTFILE_BASENAME] | 851 googlers_mapping_py = "%s-mapping.py" % TEST_CONFIG[PERSISTFILE_BASENAME] |
823 with open(googlers_mapping_py, "w") as f: | 852 with open(googlers_mapping_py, "w") as f: |
824 f.write(""" | 853 f.write(""" |
825 def list_to_dict(entries): | 854 def list_to_dict(entries): |
826 return {"g_name@google.com": "c_name@chromium.org"} | 855 return {"g_name@google.com": "c_name@chromium.org"} |
827 def get_list(): | 856 def get_list(): |
828 pass""") | 857 pass""") |
829 | 858 |
| 859 # Setup fake directory structures. |
830 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() | 860 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() |
831 if not os.path.exists(TEST_CONFIG[CHROMIUM]): | 861 TEST_CONFIG[CHROMIUM] = self.MakeEmptyTempDirectory() |
832 os.makedirs(TEST_CONFIG[CHROMIUM]) | 862 chrome_dir = TEST_CONFIG[CHROMIUM] |
833 if not os.path.exists(os.path.join(TEST_CONFIG[CHROMIUM], "v8")): | 863 os.makedirs(os.path.join(chrome_dir, "v8")) |
834 os.makedirs(os.path.join(TEST_CONFIG[CHROMIUM], "v8")) | 864 |
| 865 # Write fake deps file. |
835 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line", | 866 TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line", |
836 TEST_CONFIG[DEPS_FILE]) | 867 os.path.join(chrome_dir, "DEPS")) |
837 def WriteDeps(): | 868 def WriteDeps(): |
838 TextToFile("Some line\n \"v8_revision\": \"22624\",\n some line", | 869 TextToFile("Some line\n \"v8_revision\": \"22624\",\n some line", |
839 TEST_CONFIG[DEPS_FILE]) | 870 os.path.join(chrome_dir, "DEPS")) |
840 | 871 |
841 expectations = [ | 872 expectations = [ |
842 Cmd("git fetch origin", ""), | 873 Cmd("git fetch origin", ""), |
843 Cmd(("git log -1 --format=%H --grep=" | 874 Cmd(("git log -1 --format=%H --grep=" |
844 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" " | 875 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" " |
845 "origin/master"), "push_hash\n"), | 876 "origin/master"), "push_hash\n"), |
846 Cmd("git log -1 --format=%B push_hash", self.C_V8_22624_LOG), | 877 Cmd("git log -1 --format=%B push_hash", self.C_V8_22624_LOG), |
847 Cmd("git log -1 --format=%s push_hash", | 878 Cmd("git log -1 --format=%s push_hash", |
848 "Version 3.22.5 (based on bleeding_edge revision r22622)\n"), | 879 "Version 3.22.5 (based on bleeding_edge revision r22622)\n"), |
849 URL("https://chromium-build.appspot.com/p/chromium/sheriff_v8.js", | 880 URL("https://chromium-build.appspot.com/p/chromium/sheriff_v8.js", |
850 "document.write('g_name')"), | 881 "document.write('g_name')"), |
851 Cmd("git status -s -uno", ""), | 882 Cmd("git status -s -uno", "", cwd=chrome_dir), |
852 Cmd("git checkout -f master", ""), | 883 Cmd("git checkout -f master", "", cwd=chrome_dir), |
853 Cmd("gclient sync --nohooks", "syncing..."), | 884 Cmd("gclient sync --nohooks", "syncing...", cwd=chrome_dir), |
854 Cmd("git pull", ""), | 885 Cmd("git pull", "", cwd=chrome_dir), |
855 Cmd("git fetch origin", ""), | 886 Cmd("git fetch origin", ""), |
856 Cmd("git checkout -b v8-roll-22624", ""), | 887 Cmd("git checkout -b v8-roll-22624", "", cwd=chrome_dir), |
857 Cmd("roll-dep v8 22624", "rolled", cb=WriteDeps), | 888 Cmd("roll-dep v8 22624", "rolled", cb=WriteDeps, cwd=chrome_dir), |
858 Cmd(("git commit -am \"Update V8 to version 3.22.5 " | 889 Cmd(("git commit -am \"Update V8 to version 3.22.5 " |
859 "(based on bleeding_edge revision r22622).\n\n" | 890 "(based on bleeding_edge revision r22622).\n\n" |
860 "Please reply to the V8 sheriff c_name@chromium.org in " | 891 "Please reply to the V8 sheriff c_name@chromium.org in " |
861 "case of problems.\n\nTBR=c_name@chromium.org\" " | 892 "case of problems.\n\nTBR=c_name@chromium.org\" " |
862 "--author \"author@chromium.org <author@chromium.org>\""), | 893 "--author \"author@chromium.org <author@chromium.org>\""), |
863 ""), | 894 "", cwd=chrome_dir), |
864 Cmd("git cl upload --send-mail --email \"author@chromium.org\" -f", ""), | 895 Cmd("git cl upload --send-mail --email \"author@chromium.org\" -f", "", |
| 896 cwd=chrome_dir), |
865 ] | 897 ] |
866 self.Expect(expectations) | 898 self.Expect(expectations) |
867 | 899 |
868 args = ["-a", "author@chromium.org", "-c", TEST_CONFIG[CHROMIUM], | 900 args = ["-a", "author@chromium.org", "-c", chrome_dir, |
869 "--sheriff", "--googlers-mapping", googlers_mapping_py, | 901 "--sheriff", "--googlers-mapping", googlers_mapping_py, |
870 "-r", "reviewer@chromium.org"] | 902 "-r", "reviewer@chromium.org"] |
871 ChromiumRoll(TEST_CONFIG, self).Run(args) | 903 ChromiumRoll(TEST_CONFIG, self).Run(args) |
872 | 904 |
873 deps = FileToText(TEST_CONFIG[DEPS_FILE]) | 905 deps = FileToText(os.path.join(chrome_dir, "DEPS")) |
874 self.assertTrue(re.search("\"v8_revision\": \"22624\"", deps)) | 906 self.assertTrue(re.search("\"v8_revision\": \"22624\"", deps)) |
875 | 907 |
876 def testCheckLastPushRecently(self): | 908 def testCheckLastPushRecently(self): |
877 self.Expect([ | 909 self.Expect([ |
878 Cmd(("git log -1 --format=%H --grep=" | 910 Cmd(("git log -1 --format=%H --grep=" |
879 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" " | 911 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]* (based\" " |
880 "svn/trunk"), "hash2\n"), | 912 "svn/trunk"), "hash2\n"), |
881 Cmd("git log -1 --format=%s hash2", | 913 Cmd("git log -1 --format=%s hash2", |
882 "Version 3.4.5 (based on bleeding_edge revision r99)\n"), | 914 "Version 3.4.5 (based on bleeding_edge revision r99)\n"), |
883 ]) | 915 ]) |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
948 def testAutoRollExistingRoll(self): | 980 def testAutoRollExistingRoll(self): |
949 self.Expect([ | 981 self.Expect([ |
950 URL("https://codereview.chromium.org/search", | 982 URL("https://codereview.chromium.org/search", |
951 "owner=author%40chromium.org&limit=30&closed=3&format=json", | 983 "owner=author%40chromium.org&limit=30&closed=3&format=json", |
952 ("{\"results\": [{\"subject\": \"different\"}," | 984 ("{\"results\": [{\"subject\": \"different\"}," |
953 "{\"subject\": \"Update V8 to Version...\"}]}")), | 985 "{\"subject\": \"Update V8 to Version...\"}]}")), |
954 ]) | 986 ]) |
955 | 987 |
956 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run( | 988 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run( |
957 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG[CHROMIUM]]) | 989 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG[CHROMIUM]]) |
958 self.assertEquals(1, result) | 990 self.assertEquals(0, result) |
959 | 991 |
960 # Snippet from the original DEPS file. | 992 # Snippet from the original DEPS file. |
961 FAKE_DEPS = """ | 993 FAKE_DEPS = """ |
962 vars = { | 994 vars = { |
963 "v8_revision": "abcd123455", | 995 "v8_revision": "abcd123455", |
964 } | 996 } |
965 deps = { | 997 deps = { |
966 "src/v8": | 998 "src/v8": |
967 (Var("googlecode_url") % "v8") + "/" + Var("v8_branch") + "@" + | 999 (Var("googlecode_url") % "v8") + "/" + Var("v8_branch") + "@" + |
968 Var("v8_revision"), | 1000 Var("v8_revision"), |
969 } | 1001 } |
970 """ | 1002 """ |
971 | 1003 |
972 def testAutoRollUpToDate(self): | 1004 def testAutoRollUpToDate(self): |
973 os.makedirs(TEST_CONFIG[CHROMIUM]) | 1005 TEST_CONFIG[CHROMIUM] = self.MakeEmptyTempDirectory() |
974 TextToFile(self.FAKE_DEPS, os.path.join(TEST_CONFIG[CHROMIUM], "DEPS")) | 1006 TextToFile(self.FAKE_DEPS, os.path.join(TEST_CONFIG[CHROMIUM], "DEPS")) |
975 self.Expect([ | 1007 self.Expect([ |
976 URL("https://codereview.chromium.org/search", | 1008 URL("https://codereview.chromium.org/search", |
977 "owner=author%40chromium.org&limit=30&closed=3&format=json", | 1009 "owner=author%40chromium.org&limit=30&closed=3&format=json", |
978 ("{\"results\": [{\"subject\": \"different\"}]}")), | 1010 ("{\"results\": [{\"subject\": \"different\"}]}")), |
979 Cmd(("git log -1 --format=%H --grep=" | 1011 Cmd(("git log -1 --format=%H --grep=" |
980 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" " | 1012 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" " |
981 "origin/master"), "push_hash\n"), | 1013 "origin/master"), "push_hash\n"), |
982 Cmd("git log -1 --format=%B push_hash", self.C_V8_22624_LOG), | 1014 Cmd("git log -1 --format=%B push_hash", self.C_V8_22624_LOG), |
983 Cmd("git log -1 --format=%B abcd123455", self.C_V8_123455_LOG), | 1015 Cmd("git log -1 --format=%B abcd123455", self.C_V8_123455_LOG), |
984 ]) | 1016 ]) |
985 | 1017 |
986 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run( | 1018 result = auto_roll.AutoRoll(TEST_CONFIG, self).Run( |
987 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG[CHROMIUM]]) | 1019 AUTO_PUSH_ARGS + ["-c", TEST_CONFIG[CHROMIUM]]) |
988 self.assertEquals(1, result) | 1020 self.assertEquals(0, result) |
989 | 1021 |
990 def testAutoRoll(self): | 1022 def testAutoRoll(self): |
991 os.makedirs(TEST_CONFIG[CHROMIUM]) | 1023 TEST_CONFIG[CHROMIUM] = self.MakeEmptyTempDirectory() |
992 TextToFile(self.FAKE_DEPS, os.path.join(TEST_CONFIG[CHROMIUM], "DEPS")) | 1024 TextToFile(self.FAKE_DEPS, os.path.join(TEST_CONFIG[CHROMIUM], "DEPS")) |
993 TEST_CONFIG[CLUSTERFUZZ_API_KEY_FILE] = self.MakeEmptyTempFile() | 1025 TEST_CONFIG[CLUSTERFUZZ_API_KEY_FILE] = self.MakeEmptyTempFile() |
994 TextToFile("fake key", TEST_CONFIG[CLUSTERFUZZ_API_KEY_FILE]) | 1026 TextToFile("fake key", TEST_CONFIG[CLUSTERFUZZ_API_KEY_FILE]) |
995 | 1027 |
996 self.Expect([ | 1028 self.Expect([ |
997 URL("https://codereview.chromium.org/search", | 1029 URL("https://codereview.chromium.org/search", |
998 "owner=author%40chromium.org&limit=30&closed=3&format=json", | 1030 "owner=author%40chromium.org&limit=30&closed=3&format=json", |
999 ("{\"results\": [{\"subject\": \"different\"}]}")), | 1031 ("{\"results\": [{\"subject\": \"different\"}]}")), |
1000 Cmd(("git log -1 --format=%H --grep=" | 1032 Cmd(("git log -1 --format=%H --grep=" |
1001 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" " | 1033 "\"^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\" " |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1187 | 1219 |
1188 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3456 0039-1c4b | 1220 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3456 0039-1c4b |
1189 | 1221 |
1190 """ | 1222 """ |
1191 json_output = self.MakeEmptyTempFile() | 1223 json_output = self.MakeEmptyTempFile() |
1192 csv_output = self.MakeEmptyTempFile() | 1224 csv_output = self.MakeEmptyTempFile() |
1193 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() | 1225 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() |
1194 self.WriteFakeVersionFile() | 1226 self.WriteFakeVersionFile() |
1195 | 1227 |
1196 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() | 1228 TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() |
1197 if not os.path.exists(TEST_CONFIG[CHROMIUM]): | 1229 TEST_CONFIG[CHROMIUM] = self.MakeEmptyTempDirectory() |
1198 os.makedirs(TEST_CONFIG[CHROMIUM]) | 1230 chrome_dir = TEST_CONFIG[CHROMIUM] |
1199 if not os.path.exists(os.path.join(TEST_CONFIG[CHROMIUM], "v8")): | 1231 chrome_v8_dir = os.path.join(chrome_dir, "v8") |
1200 os.makedirs(os.path.join(TEST_CONFIG[CHROMIUM], "v8")) | 1232 os.makedirs(chrome_v8_dir) |
1201 def WriteDEPS(revision): | 1233 def WriteDEPS(revision): |
1202 TextToFile("Line\n \"v8_revision\": \"%s\",\n line\n" % revision, | 1234 TextToFile("Line\n \"v8_revision\": \"%s\",\n line\n" % revision, |
1203 TEST_CONFIG[DEPS_FILE]) | 1235 os.path.join(chrome_dir, "DEPS")) |
1204 WriteDEPS(567) | 1236 WriteDEPS(567) |
1205 | 1237 |
1206 def ResetVersion(minor, build, patch=0): | 1238 def ResetVersion(minor, build, patch=0): |
1207 return lambda: self.WriteFakeVersionFile(minor=minor, | 1239 return lambda: self.WriteFakeVersionFile(minor=minor, |
1208 build=build, | 1240 build=build, |
1209 patch=patch) | 1241 patch=patch) |
1210 | 1242 |
1211 def ResetDEPS(revision): | 1243 def ResetDEPS(revision): |
1212 return lambda: WriteDEPS(revision) | 1244 return lambda: WriteDEPS(revision) |
1213 | 1245 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1255 cb=ResetVersion(22, 5)), | 1287 cb=ResetVersion(22, 5)), |
1256 Cmd("git reset --hard svn/bleeding_edge", ""), | 1288 Cmd("git reset --hard svn/bleeding_edge", ""), |
1257 Cmd("svn log https://v8.googlecode.com/svn/tags -v --limit 20", | 1289 Cmd("svn log https://v8.googlecode.com/svn/tags -v --limit 20", |
1258 tag_response_text), | 1290 tag_response_text), |
1259 Cmd("git svn find-rev r22626", "hash_22626"), | 1291 Cmd("git svn find-rev r22626", "hash_22626"), |
1260 Cmd("git svn find-rev hash_22626", "22626"), | 1292 Cmd("git svn find-rev hash_22626", "22626"), |
1261 Cmd("git log -1 --format=%ci hash_22626", "01:23"), | 1293 Cmd("git log -1 --format=%ci hash_22626", "01:23"), |
1262 Cmd("git svn find-rev r22624", "hash_22624"), | 1294 Cmd("git svn find-rev r22624", "hash_22624"), |
1263 Cmd("git svn find-rev hash_22624", "22624"), | 1295 Cmd("git svn find-rev hash_22624", "22624"), |
1264 Cmd("git log -1 --format=%ci hash_22624", "02:34"), | 1296 Cmd("git log -1 --format=%ci hash_22624", "02:34"), |
1265 Cmd("git status -s -uno", ""), | 1297 Cmd("git status -s -uno", "", cwd=chrome_dir), |
1266 Cmd("git checkout -f master", ""), | 1298 Cmd("git checkout -f master", "", cwd=chrome_dir), |
1267 Cmd("git pull", ""), | 1299 Cmd("git pull", "", cwd=chrome_dir), |
1268 Cmd("git checkout -b %s" % TEST_CONFIG[BRANCHNAME], ""), | 1300 Cmd("git checkout -b %s" % TEST_CONFIG[BRANCHNAME], "", cwd=chrome_dir), |
1269 Cmd("git fetch origin", ""), | 1301 Cmd("git fetch origin", "", cwd=chrome_v8_dir), |
1270 Cmd("git log --format=%H --grep=\"V8\"", "c_hash1\nc_hash2\nc_hash3\n"), | 1302 Cmd("git log --format=%H --grep=\"V8\"", "c_hash1\nc_hash2\nc_hash3\n", |
1271 Cmd("git diff --name-only c_hash1 c_hash1^", ""), | 1303 cwd=chrome_dir), |
1272 Cmd("git diff --name-only c_hash2 c_hash2^", TEST_CONFIG[DEPS_FILE]), | 1304 Cmd("git diff --name-only c_hash1 c_hash1^", "", cwd=chrome_dir), |
1273 Cmd("git checkout -f c_hash2 -- %s" % TEST_CONFIG[DEPS_FILE], "", | 1305 Cmd("git diff --name-only c_hash2 c_hash2^", "DEPS", cwd=chrome_dir), |
1274 cb=ResetDEPS("0123456789012345678901234567890123456789")), | 1306 Cmd("git checkout -f c_hash2 -- DEPS", "", |
1275 Cmd("git log -1 --format=%B c_hash2", c_hash2_commit_log), | 1307 cb=ResetDEPS("0123456789012345678901234567890123456789"), |
| 1308 cwd=chrome_dir), |
| 1309 Cmd("git log -1 --format=%B c_hash2", c_hash2_commit_log, |
| 1310 cwd=chrome_dir), |
1276 Cmd("git rev-list -n 1 0123456789012345678901234567890123456789", | 1311 Cmd("git rev-list -n 1 0123456789012345678901234567890123456789", |
1277 "0123456789012345678901234567890123456789"), | 1312 "0123456789012345678901234567890123456789", cwd=chrome_v8_dir), |
1278 Cmd("git log -1 --format=%B 0123456789012345678901234567890123456789", | 1313 Cmd("git log -1 --format=%B 0123456789012345678901234567890123456789", |
1279 self.C_V8_22624_LOG), | 1314 self.C_V8_22624_LOG, cwd=chrome_v8_dir), |
1280 Cmd("git diff --name-only c_hash3 c_hash3^", TEST_CONFIG[DEPS_FILE]), | 1315 Cmd("git diff --name-only c_hash3 c_hash3^", "DEPS", cwd=chrome_dir), |
1281 Cmd("git checkout -f c_hash3 -- %s" % TEST_CONFIG[DEPS_FILE], "", | 1316 Cmd("git checkout -f c_hash3 -- DEPS", "", cb=ResetDEPS(345), |
1282 cb=ResetDEPS(345)), | 1317 cwd=chrome_dir), |
1283 Cmd("git log -1 --format=%B c_hash3", c_hash3_commit_log), | 1318 Cmd("git log -1 --format=%B c_hash3", c_hash3_commit_log, |
1284 Cmd("git checkout -f HEAD -- %s" % TEST_CONFIG[DEPS_FILE], "", | 1319 cwd=chrome_dir), |
1285 cb=ResetDEPS(567)), | 1320 Cmd("git checkout -f HEAD -- DEPS", "", cb=ResetDEPS(567), |
1286 Cmd("git branch -r", " weird/123\n branch-heads/7\n"), | 1321 cwd=chrome_dir), |
1287 Cmd("git checkout -f branch-heads/7 -- %s" % TEST_CONFIG[DEPS_FILE], "", | 1322 Cmd("git branch -r", " weird/123\n branch-heads/7\n", cwd=chrome_dir), |
1288 cb=ResetDEPS(345)), | 1323 Cmd("git checkout -f branch-heads/7 -- DEPS", "", cb=ResetDEPS(345), |
1289 Cmd("git checkout -f HEAD -- %s" % TEST_CONFIG[DEPS_FILE], "", | 1324 cwd=chrome_dir), |
1290 cb=ResetDEPS(567)), | 1325 Cmd("git checkout -f HEAD -- DEPS", "", cb=ResetDEPS(567), |
1291 Cmd("git checkout -f master", ""), | 1326 cwd=chrome_dir), |
1292 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), | 1327 Cmd("git checkout -f master", "", cwd=chrome_dir), |
| 1328 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], "", cwd=chrome_dir), |
1293 Cmd("git checkout -f some_branch", ""), | 1329 Cmd("git checkout -f some_branch", ""), |
1294 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), | 1330 Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), |
1295 ]) | 1331 ]) |
1296 | 1332 |
1297 args = ["-c", TEST_CONFIG[CHROMIUM], | 1333 args = ["-c", TEST_CONFIG[CHROMIUM], |
1298 "--json", json_output, | 1334 "--json", json_output, |
1299 "--csv", csv_output, | 1335 "--csv", csv_output, |
1300 "--max-releases", "1"] | 1336 "--max-releases", "1"] |
1301 Releases(TEST_CONFIG, self).Run(args) | 1337 Releases(TEST_CONFIG, self).Run(args) |
1302 | 1338 |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1432 # Test that we bail out if the last change was a version change. | 1468 # Test that we bail out if the last change was a version change. |
1433 def testBumpUpVersionBailout1(self): | 1469 def testBumpUpVersionBailout1(self): |
1434 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() | 1470 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() |
1435 self._state["latest"] = "latest_hash" | 1471 self._state["latest"] = "latest_hash" |
1436 | 1472 |
1437 self.Expect([ | 1473 self.Expect([ |
1438 Cmd("git diff --name-only latest_hash latest_hash^", | 1474 Cmd("git diff --name-only latest_hash latest_hash^", |
1439 TEST_CONFIG[VERSION_FILE]), | 1475 TEST_CONFIG[VERSION_FILE]), |
1440 ]) | 1476 ]) |
1441 | 1477 |
1442 self.assertEquals(1, | 1478 self.assertEquals(0, |
1443 self.RunStep(BumpUpVersion, LastChangeBailout, ["--dry_run"])) | 1479 self.RunStep(BumpUpVersion, LastChangeBailout, ["--dry_run"])) |
1444 | 1480 |
1445 # Test that we bail out if the lkgr was a version change. | 1481 # Test that we bail out if the lkgr was a version change. |
1446 def testBumpUpVersionBailout2(self): | 1482 def testBumpUpVersionBailout2(self): |
1447 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() | 1483 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() |
1448 self._state["lkgr"] = "lkgr_hash" | 1484 self._state["lkgr"] = "lkgr_hash" |
1449 | 1485 |
1450 self.Expect([ | 1486 self.Expect([ |
1451 Cmd("git diff --name-only lkgr_hash lkgr_hash^", | 1487 Cmd("git diff --name-only lkgr_hash lkgr_hash^", |
1452 TEST_CONFIG[VERSION_FILE]), | 1488 TEST_CONFIG[VERSION_FILE]), |
1453 ]) | 1489 ]) |
1454 | 1490 |
1455 self.assertEquals(1, | 1491 self.assertEquals(0, |
1456 self.RunStep(BumpUpVersion, LKGRVersionUpToDateBailout, ["--dry_run"])) | 1492 self.RunStep(BumpUpVersion, LKGRVersionUpToDateBailout, ["--dry_run"])) |
1457 | 1493 |
1458 # Test that we bail out if the last version is already newer than the lkgr's | 1494 # Test that we bail out if the last version is already newer than the lkgr's |
1459 # version. | 1495 # version. |
1460 def testBumpUpVersionBailout3(self): | 1496 def testBumpUpVersionBailout3(self): |
1461 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() | 1497 TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() |
1462 self._state["lkgr"] = "lkgr_hash" | 1498 self._state["lkgr"] = "lkgr_hash" |
1463 self._state["lkgr_version"] = "3.22.4.0" | 1499 self._state["lkgr_version"] = "3.22.4.0" |
1464 self._state["latest_version"] = "3.22.5.0" | 1500 self._state["latest_version"] = "3.22.5.0" |
1465 | 1501 |
1466 self.Expect([ | 1502 self.Expect([ |
1467 Cmd("git diff --name-only lkgr_hash lkgr_hash^", ""), | 1503 Cmd("git diff --name-only lkgr_hash lkgr_hash^", ""), |
1468 ]) | 1504 ]) |
1469 | 1505 |
1470 self.assertEquals(1, | 1506 self.assertEquals(0, |
1471 self.RunStep(BumpUpVersion, LKGRVersionUpToDateBailout, ["--dry_run"])) | 1507 self.RunStep(BumpUpVersion, LKGRVersionUpToDateBailout, ["--dry_run"])) |
1472 | 1508 |
1473 | 1509 |
1474 class SystemTest(unittest.TestCase): | 1510 class SystemTest(unittest.TestCase): |
1475 def testReload(self): | 1511 def testReload(self): |
1476 step = MakeStep(step_class=PrepareChangeLog, number=0, state={}, config={}, | 1512 step = MakeStep(step_class=PrepareChangeLog, number=0, state={}, config={}, |
1477 side_effect_handler=DEFAULT_SIDE_EFFECT_HANDLER) | 1513 side_effect_handler=DEFAULT_SIDE_EFFECT_HANDLER) |
1478 body = step.Reload( | 1514 body = step.Reload( |
1479 """------------------------------------------------------------------------ | 1515 """------------------------------------------------------------------------ |
1480 r17997 | machenbach@chromium.org | 2013-11-22 11:04:04 +0100 (...) | 6 lines | 1516 r17997 | machenbach@chromium.org | 2013-11-22 11:04:04 +0100 (...) | 6 lines |
1481 | 1517 |
1482 Prepare push to trunk. Now working on version 3.23.11. | 1518 Prepare push to trunk. Now working on version 3.23.11. |
1483 | 1519 |
1484 R=danno@chromium.org | 1520 R=danno@chromium.org |
1485 | 1521 |
1486 Review URL: https://codereview.chromium.org/83173002 | 1522 Review URL: https://codereview.chromium.org/83173002 |
1487 | 1523 |
1488 ------------------------------------------------------------------------""") | 1524 ------------------------------------------------------------------------""") |
1489 self.assertEquals( | 1525 self.assertEquals( |
1490 """Prepare push to trunk. Now working on version 3.23.11. | 1526 """Prepare push to trunk. Now working on version 3.23.11. |
1491 | 1527 |
1492 R=danno@chromium.org | 1528 R=danno@chromium.org |
1493 | 1529 |
1494 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) | 1530 Committed: https://code.google.com/p/v8/source/detail?r=17997""", body) |
OLD | NEW |