OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 import cStringIO | 6 import cStringIO |
7 import hashlib | 7 import hashlib |
8 import json | 8 import json |
9 import logging | 9 import logging |
10 import os | 10 import os |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 v[u'timestamp'] = int(round(filestats.st_mtime)) | 112 v[u'timestamp'] = int(round(filestats.st_mtime)) |
113 | 113 |
114 if self.LEVEL >= isolate.WITH_HASH: | 114 if self.LEVEL >= isolate.WITH_HASH: |
115 for filename in files: | 115 for filename in files: |
116 # Calculate our hash. | 116 # Calculate our hash. |
117 h = hashlib.sha1() | 117 h = hashlib.sha1() |
118 h.update(open(os.path.join(root_dir, filename), 'rb').read()) | 118 h.update(open(os.path.join(root_dir, filename), 'rb').read()) |
119 files[filename][u'sha-1'] = unicode(h.hexdigest()) | 119 files[filename][u'sha-1'] = unicode(h.hexdigest()) |
120 return files | 120 return files |
121 | 121 |
122 def _expected_result(self, args, read_only): | 122 def _expected_result(self, args, read_only, extra_vars=None): |
123 """Verifies self.result contains the expected data.""" | 123 """Verifies self.result contains the expected data.""" |
| 124 flavor = isolate.trace_inputs.get_flavor() |
124 expected = { | 125 expected = { |
125 u'files': self._gen_files(read_only), | 126 u'files': self._gen_files(read_only), |
| 127 u'read_only': read_only, |
126 u'relative_cwd': unicode(RELATIVE_CWD[self.case()]), | 128 u'relative_cwd': unicode(RELATIVE_CWD[self.case()]), |
127 u'read_only': read_only, | 129 u'resultdir': os.path.dirname(self.result), |
| 130 u'resultfile': self.result, |
| 131 u'variables': { |
| 132 u'EXECUTABLE_SUFFIX': '.exe' if flavor == 'win' else '', |
| 133 u'OS': unicode(flavor), |
| 134 }, |
128 } | 135 } |
| 136 expected['variables'].update(extra_vars or {}) |
129 if args: | 137 if args: |
130 expected[u'command'] = [u'python'] + [unicode(x) for x in args] | 138 expected[u'command'] = [u'python'] + [unicode(x) for x in args] |
131 else: | 139 else: |
132 expected[u'command'] = [] | 140 expected[u'command'] = [] |
133 | 141 |
134 self.assertEquals(expected, json.load(open(self.result, 'rb'))) | 142 self.assertEquals(expected, json.load(open(self.result, 'rb'))) |
135 return expected | 143 return expected |
136 | 144 |
137 def _expect_no_result(self): | 145 def _expect_no_result(self): |
138 self.assertFalse(os.path.exists(self.result)) | 146 self.assertFalse(os.path.exists(self.result)) |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 self._expected_result([], None) | 273 self._expected_result([], None) |
266 | 274 |
267 def test_touch_root(self): | 275 def test_touch_root(self): |
268 self._execute('check', 'touch_root.isolate', [], False) | 276 self._execute('check', 'touch_root.isolate', [], False) |
269 self._expect_no_tree() | 277 self._expect_no_tree() |
270 self._expected_result(['touch_root.py'], None) | 278 self._expected_result(['touch_root.py'], None) |
271 | 279 |
272 def test_with_flag(self): | 280 def test_with_flag(self): |
273 self._execute('check', 'with_flag.isolate', ['-V', 'FLAG', 'gyp'], False) | 281 self._execute('check', 'with_flag.isolate', ['-V', 'FLAG', 'gyp'], False) |
274 self._expect_no_tree() | 282 self._expect_no_tree() |
275 self._expected_result(['with_flag.py', 'gyp'], None) | 283 self._expected_result(['with_flag.py', 'gyp'], None, {u'FLAG': u'gyp'}) |
276 | 284 |
277 | 285 |
278 class Isolate_hashtable(IsolateBase): | 286 class Isolate_hashtable(IsolateBase): |
279 LEVEL = isolate.WITH_HASH | 287 LEVEL = isolate.WITH_HASH |
280 | 288 |
281 def _expected_hash_tree(self): | 289 def _expected_hash_tree(self): |
282 """Verifies the files written in the temporary directory.""" | 290 """Verifies the files written in the temporary directory.""" |
283 expected = [v['sha-1'] for v in self._gen_files(False).itervalues()] | 291 expected = [v['sha-1'] for v in self._gen_files(False).itervalues()] |
284 self.assertEquals(sorted(expected), self._result_tree()) | 292 self.assertEquals(sorted(expected), self._result_tree()) |
285 | 293 |
(...skipping 27 matching lines...) Expand all Loading... |
313 | 321 |
314 def test_touch_root(self): | 322 def test_touch_root(self): |
315 self._execute('hashtable', 'touch_root.isolate', [], False) | 323 self._execute('hashtable', 'touch_root.isolate', [], False) |
316 self._expected_hash_tree() | 324 self._expected_hash_tree() |
317 self._expected_result(['touch_root.py'], None) | 325 self._expected_result(['touch_root.py'], None) |
318 | 326 |
319 def test_with_flag(self): | 327 def test_with_flag(self): |
320 self._execute( | 328 self._execute( |
321 'hashtable', 'with_flag.isolate', ['-V', 'FLAG', 'gyp'], False) | 329 'hashtable', 'with_flag.isolate', ['-V', 'FLAG', 'gyp'], False) |
322 self._expected_hash_tree() | 330 self._expected_hash_tree() |
323 self._expected_result(['with_flag.py', 'gyp'], None) | 331 self._expected_result(['with_flag.py', 'gyp'], None, {u'FLAG': u'gyp'}) |
324 | 332 |
325 | 333 |
326 class Isolate_remap(IsolateBase): | 334 class Isolate_remap(IsolateBase): |
327 LEVEL = isolate.STATS_ONLY | 335 LEVEL = isolate.STATS_ONLY |
328 | 336 |
329 def test_fail(self): | 337 def test_fail(self): |
330 self._execute('remap', 'fail.isolate', [], False) | 338 self._execute('remap', 'fail.isolate', [], False) |
331 self._expected_tree() | 339 self._expected_tree() |
332 self._expected_result(['fail.py'], None) | 340 self._expected_result(['fail.py'], None) |
333 | 341 |
(...skipping 21 matching lines...) Expand all Loading... |
355 self._expected_result([], None) | 363 self._expected_result([], None) |
356 | 364 |
357 def test_touch_root(self): | 365 def test_touch_root(self): |
358 self._execute('remap', 'touch_root.isolate', [], False) | 366 self._execute('remap', 'touch_root.isolate', [], False) |
359 self._expected_tree() | 367 self._expected_tree() |
360 self._expected_result(['touch_root.py'], None) | 368 self._expected_result(['touch_root.py'], None) |
361 | 369 |
362 def test_with_flag(self): | 370 def test_with_flag(self): |
363 self._execute('remap', 'with_flag.isolate', ['-V', 'FLAG', 'gyp'], False) | 371 self._execute('remap', 'with_flag.isolate', ['-V', 'FLAG', 'gyp'], False) |
364 self._expected_tree() | 372 self._expected_tree() |
365 self._expected_result(['with_flag.py', 'gyp'], None) | 373 self._expected_result(['with_flag.py', 'gyp'], None, {u'FLAG': u'gyp'}) |
366 | 374 |
367 | 375 |
368 class Isolate_run(IsolateBase): | 376 class Isolate_run(IsolateBase): |
369 LEVEL = isolate.STATS_ONLY | 377 LEVEL = isolate.STATS_ONLY |
370 | 378 |
371 def _expect_empty_tree(self): | 379 def _expect_empty_tree(self): |
372 self.assertEquals([], self._result_tree()) | 380 self.assertEquals([], self._result_tree()) |
373 | 381 |
374 def test_fail(self): | 382 def test_fail(self): |
375 try: | 383 try: |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
409 | 417 |
410 def test_touch_root(self): | 418 def test_touch_root(self): |
411 self._execute('run', 'touch_root.isolate', [], False) | 419 self._execute('run', 'touch_root.isolate', [], False) |
412 self._expect_empty_tree() | 420 self._expect_empty_tree() |
413 self._expected_result(['touch_root.py'], None) | 421 self._expected_result(['touch_root.py'], None) |
414 | 422 |
415 def test_with_flag(self): | 423 def test_with_flag(self): |
416 self._execute('run', 'with_flag.isolate', ['-V', 'FLAG', 'run'], False) | 424 self._execute('run', 'with_flag.isolate', ['-V', 'FLAG', 'run'], False) |
417 # Not sure about the empty tree, should be deleted. | 425 # Not sure about the empty tree, should be deleted. |
418 self._expect_empty_tree() | 426 self._expect_empty_tree() |
419 self._expected_result(['with_flag.py', 'run'], None) | 427 self._expected_result(['with_flag.py', 'run'], None, {u'FLAG': u'run'}) |
420 | 428 |
421 | 429 |
422 class Isolate_trace(IsolateBase): | 430 class Isolate_trace(IsolateBase): |
423 LEVEL = isolate.STATS_ONLY | 431 LEVEL = isolate.STATS_ONLY |
424 | 432 |
425 @staticmethod | 433 @staticmethod |
426 def _to_string(values): | 434 def _to_string(values): |
427 buf = cStringIO.StringIO() | 435 buf = cStringIO.StringIO() |
428 isolate.trace_inputs.pretty_print(values, buf) | 436 isolate.trace_inputs.pretty_print(values, buf) |
429 return buf.getvalue() | 437 return buf.getvalue() |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 }, | 497 }, |
490 }], | 498 }], |
491 ], | 499 ], |
492 } | 500 } |
493 self.assertEquals(self._to_string(expected), out) | 501 self.assertEquals(self._to_string(expected), out) |
494 | 502 |
495 def test_with_flag(self): | 503 def test_with_flag(self): |
496 out = self._execute( | 504 out = self._execute( |
497 'trace', 'with_flag.isolate', ['-V', 'FLAG', 'trace'], True) | 505 'trace', 'with_flag.isolate', ['-V', 'FLAG', 'trace'], True) |
498 self._expect_no_tree() | 506 self._expect_no_tree() |
499 self._expected_result(['with_flag.py', 'trace'], None) | 507 self._expected_result(['with_flag.py', 'trace'], None, {u'FLAG': u'trace'}) |
500 expected = { | 508 expected = { |
501 'conditions': [ | 509 'conditions': [ |
502 ['OS=="%s"' % isolate.trace_inputs.get_flavor(), { | 510 ['OS=="%s"' % isolate.trace_inputs.get_flavor(), { |
503 'variables': { | 511 'variables': { |
504 isolate.trace_inputs.KEY_TRACKED: [ | 512 isolate.trace_inputs.KEY_TRACKED: [ |
505 'with_flag.py', | 513 'with_flag.py', |
506 ], | 514 ], |
507 isolate.trace_inputs.KEY_UNTRACKED: [ | 515 isolate.trace_inputs.KEY_UNTRACKED: [ |
508 'files1/', | 516 'files1/', |
509 ], | 517 ], |
510 }, | 518 }, |
511 }], | 519 }], |
512 ], | 520 ], |
513 } | 521 } |
514 self.assertEquals(self._to_string(expected), out) | 522 self.assertEquals(self._to_string(expected), out) |
515 | 523 |
516 | 524 |
517 | 525 |
518 if __name__ == '__main__': | 526 if __name__ == '__main__': |
519 VERBOSE = '-v' in sys.argv | 527 VERBOSE = '-v' in sys.argv |
520 logging.basicConfig(level=logging.DEBUG if VERBOSE else logging.ERROR) | 528 logging.basicConfig(level=logging.DEBUG if VERBOSE else logging.ERROR) |
521 unittest.main() | 529 unittest.main() |
OLD | NEW |