Index: tools/isolate/trace_inputs_test.py |
diff --git a/tools/isolate/trace_inputs_test.py b/tools/isolate/trace_inputs_test.py |
index d1887a182eff49035f07c8a6f39f1d956c9db6ec..e1c391f2017096c35dc693edbab2b3f3ed17e726 100755 |
--- a/tools/isolate/trace_inputs_test.py |
+++ b/tools/isolate/trace_inputs_test.py |
@@ -18,9 +18,15 @@ VERBOSE = False |
class CalledProcessError(subprocess.CalledProcessError): |
"""Makes 2.6 version act like 2.7""" |
- def __init__(self, returncode, cmd, output): |
+ def __init__(self, returncode, cmd, output, cwd): |
super(CalledProcessError, self).__init__(returncode, cmd) |
self.output = output |
+ self.cwd = cwd |
+ |
+ def __str__(self): |
+ return super(CalledProcessError, self).__str__() + ( |
+ '\n' |
+ 'cwd=%s\n%s') % (self.cwd, self.output) |
class TraceInputs(unittest.TestCase): |
@@ -33,19 +39,24 @@ class TraceInputs(unittest.TestCase): |
def _execute(self, args): |
cmd = [ |
- sys.executable, os.path.join(ROOT_DIR, 'trace_inputs.py'), |
- '--log', self.log, |
- '--gyp', os.path.join('data', 'trace_inputs'), |
- '--product', '.', # Not tested. |
- '--root-dir', ROOT_DIR, |
+ sys.executable, os.path.join(ROOT_DIR, 'trace_inputs.py'), |
+ '--log', self.log, |
+ '--root-dir', ROOT_DIR, |
] + args |
p = subprocess.Popen( |
cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=ROOT_DIR) |
out = p.communicate()[0] |
if p.returncode: |
- raise CalledProcessError(p.returncode, cmd, out) |
+ raise CalledProcessError(p.returncode, cmd, out, ROOT_DIR) |
return out |
+ @staticmethod |
+ def _gyp(): |
+ return [ |
+ '--gyp', os.path.join('data', 'trace_inputs'), |
+ '--product', '.', # Not tested. |
+ ] |
+ |
def test_trace(self): |
if sys.platform == 'linux2': |
return self._test_trace_linux() |
@@ -53,8 +64,31 @@ class TraceInputs(unittest.TestCase): |
return self._test_trace_mac() |
print 'Unsupported: %s' % sys.platform |
+ def test_trace_gyp(self): |
+ if sys.platform == 'linux2': |
+ return self._test_trace_gyp_linux() |
+ if sys.platform == 'darwin': |
+ return self._test_trace_gyp_mac() |
+ print 'Unsupported: %s' % sys.platform |
+ |
def _test_trace_linux(self): |
- # TODO(maruel): BUG: Note that child.py is missing. |
+ expected_end = [ |
+ "Interesting: 4 reduced to 3", |
+ " data/trace_inputs/", |
+ " trace_inputs.py", |
+ " trace_inputs_test.py", |
+ ] |
+ actual = self._execute(['trace_inputs_test.py', '--child1']).splitlines() |
+ self.assertTrue(actual[0].startswith('Tracing... [')) |
+ self.assertTrue(actual[1].startswith('Loading traces... ')) |
+ self.assertTrue(actual[2].startswith('Total: ')) |
+ self.assertEquals("Non existent: 0", actual[3]) |
+ # Ignore any Unexpected part. |
+ # TODO(maruel): Make sure there is no Unexpected part, even in the case of |
+ # virtualenv usage. |
+ self.assertEquals(expected_end, actual[-len(expected_end):]) |
+ |
+ def _test_trace_gyp_linux(self): |
expected = ( |
"{\n" |
" 'variables': {\n" |
@@ -63,16 +97,32 @@ class TraceInputs(unittest.TestCase): |
" '<(DEPTH)/trace_inputs_test.py',\n" |
" ],\n" |
" 'isolate_dirs': [\n" |
+ " './',\n" |
" ],\n" |
" },\n" |
"},\n") |
- gyp = self._execute(['trace_inputs_test.py', '--child1']) |
- self.assertEquals(expected, gyp) |
+ actual = self._execute(self._gyp() + ['trace_inputs_test.py', '--child1']) |
+ self.assertEquals(expected, actual) |
def _test_trace_mac(self): |
# It is annoying in the case of dtrace because it requires root access. |
# TODO(maruel): BUG: Note that child.py is missing. |
expected = ( |
+ "Total: 2\n" |
+ "Non existent: 0\n" |
+ "Interesting: 2 reduced to 2\n" |
+ " trace_inputs.py\n" |
+ " trace_inputs_test.py\n") |
+ actual = self._execute( |
+ ['trace_inputs_test.py', '--child1']).splitlines(True) |
+ self.assertTrue(actual[0].startswith('Tracing... [')) |
+ self.assertTrue(actual[1].startswith('Loading traces... ')) |
+ self.assertEquals(expected, ''.join(actual[2:])) |
+ |
+ def _test_trace_gyp_mac(self): |
+ # It is annoying in the case of dtrace because it requires root access. |
+ # TODO(maruel): BUG: Note that child.py is missing. |
+ expected = ( |
"{\n" |
" 'variables': {\n" |
" 'isolate_files': [\n" |
@@ -83,8 +133,8 @@ class TraceInputs(unittest.TestCase): |
" ],\n" |
" },\n" |
"},\n") |
- gyp = self._execute(['trace_inputs_test.py', '--child1']) |
- self.assertEquals(expected, gyp) |
+ actual = self._execute(self._gyp() + ['trace_inputs_test.py', '--child1']) |
+ self.assertEquals(expected, actual) |
def child1(): |