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

Side by Side Diff: scripts/slave/annotated_run.py

Issue 23889036: Refactor the way that TestApi works so that it is actually useful. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Move gclient test_api to got_revisions cl Created 7 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | scripts/slave/recipe_api.py » ('j') | scripts/slave/recipe_api.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2013 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 """Entry point for fully-annotated builds. 6 """Entry point for fully-annotated builds.
7 7
8 This script is part of the effort to move all builds to annotator-based 8 This script is part of the effort to move all builds to annotator-based
9 systems. Any builder configured to use the AnnotatorFactory.BaseFactory() 9 systems. Any builder configured to use the AnnotatorFactory.BaseFactory()
10 found in scripts/master/factory/annotator_factory.py executes a single 10 found in scripts/master/factory/annotator_factory.py executes a single
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 if recipe_module: 375 if recipe_module:
376 break 376 break
377 else: 377 else:
378 s.step_text('recipe not found') 378 s.step_text('recipe not found')
379 s.step_failure() 379 s.step_failure()
380 return MakeStepsRetval(2, None) 380 return MakeStepsRetval(2, None)
381 381
382 properties = factory_properties.copy() 382 properties = factory_properties.copy()
383 properties.update(build_properties) 383 properties.update(build_properties)
384 stream.emit('Running recipe with %s' % (properties,)) 384 stream.emit('Running recipe with %s' % (properties,))
385 steps = recipe_module.GenSteps(api(recipe_module.DEPS, 385 steps = recipe_module.GenSteps(api(MODULE_DIRS,
386 mod_dirs=MODULE_DIRS, 386 recipe_module.DEPS,
387 properties=properties, 387 properties=properties,
388 step_history=step_history)) 388 step_history=step_history))
389 assert inspect.isgenerator(steps) 389 assert inspect.isgenerator(steps)
390 390
391 # Execute annotator.py with steps if specified. 391 # Execute annotator.py with steps if specified.
392 # annotator.py handles the seeding, execution, and annotation of each step. 392 # annotator.py handles the seeding, execution, and annotation of each step.
393 failed = False 393 failed = False
394 394
395 test_mode = test_data is not None 395 test_mode = test_data is not None
396 396
397 for step in ensure_sequence_of_steps(steps): 397 for step in ensure_sequence_of_steps(steps):
398 if failed and not step.get('always_run', False): 398 if failed and not step.get('always_run', False):
399 step_result = StepData(step, None) 399 step_result = StepData(step, None)
400 step_history[step['name']] = step_result 400 step_history[step['name']] = step_result
401 continue 401 continue
402 402
403 test_data_item = test_data.pop(step['name'], {}) if test_mode else None 403 test_data_item = None
404 mock_fn = step.pop('mock_fn', None)
405 if test_mode:
406 test_data_item = mock_fn() if mock_fn else {}
407 test_data_item.update(test_data.pop(step['name'], {}))
408
404 placeholders = render_step(step, test_data_item) 409 placeholders = render_step(step, test_data_item)
405 410
406 assert step['name'] not in step_history, ( 411 assert step['name'] not in step_history, (
407 'Step "%s" is already in step_history!' % step['name']) 412 'Step "%s" is already in step_history!' % step['name'])
408 413
409 callback = step_callback(step, step_history, placeholders, test_data_item) 414 callback = step_callback(step, step_history, placeholders, test_data_item)
410 415
411 if not test_mode: 416 if not test_mode:
412 step_result = annotator.run_step( 417 step_result = annotator.run_step(
413 stream, followup_fn=callback, **step) 418 stream, followup_fn=callback, **step)
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 456
452 def shell_main(argv): 457 def shell_main(argv):
453 if UpdateScripts(): 458 if UpdateScripts():
454 return subprocess.call([sys.executable] + argv) 459 return subprocess.call([sys.executable] + argv)
455 else: 460 else:
456 return main(argv) 461 return main(argv)
457 462
458 463
459 if __name__ == '__main__': 464 if __name__ == '__main__':
460 sys.exit(shell_main(sys.argv)) 465 sys.exit(shell_main(sys.argv))
OLDNEW
« no previous file with comments | « no previous file | scripts/slave/recipe_api.py » ('j') | scripts/slave/recipe_api.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698