def mock_find_valid_field_sets( _: TargetsToValidFieldSetsRequest, ) -> TargetsToValidFieldSets: if not valid_targets: return TargetsToValidFieldSets({}) return TargetsToValidFieldSets({ tgt_with_origin: [field_set.create(tgt_with_origin)] for tgt_with_origin in targets })
def single_target_run( self, *, console: MockConsole, program_text: bytes, address_spec: str, ) -> Run: workspace = Workspace(self.scheduler) interactive_runner = InteractiveRunner(self.scheduler) class TestRunFieldSet(RunFieldSet): required_fields = () class TestBinaryTarget(Target): alias = "binary" core_fields = () address = Address.parse(address_spec) target = TestBinaryTarget({}, address=address) target_with_origin = TargetWithOrigin( target, AddressLiteralSpec(address.spec_path, address.target_name)) field_set = TestRunFieldSet.create(target) res = run_rule_with_mocks( run, rule_args=[ create_goal_subsystem(RunSubsystem, args=[]), create_subsystem(GlobalOptions, pants_workdir=self.pants_workdir), console, interactive_runner, workspace, BuildRoot(), ], mock_gets=[ MockGet( product_type=TargetsToValidFieldSets, subject_type=TargetsToValidFieldSetsRequest, mock=lambda _: TargetsToValidFieldSets( {target_with_origin: [field_set]}), ), MockGet( product_type=RunRequest, subject_type=TestRunFieldSet, mock=lambda _: self.create_mock_run_request(program_text), ), ], ) return cast(Run, res)
def find_valid_field_sets( request: TargetsToValidFieldSetsRequest, targets_with_origins: TargetsWithOrigins, union_membership: UnionMembership, registered_target_types: RegisteredTargetTypes, ) -> TargetsToValidFieldSets: field_set_types: Iterable[ Union[Type[FieldSet], Type[FieldSetWithOrigin]]] = union_membership.union_rules[ request.field_set_superclass] targets_to_valid_field_sets = {} for tgt_with_origin in targets_with_origins: valid_field_sets = [ (field_set_type.create(tgt_with_origin) if issubclass( field_set_type, FieldSetWithOrigin) else field_set_type.create( tgt_with_origin.target)) for field_set_type in field_set_types if field_set_type.is_valid(tgt_with_origin.target) ] if valid_field_sets: targets_to_valid_field_sets[tgt_with_origin] = valid_field_sets if request.error_if_no_valid_targets and not targets_to_valid_field_sets: raise NoValidTargetsException.create_from_field_sets( TargetsWithOrigins(targets_with_origins), field_set_types=field_set_types, goal_description=request.goal_description, union_membership=union_membership, registered_target_types=registered_target_types, ) result = TargetsToValidFieldSets(targets_to_valid_field_sets) if not request.expect_single_field_set: return result if len(result.targets) > 1: raise TooManyTargetsException( result.targets, goal_description=request.goal_description) if len(result.field_sets) > 1: raise AmbiguousImplementationsException( result.targets[0], result.field_sets, goal_description=request.goal_description) return result