| OLD | NEW |
| 1 # Copyright (C) 2010 Google Inc. All rights reserved. | 1 # Copyright (C) 2010 Google Inc. All rights reserved. |
| 2 # | 2 # |
| 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 disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 import codecs | 29 import codecs |
| 30 import os | 30 import os |
| 31 import shutil | 31 import shutil |
| 32 import tempfile | 32 import tempfile |
| 33 import unittest2 as unittest | 33 import unittest2 as unittest |
| 34 | 34 |
| 35 from .checkout import Checkout | 35 from .checkout import Checkout |
| 36 from .changelog import ChangeLogEntry | 36 from .changelog import ChangeLogEntry |
| 37 from .scm import CommitMessage, SCMDetector | 37 from .scm import CommitMessage, SCMDetector |
| 38 from .scm.scm_mock import MockSCM | 38 from .scm.scm_mock import MockSCM |
| 39 from webkitpy.common.webkit_finder import WebKitFinder |
| 39 from webkitpy.common.system.executive import Executive, ScriptError | 40 from webkitpy.common.system.executive import Executive, ScriptError |
| 40 from webkitpy.common.system.filesystem import FileSystem # FIXME: This should n
ot be needed. | 41 from webkitpy.common.system.filesystem import FileSystem # FIXME: This should n
ot be needed. |
| 41 from webkitpy.common.system.filesystem_mock import MockFileSystem | 42 from webkitpy.common.system.filesystem_mock import MockFileSystem |
| 42 from webkitpy.common.system.executive_mock import MockExecutive | 43 from webkitpy.common.system.executive_mock import MockExecutive |
| 43 from webkitpy.common.system.outputcapture import OutputCapture | 44 from webkitpy.common.system.outputcapture import OutputCapture |
| 44 from webkitpy.thirdparty.mock import Mock | 45 from webkitpy.thirdparty.mock import Mock |
| 45 | 46 |
| 46 | 47 |
| 47 _changelog1entry1 = u"""2010-03-25 Tor Arne Vestb\u00f8 <vestbo@webkit.org> | 48 _changelog1entry1 = u"""2010-03-25 Tor Arne Vestb\u00f8 <vestbo@webkit.org> |
| 48 | 49 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 * Path/To/Complicated/File: Added. | 96 * Path/To/Complicated/File: Added. |
| 96 """ | 97 """ |
| 97 | 98 |
| 98 def setUp(self): | 99 def setUp(self): |
| 99 # FIXME: This should not need to touch the filesystem, however | 100 # FIXME: This should not need to touch the filesystem, however |
| 100 # ChangeLog is difficult to mock at current. | 101 # ChangeLog is difficult to mock at current. |
| 101 self.filesystem = FileSystem() | 102 self.filesystem = FileSystem() |
| 102 self.temp_dir = str(self.filesystem.mkdtemp(suffix="changelogs")) | 103 self.temp_dir = str(self.filesystem.mkdtemp(suffix="changelogs")) |
| 103 self.old_cwd = self.filesystem.getcwd() | 104 self.old_cwd = self.filesystem.getcwd() |
| 104 self.filesystem.chdir(self.temp_dir) | 105 self.filesystem.chdir(self.temp_dir) |
| 106 self.webkit_base = WebKitFinder(self.filesystem).webkit_base() |
| 105 | 107 |
| 106 # Trick commit-log-editor into thinking we're in a Subversion working co
py so it won't | 108 # Trick commit-log-editor into thinking we're in a Subversion working co
py so it won't |
| 107 # complain about not being able to figure out what SCM is in use. | 109 # complain about not being able to figure out what SCM is in use. |
| 108 # FIXME: VCSTools.pm is no longer so easily fooled. It logs because "sv
n info" doesn't | 110 # FIXME: VCSTools.pm is no longer so easily fooled. It logs because "sv
n info" doesn't |
| 109 # treat a bare .svn directory being part of an svn checkout. | 111 # treat a bare .svn directory being part of an svn checkout. |
| 110 self.filesystem.maybe_make_directory(".svn") | 112 self.filesystem.maybe_make_directory(".svn") |
| 111 | 113 |
| 112 self.changelogs = map(self.filesystem.abspath, (self.filesystem.join("To
ols", "ChangeLog"), self.filesystem.join("LayoutTests", "ChangeLog"))) | 114 self.changelogs = map(self.filesystem.abspath, (self.filesystem.join("To
ols", "ChangeLog"), self.filesystem.join("LayoutTests", "ChangeLog"))) |
| 113 for path, contents in zip(self.changelogs, (_changelog1, _changelog2)): | 115 for path, contents in zip(self.changelogs, (_changelog1, _changelog2)): |
| 114 self.filesystem.maybe_make_directory(self.filesystem.dirname(path)) | 116 self.filesystem.maybe_make_directory(self.filesystem.dirname(path)) |
| 115 self.filesystem.write_text_file(path, contents) | 117 self.filesystem.write_text_file(path, contents) |
| 116 | 118 |
| 117 def tearDown(self): | 119 def tearDown(self): |
| 118 self.filesystem.rmtree(self.temp_dir) | 120 self.filesystem.rmtree(self.temp_dir) |
| 119 self.filesystem.chdir(self.old_cwd) | 121 self.filesystem.chdir(self.old_cwd) |
| 120 | 122 |
| 121 def test_commit_message_for_this_commit(self): | 123 def test_commit_message_for_this_commit(self): |
| 122 executive = Executive() | 124 executive = Executive() |
| 123 | 125 |
| 124 def mock_run(*args, **kwargs): | 126 def mock_run(*args, **kwargs): |
| 125 # Note that we use a real Executive here, not a MockExecutive, so we
can test that we're | 127 # Note that we use a real Executive here, not a MockExecutive, so we
can test that we're |
| 126 # invoking commit-log-editor correctly. | 128 # invoking commit-log-editor correctly. |
| 127 env = os.environ.copy() | 129 env = os.environ.copy() |
| 128 env['CHANGE_LOG_EMAIL_ADDRESS'] = 'vestbo@webkit.org' | 130 env['CHANGE_LOG_EMAIL_ADDRESS'] = 'vestbo@webkit.org' |
| 129 kwargs['env'] = env | 131 kwargs['env'] = env |
| 130 return executive.run_command(*args, **kwargs) | 132 return executive.run_command(*args, **kwargs) |
| 131 | 133 |
| 132 detector = SCMDetector(self.filesystem, executive) | 134 detector = SCMDetector(self.filesystem, executive) |
| 133 real_scm = detector.detect_scm_system(self.old_cwd) | 135 real_scm = detector.detect_scm_system(self.webkit_base) |
| 134 | 136 |
| 135 mock_scm = MockSCM() | 137 mock_scm = MockSCM() |
| 136 mock_scm.run = mock_run | 138 mock_scm.run = mock_run |
| 137 mock_scm.script_path = real_scm.script_path | 139 mock_scm.script_path = real_scm.script_path |
| 138 | 140 |
| 139 checkout = Checkout(mock_scm) | 141 checkout = Checkout(mock_scm) |
| 140 checkout.modified_changelogs = lambda git_commit, changed_files=None: se
lf.changelogs | 142 checkout.modified_changelogs = lambda git_commit, changed_files=None: se
lf.changelogs |
| 141 commit_message = checkout.commit_message_for_this_commit(git_commit=None
, return_stderr=True) | 143 commit_message = checkout.commit_message_for_this_commit(git_commit=None
, return_stderr=True) |
| 142 # Throw away the first line - a warning about unknown VCS root. | 144 # Throw away the first line - a warning about unknown VCS root. |
| 143 commit_message.message_lines = commit_message.message_lines[1:] | 145 commit_message.message_lines = commit_message.message_lines[1:] |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 | 237 |
| 236 def test_apply_patch(self): | 238 def test_apply_patch(self): |
| 237 checkout = self._make_checkout() | 239 checkout = self._make_checkout() |
| 238 checkout._executive = MockExecutive(should_log=True) | 240 checkout._executive = MockExecutive(should_log=True) |
| 239 checkout._scm.script_path = lambda script: script | 241 checkout._scm.script_path = lambda script: script |
| 240 mock_patch = Mock() | 242 mock_patch = Mock() |
| 241 mock_patch.contents = lambda: "foo" | 243 mock_patch.contents = lambda: "foo" |
| 242 mock_patch.reviewer = lambda: None | 244 mock_patch.reviewer = lambda: None |
| 243 expected_logs = "MOCK run_command: ['svn-apply', '--force'], cwd=/mock-c
heckout, input=foo\n" | 245 expected_logs = "MOCK run_command: ['svn-apply', '--force'], cwd=/mock-c
heckout, input=foo\n" |
| 244 OutputCapture().assert_outputs(self, checkout.apply_patch, [mock_patch],
expected_logs=expected_logs) | 246 OutputCapture().assert_outputs(self, checkout.apply_patch, [mock_patch],
expected_logs=expected_logs) |
| OLD | NEW |