Example #1
0
    def test_transitive_closure_spec(self):
        with self.workspace('./BUILD', 'a/BUILD', 'a/b/BUILD') as root_dir:
            with open(os.path.join(root_dir, './BUILD'), 'w') as build:
                build.write(
                    dedent('''
          fake(name="foo",
               dependencies=[
                 'a',
               ])
        '''))

            with open(os.path.join(root_dir, 'a/BUILD'), 'w') as build:
                build.write(
                    dedent('''
          fake(name="a",
               dependencies=[
                 'a/b:bat',
               ])
        '''))

            with open(os.path.join(root_dir, 'a/b/BUILD'), 'w') as build:
                build.write(dedent('''
          fake(name="bat")
        '''))

            build_configuration = BuildConfiguration()
            build_configuration.register_target_alias('fake', Target)
            parser = BuildFileParser(build_configuration, root_dir=root_dir)
            build_graph = BuildGraph(self.address_mapper)
            parser.inject_spec_closure_into_build_graph(':foo', build_graph)
            self.assertEqual(
                len(build_graph.dependencies_of(
                    SyntheticAddress.parse(':foo'))), 1)
Example #2
0
    def setUp(self):
        super(BaseTest, self).setUp()
        Goal.clear()
        Subsystem.reset()

        self.real_build_root = BuildRoot().path

        self.build_root = os.path.realpath(mkdtemp(suffix='_BUILD_ROOT'))
        self.addCleanup(safe_rmtree, self.build_root)

        self.pants_workdir = os.path.join(self.build_root, '.pants.d')
        safe_mkdir(self.pants_workdir)

        self.options = defaultdict(dict)  # scope -> key-value mapping.
        self.options[''] = {
            'pants_workdir': self.pants_workdir,
            'pants_supportdir': os.path.join(self.build_root, 'build-support'),
            'pants_distdir': os.path.join(self.build_root, 'dist'),
            'pants_configdir': os.path.join(self.build_root, 'config'),
            'cache_key_gen_version': '0-test',
        }

        BuildRoot().path = self.build_root
        self.addCleanup(BuildRoot().reset)

        # We need a pants.ini, even if empty. get_buildroot() uses its presence.
        self.create_file('pants.ini')
        self._build_configuration = BuildConfiguration()
        self._build_configuration.register_aliases(self.alias_groups)
        self.build_file_parser = BuildFileParser(self._build_configuration,
                                                 self.build_root)
        self.address_mapper = BuildFileAddressMapper(self.build_file_parser,
                                                     FilesystemBuildFile)
        self.build_graph = BuildGraph(address_mapper=self.address_mapper)
Example #3
0
def load_plugins_and_backends(plugins=None, backends=None):
  """Load named plugins and source backends

  :param list<str> plugins: Plugins to load (see `load_plugins`).
  :param list<str> backends: Source backends to load (see `load_build_configuration_from_source`).
  """
  build_configuration = BuildConfiguration()
  load_plugins(build_configuration, plugins or [])
  load_build_configuration_from_source(build_configuration, additional_backends=backends or [])
  return build_configuration
Example #4
0
def load_plugins_and_backends(plugins, working_set, backends):
    """Load named plugins and source backends

  :param list<str> plugins: Plugins to load (see `load_plugins`).
  :param WorkingSet working_set: A pkg_resources.WorkingSet to load plugins from.
  :param list<str> backends: Source backends to load (see `load_build_configuration_from_source`).
  """
    build_configuration = BuildConfiguration()
    load_plugins(build_configuration, plugins or [], working_set)
    load_build_configuration_from_source(build_configuration,
                                         additional_backends=backends or [])
    return build_configuration
Example #5
0
    def setUp(self):
        Goal.clear()
        self.real_build_root = BuildRoot().path
        self.build_root = os.path.realpath(mkdtemp(suffix='_BUILD_ROOT'))
        BuildRoot().path = self.build_root

        self.create_file('pants.ini')
        build_configuration = BuildConfiguration()
        build_configuration.register_aliases(self.alias_groups)
        self.build_file_parser = BuildFileParser(build_configuration,
                                                 self.build_root)
        self.address_mapper = BuildFileAddressMapper(self.build_file_parser)
        self.build_graph = BuildGraph(address_mapper=self.address_mapper)
Example #6
0
    def setUp(self):
        super(BaseTest, self).setUp()
        Goal.clear()
        self.real_build_root = BuildRoot().path
        self.build_root = os.path.realpath(mkdtemp(suffix='_BUILD_ROOT'))
        self.new_options = defaultdict(dict)  # scope -> key-value mapping.
        self.new_options[''] = {
            'pants_workdir': os.path.join(self.build_root, '.pants.d'),
            'pants_supportdir': os.path.join(self.build_root, 'build-support'),
            'pants_distdir': os.path.join(self.build_root, 'dist')
        }
        BuildRoot().path = self.build_root

        self.create_file('pants.ini')
        build_configuration = BuildConfiguration()
        build_configuration.register_aliases(self.alias_groups)
        self.build_file_parser = BuildFileParser(build_configuration,
                                                 self.build_root)
        self.address_mapper = BuildFileAddressMapper(self.build_file_parser)
        self.build_graph = BuildGraph(address_mapper=self.address_mapper)
Example #7
0
def load_build_configuration_from_source(additional_backends=None):
    """Installs pants backend packages to provide targets and helper functions to BUILD files and
  goals to the cli.

  :param additional_backends: An optional list of additional packages to load backends from.
  :returns: a new :class:``pants.base.build_configuration.BuildConfiguration``.
  :raises: :class:``pants.base.exceptions.BuildConfigurationError`` if there is a problem loading
    the build configuration.
  """
    build_configuration = BuildConfiguration()
    backend_packages = [
        'pants.backend.authentication', 'pants.backend.core',
        'pants.backend.python', 'pants.backend.jvm', 'pants.backend.codegen',
        'pants.backend.maven_layout', 'pants.backend.android'
    ]

    for backend_package in OrderedSet(backend_packages +
                                      (additional_backends or [])):
        load_backend(build_configuration, backend_package)

    return build_configuration
Example #8
0
 def setUp(self):
   self.build_configuration = BuildConfiguration()
 def setUp(self):
     self.build_configuration = BuildConfiguration()
     self.working_set = WorkingSet()
     for entry in working_set.entries:
         self.working_set.add_entry(entry)