| Index: third_party/WebKit/Tools/Scripts/webkitpy/common/system/executive_mock.py
|
| diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/common/system/executive_mock.py b/third_party/WebKit/Tools/Scripts/webkitpy/common/system/executive_mock.py
|
| index 2b910bc262af3cb7d78a54ffe97ef4a6d846d082..8e902fd97d456179e6573a0b81a5c79806efe6fb 100644
|
| --- a/third_party/WebKit/Tools/Scripts/webkitpy/common/system/executive_mock.py
|
| +++ b/third_party/WebKit/Tools/Scripts/webkitpy/common/system/executive_mock.py
|
| @@ -26,6 +26,7 @@
|
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| +import collections
|
| import logging
|
| import os
|
| import StringIO
|
| @@ -60,6 +61,9 @@ class MockProcess(object):
|
| return
|
|
|
|
|
| +MockCall = collections.namedtuple('MockCall', ('args', 'env'))
|
| +
|
| +
|
| class MockExecutive(object):
|
| PIPE = 'MOCK PIPE'
|
| STDOUT = 'MOCK STDOUT'
|
| @@ -82,7 +86,15 @@ class MockExecutive(object):
|
| self._exception = exception
|
| self._run_command_fn = run_command_fn
|
| self._proc = None
|
| - self.calls = []
|
| + self.full_calls = []
|
| +
|
| + def _append_call(self, args, env=None):
|
| + if env:
|
| + env = env.copy()
|
| + self.full_calls.append(MockCall(
|
| + args=args,
|
| + env=env.copy() if env is not None else None,
|
| + ))
|
|
|
| def check_running_pid(self, pid):
|
| return pid in self._running_pids.values()
|
| @@ -113,7 +125,7 @@ class MockExecutive(object):
|
| decode_output=False,
|
| env=None,
|
| debug_logging=False):
|
| - self.calls.append(args)
|
| + self._append_call(args, env=env)
|
|
|
| assert isinstance(args, list) or isinstance(args, tuple)
|
|
|
| @@ -160,7 +172,7 @@ class MockExecutive(object):
|
|
|
| def popen(self, args, cwd=None, env=None, **_):
|
| assert all(isinstance(arg, basestring) for arg in args)
|
| - self.calls.append(args)
|
| + self._append_call(args, env=env)
|
| if self._should_log:
|
| cwd_string = ''
|
| if cwd:
|
| @@ -175,21 +187,21 @@ class MockExecutive(object):
|
|
|
| def call(self, args, **_):
|
| assert all(isinstance(arg, basestring) for arg in args)
|
| - self.calls.append(args)
|
| + self._append_call(args)
|
| _log.info('Mock call: %s', args)
|
|
|
| def run_in_parallel(self, commands):
|
| assert len(commands)
|
|
|
| - num_previous_calls = len(self.calls)
|
| + num_previous_calls = len(self.full_calls)
|
| command_outputs = []
|
| for cmd_line, cwd in commands:
|
| assert all(isinstance(arg, basestring) for arg in cmd_line)
|
| command_outputs.append([0, self.run_command(cmd_line, cwd=cwd), ''])
|
|
|
| - new_calls = self.calls[num_previous_calls:]
|
| - self.calls = self.calls[:num_previous_calls]
|
| - self.calls.append(new_calls)
|
| + new_calls = self.full_calls[num_previous_calls:]
|
| + self.full_calls = self.full_calls[:num_previous_calls]
|
| + self.full_calls.append(new_calls)
|
| return command_outputs
|
|
|
| def map(self, thunk, arglist, processes=None):
|
| @@ -198,6 +210,20 @@ class MockExecutive(object):
|
| def process_dump(self):
|
| return []
|
|
|
| + @property
|
| + def calls(self):
|
| + # TODO(crbug.com/718456): Make self.full_calls always be an array of
|
| + # arrays of MockCalls, rather than a union type, and possibly remove
|
| + # this property in favor of direct "full_calls" access in unit tests.
|
| + def get_args(v):
|
| + if isinstance(v, list):
|
| + return [get_args(e) for e in v]
|
| + elif isinstance(v, MockCall):
|
| + return v.args
|
| + else:
|
| + return TypeError('Unknown full_calls type: %s' % (type(v).__name__,))
|
| + return get_args(self.full_calls)
|
| +
|
|
|
| def mock_git_commands(vals, strict=False):
|
| def run_fn(args):
|
|
|