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..1e701b1664ac21cee0c789c1e73f870733bc3779 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,17 @@ class MockExecutive(object): |
def process_dump(self): |
return [] |
+ @property |
+ def calls(self): |
+ 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) |
Dirk Pranke
2017/05/04 00:05:48
Can't this just be:
@property
def calls(self)
dnj
2017/05/04 00:20:37
No, b/c "run_in_parallel" adds lists of MockCall t
Dirk Pranke
2017/05/04 00:43:46
Ah, I see. That's ugly. Can you add a TODO and/or
dnj
2017/05/04 16:07:54
Done.
|
+ |
def mock_git_commands(vals, strict=False): |
def run_fn(args): |