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

Side by Side Diff: scripts/slave/recipe_modules/chromium_tests/api.py

Issue 1187863002: Use simpler "analyze" logic for chromium_trybot recipe on non-Windows (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: rebase Created 5 years, 6 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
« no previous file with comments | « no previous file | scripts/slave/recipes/chromium_trybot.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import contextlib 5 import contextlib
6 import copy 6 import copy
7 import json 7 import json
8 8
9 from infra.libs.infra_types import freeze, thaw 9 from infra.libs.infra_types import freeze, thaw
10 from recipe_engine import recipe_api 10 from recipe_engine import recipe_api
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 raise 501 raise
502 if has_failing_swarming_tests: 502 if has_failing_swarming_tests:
503 self.m.isolate.isolate_tests(self.m.chromium.output_dir, 503 self.m.isolate.isolate_tests(self.m.chromium.output_dir,
504 verbose=True) 504 verbose=True)
505 505
506 with self.wrap_chromium_tests(mastername): 506 with self.wrap_chromium_tests(mastername):
507 return self.m.test_utils.determine_new_failures(api, tests, 507 return self.m.test_utils.determine_new_failures(api, tests,
508 deapply_patch_fn) 508 deapply_patch_fn)
509 509
510 def analyze(self, affected_files, exes, compile_targets, config_file_name, 510 def analyze(self, affected_files, exes, compile_targets, config_file_name,
511 additional_names=None): 511 additional_names=None, legacy_postprocess=True):
512 """Runs "analyze" step to determine targets affected by the patch. 512 """Runs "analyze" step to determine targets affected by the patch.
513 513
514 Returns a tuple of: 514 Returns a tuple of:
515 - boolean, indicating whether patch requires compile 515 - boolean, indicating whether patch requires compile
516 - list of matching exes (see filter recipe module) 516 - list of matching exes (see filter recipe module)
517 - list of targets that need to be compiled (see filter recipe module)""" 517 - list of targets that need to be compiled (see filter recipe module)"""
518 518
519 original_exes = exes[:] 519 original_exes = exes[:]
520 original_compile_targets = compile_targets[:] 520 original_compile_targets = compile_targets[:]
521 521
522 if additional_names is None: 522 if additional_names is None:
523 additional_names = ['chromium'] 523 additional_names = ['chromium']
524 524
525 use_mb = (self.m.chromium.c.project_generator.tool == 'mb') 525 use_mb = (self.m.chromium.c.project_generator.tool == 'mb')
526 build_output_dir = '//out/%s' % self.m.chromium.c.build_config_fs 526 build_output_dir = '//out/%s' % self.m.chromium.c.build_config_fs
527 self.m.filter.does_patch_require_compile( 527 self.m.filter.does_patch_require_compile(
528 affected_files, 528 affected_files,
529 exes=exes, 529 exes=exes,
530 compile_targets=compile_targets, 530 compile_targets=compile_targets,
531 additional_names=additional_names, 531 additional_names=additional_names,
532 config_file_name=config_file_name, 532 config_file_name=config_file_name,
533 use_mb=use_mb, 533 use_mb=use_mb,
534 build_output_dir=build_output_dir, 534 build_output_dir=build_output_dir,
535 cros_board=self.m.chromium.c.TARGET_CROS_BOARD) 535 cros_board=self.m.chromium.c.TARGET_CROS_BOARD)
536 536
537 if not self.m.filter.result: 537 if not self.m.filter.result:
538 # Patch does not require compile. 538 # Patch does not require compile.
539 return False, [], [] 539 return False, [], []
540 540
541 if 'all' in compile_targets: 541 if legacy_postprocess:
542 if 'all' in compile_targets:
543 compile_targets = self.m.filter.compile_targets
544 else:
545 compile_targets = list(set(compile_targets) &
546 set(self.m.filter.compile_targets))
547 # Always add |matching_exes|. They will be covered by |compile_targets|,
548 # but adding |matching_exes| makes determing if conditional tests are
549 # necessary easier. For example, if we didn't do this we could end up
550 # with chrome_run as a compile_target and not chrome (since chrome_run
551 # depends upon chrome). This results in not picking up
552 # NaclIntegrationTest as it depends upon chrome not chrome_run.
553 compile_targets = list(set(self.m.filter.matching_exes + compile_targets))
554 else:
542 compile_targets = self.m.filter.compile_targets 555 compile_targets = self.m.filter.compile_targets
543 else:
544 compile_targets = list(set(compile_targets) &
545 set(self.m.filter.compile_targets))
546 # Always add |matching_exes|. They will be covered by |compile_targets|,
547 # but adding |matching_exes| makes determing if conditional tests are
548 # necessary easier. For example, if we didn't do this we could end up
549 # with chrome_run as a compile_target and not chrome (since chrome_run
550 # depends upon chrome). This results in not picking up
551 # NaclIntegrationTest as it depends upon chrome not chrome_run.
552 compile_targets = list(set(self.m.filter.matching_exes + compile_targets))
553 556
554 # Add crash_service to compile_targets. This is done after filtering compile 557 # Add crash_service to compile_targets. This is done after filtering compile
555 # targets out because crash_service should always be there on windows. 558 # targets out because crash_service should always be there on windows.
556 # TODO(akuegel): Need to solve this in a better way. crbug.com/478053 559 # TODO(akuegel): Need to solve this in a better way. crbug.com/478053
557 if (self.m.platform.is_win and compile_targets and 560 if (self.m.platform.is_win and compile_targets and
558 'crash_service' not in compile_targets and not use_mb): 561 'crash_service' not in compile_targets and not use_mb):
559 compile_targets.extend(['crash_service']) 562 compile_targets.extend(['crash_service'])
560 563
561 # Emit more detailed output useful for debugging. 564 # Emit more detailed output useful for debugging.
562 analyze_details = { 565 analyze_details = {
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 def get_compile_targets_for_scripts(self): 681 def get_compile_targets_for_scripts(self):
679 return self.m.python( 682 return self.m.python(
680 name='get compile targets for scripts', 683 name='get compile targets for scripts',
681 script=self.m.path['checkout'].join( 684 script=self.m.path['checkout'].join(
682 'testing', 'scripts', 'get_compile_targets.py'), 685 'testing', 'scripts', 'get_compile_targets.py'),
683 args=[ 686 args=[
684 '--output', self.m.json.output(), 687 '--output', self.m.json.output(),
685 '--', 688 '--',
686 ] + self.get_common_args_for_scripts(), 689 ] + self.get_common_args_for_scripts(),
687 step_test_data=lambda: self.m.json.test_api.output({})) 690 step_test_data=lambda: self.m.json.test_api.output({}))
OLDNEW
« no previous file with comments | « no previous file | scripts/slave/recipes/chromium_trybot.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698