Esempio n. 1
0
    def prepare_task(self,
                     config=None,
                     args=None,
                     targets=None,
                     build_graph=None,
                     build_file_parser=None,
                     address_mapper=None,
                     console_outstream=None,
                     workspace=None):
        """Prepares a Task for execution.

    task_type: The class of the Task to create.
    config: An optional string representing the contents of a pants.ini config.
    args: optional list of command line flags, these should be prefixed with '--test-'.
    targets: optional list of Target objects passed on the command line.

    Returns a new Task ready to execute.
    """

        task_type = self.task_type()
        assert issubclass(
            task_type,
            Task), 'task_type must be a Task subclass, got %s' % task_type

        config = create_config(config or '')
        workdir = os.path.join(config.getdefault('pants_workdir'), 'test',
                               task_type.__name__)

        bootstrap_options = OptionsBootstrapper().get_bootstrap_options()

        options = Options(env={},
                          config=config,
                          known_scopes=['', 'test'],
                          args=args or [])
        # A lot of basic code uses these options, so always register them.
        register_bootstrap_options(options.register_global)

        # We need to wrap register_global (can't set .bootstrap attr on the bound instancemethod).
        def register_global_wrapper(*args, **kwargs):
            return options.register_global(*args, **kwargs)

        register_global_wrapper.bootstrap = bootstrap_options.for_global_scope(
        )
        register_global_options(register_global_wrapper)

        task_type.options_scope = 'test'
        task_type.register_options_on_scope(options)

        run_tracker = create_run_tracker()

        context = Context(config,
                          options,
                          run_tracker,
                          targets or [],
                          build_graph=build_graph,
                          build_file_parser=build_file_parser,
                          address_mapper=address_mapper,
                          console_outstream=console_outstream,
                          workspace=workspace)
        return task_type(context, workdir)
Esempio n. 2
0
def prepare_task(task_type, config=None, args=None, targets=None, **kwargs):
  """Prepares a Task for execution.

  task_type: The class of the Task to create.
  config: An optional string representing the contents of a pants.ini config.
  args: optional list of command line flags, these should be prefixed with '--test-'.
  targets: optional list of Target objects passed on the command line.
  **kwargs: Any additional args the Task subclass constructor takes beyond the required context.

  Returns a new Task ready to execute.
  """

  assert issubclass(task_type, Task), 'task_type must be a Task subclass, got %s' % task_type

  config = create_config(config or '')

  parser = OptionParser()
  option_group = OptionGroup(parser, 'test')
  mkflag = Mkflag('test')
  task_type.setup_parser(option_group, args, mkflag)
  options, _ = parser.parse_args(args or [])

  run_tracker = create_run_tracker()

  context = Context(config, options, run_tracker, targets or [])
  return task_type(context, **kwargs)
Esempio n. 3
0
  def prepare_task(self,
                   config=None,
                   args=None,
                   targets=None,
                   build_graph=None,
                   build_file_parser=None,
                   address_mapper=None,
                   console_outstream=None,
                   workspace=None):
    """Prepares a Task for execution.

    task_type: The class of the Task to create.
    config: An optional string representing the contents of a pants.ini config.
    args: optional list of command line flags, these should be prefixed with '--test-'.
    targets: optional list of Target objects passed on the command line.

    Returns a new Task ready to execute.
    """

    task_type = self.task_type()
    assert issubclass(task_type, Task), 'task_type must be a Task subclass, got %s' % task_type

    config = create_config(config or '')
    workdir = os.path.join(config.getdefault('pants_workdir'), 'test', task_type.__name__)

    bootstrap_options = OptionsBootstrapper().get_bootstrap_options()

    options = Options(env={}, config=config, known_scopes=['', 'test'], args=args or [])
    # A lot of basic code uses these options, so always register them.
    register_bootstrap_options(options.register_global)

    # We need to wrap register_global (can't set .bootstrap attr on the bound instancemethod).
    def register_global_wrapper(*args, **kwargs):
      return options.register_global(*args, **kwargs)

    register_global_wrapper.bootstrap = bootstrap_options.for_global_scope()
    register_global_options(register_global_wrapper)

    task_type.options_scope = 'test'
    task_type.register_options_on_scope(options)

    run_tracker = create_run_tracker()

    context = Context(config,
                      options,
                      run_tracker,
                      targets or [],
                      build_graph=build_graph,
                      build_file_parser=build_file_parser,
                      address_mapper=address_mapper,
                      console_outstream=console_outstream,
                      workspace=workspace)
    return task_type(context, workdir)
Esempio n. 4
0
  def prepare_task(self,
                   config=None,
                   args=None,
                   targets=None,
                   build_graph=None,
                   build_file_parser=None,
                   address_mapper=None,
                   console_outstream=None,
                   workspace=None):
    """Prepares a Task for execution.

    task_type: The class of the Task to create.
    config: An optional string representing the contents of a pants.ini config.
    args: optional list of command line flags, these should be prefixed with '--test-'.
    targets: optional list of Target objects passed on the command line.

    Returns a new Task ready to execute.
    """

    task_type = self.task_type()
    assert issubclass(task_type, Task), 'task_type must be a Task subclass, got %s' % task_type

    config = create_config(config or '')
    workdir = os.path.join(config.getdefault('pants_workdir'), 'test', task_type.__name__)

    parser = OptionParser()
    option_group = OptionGroup(parser, 'test')
    mkflag = Mkflag('test')

    new_options = Options(env={}, config=config, known_scopes=['', 'test'],
                          args=args or [], legacy_parser=parser)

    task_type.options_scope = 'test'
    task_type.register_options_on_scope(new_options)
    task_type.setup_parser(option_group, args, mkflag)
    old_options, _ = parser.parse_args(args or [])

    run_tracker = create_run_tracker()

    context = Context(config,
                      old_options,
                      new_options,
                      run_tracker,
                      targets or [],
                      build_graph=build_graph,
                      build_file_parser=build_file_parser,
                      address_mapper=address_mapper,
                      console_outstream=console_outstream,
                      workspace=workspace)
    return task_type(context, workdir)
Esempio n. 5
0
def prepare_task(task_type,
                 config=None,
                 args=None,
                 targets=None,
                 build_graph=None,
                 build_file_parser=None,
                 address_mapper=None,
                 console_outstream=None,
                 workspace=None):
    """Prepares a Task for execution.

  task_type: The class of the Task to create.
  config: An optional string representing the contents of a pants.ini config.
  args: optional list of command line flags, these should be prefixed with '--test-'.
  targets: optional list of Target objects passed on the command line.

  Returns a new Task ready to execute.
  """

    assert issubclass(
        task_type,
        Task), 'task_type must be a Task subclass, got %s' % task_type

    config = create_config(config or '')
    workdir = os.path.join(config.getdefault('pants_workdir'), 'test',
                           task_type.__name__)

    parser = OptionParser()
    option_group = OptionGroup(parser, 'test')
    mkflag = Mkflag('test')
    task_type.setup_parser(option_group, args, mkflag)
    options, _ = parser.parse_args(args or [])

    run_tracker = create_run_tracker()

    context = Context(config,
                      options,
                      run_tracker,
                      targets or [],
                      build_graph=build_graph,
                      build_file_parser=build_file_parser,
                      address_mapper=address_mapper,
                      console_outstream=console_outstream,
                      workspace=workspace)
    return task_type(context, workdir)