Index: tools/isolate/trace_inputs_test.py |
diff --git a/tools/isolate/trace_inputs_test.py b/tools/isolate/trace_inputs_test.py |
index 7f579cb817c4b9a91b842f4c0bf02fb71f14afd1..04761a9393337dcb38b865c33bbba6935f303c41 100755 |
--- a/tools/isolate/trace_inputs_test.py |
+++ b/tools/isolate/trace_inputs_test.py |
@@ -94,6 +94,16 @@ class TraceInputs(unittest.TestCase): |
"}\n") |
self._test(value, expected) |
+ def test_process_quoted_arguments(self): |
+ test_cases = ( |
+ ('"foo"', ['foo']), |
+ ('"foo", "bar"', ['foo', 'bar']), |
+ ('"foo"..., "bar"', ['foo', 'bar']), |
+ ('"foo", "bar"...', ['foo', 'bar']), |
+ ) |
+ for actual, expected in test_cases: |
+ self.assertEquals(expected, trace_inputs.process_quoted_arguments(actual)) |
+ |
def join_norm(*args): |
"""Joins and normalizes path in a single step.""" |
@@ -115,12 +125,13 @@ if trace_inputs.get_flavor() == 'linux': |
return context.to_results().flatten() |
def _test_lines(self, lines, initial_cwd, files, command=None): |
+ filepath = join_norm(initial_cwd, '../out/unittests') |
command = command or ['../out/unittests'] |
expected = { |
'root': { |
'children': [], |
- 'command': None, |
- 'executable': None, |
+ 'command': command, |
+ 'executable': filepath, |
'files': files, |
'initial_cwd': initial_cwd, |
'pid': self._ROOT_PID, |
@@ -234,6 +245,9 @@ if trace_inputs.get_flavor() == 'linux': |
'clone(child_stack=0, flags=CLONE_CHILD_CLEARTID' |
'|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f5350f829d0) = %d' % |
self._GRAND_CHILD_PID), |
+ (self._GRAND_CHILD_PID, |
+ 'execve("../out/unittests", ' |
+ '["../out/unittests"...], [/* 44 vars */]) = 0'), |
(self._ROOT_PID, 'chdir("/home_foo_bar_user/path2") = 0'), |
(self._GRAND_CHILD_PID, |
'open("random.txt", O_RDONLY) = 76'), |
@@ -245,36 +259,42 @@ if trace_inputs.get_flavor() == 'linux': |
'children': [ |
{ |
'children': [], |
- 'command': None, |
- 'executable': None, |
+ 'command': ['../out/unittests'], |
+ 'executable': '/home_foo_bar_user/out/unittests', |
'files': [ |
{ |
+ 'path': u'/home_foo_bar_user/out/unittests', |
+ 'size': -1, |
+ }, |
+ { |
'path': u'/home_foo_bar_user/path1/random.txt', |
'size': -1, |
}, |
], |
- 'initial_cwd': '/home_foo_bar_user/path1', |
+ 'initial_cwd': u'/home_foo_bar_user/path1', |
'pid': self._GRAND_CHILD_PID, |
}, |
], |
+ # clone does not carry over the command and executable so it is |
+ # clear if an execve() call was done or not. |
'command': None, |
'executable': None, |
# This is important, since no execve call was done, it didn't |
# touch the executable file. |
'files': [], |
- 'initial_cwd': ROOT_DIR, |
+ 'initial_cwd': unicode(ROOT_DIR), |
'pid': self._CHILD_PID, |
}, |
], |
- 'command': None, |
- 'executable': None, |
+ 'command': ['../out/unittests'], |
+ 'executable': join_norm(ROOT_DIR, '../out/unittests'), |
'files': [ |
{ |
'path': join_norm(ROOT_DIR, '../out/unittests'), |
'size': -1, |
}, |
], |
- 'initial_cwd': ROOT_DIR, |
+ 'initial_cwd': unicode(ROOT_DIR), |
'pid': self._ROOT_PID, |
}, |
} |