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

Unified Diff: third_party/WebKit/Tools/Scripts/webkitpy/common/system/executive_mock.py

Issue 2859703002: webkitpy: Override TEMPDIR for Xvfb. (Closed)
Patch Set: track mock call env, add test Created 3 years, 8 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/breakpad/dump_reader_win_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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):
« no previous file with comments | « no previous file | third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/breakpad/dump_reader_win_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698