本文整理汇总了Python中pants.base.build_graph.BuildGraph.inject_spec_closure方法的典型用法代码示例。如果您正苦于以下问题:Python BuildGraph.inject_spec_closure方法的具体用法?Python BuildGraph.inject_spec_closure怎么用?Python BuildGraph.inject_spec_closure使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pants.base.build_graph.BuildGraph
的用法示例。
在下文中一共展示了BuildGraph.inject_spec_closure方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: BaseTest
# 需要导入模块: from pants.base.build_graph import BuildGraph [as 别名]
# 或者: from pants.base.build_graph.BuildGraph import inject_spec_closure [as 别名]
#.........这里部分代码省略.........
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)
def config(self, overrides=''):
"""Returns a config valid for the test build root."""
if overrides:
with temporary_file() as fp:
fp.write(overrides)
fp.close()
with environment_as(PANTS_CONFIG_OVERRIDE=fp.name):
return Config.load()
else:
return Config.load()
def create_options(self, **kwargs):
return dict(**kwargs)
def context(self, config='', options=None, target_roots=None, **kwargs):
return create_context(config=self.config(overrides=config),
options=self.create_options(**(options or {})),
target_roots=target_roots,
build_graph=self.build_graph,
build_file_parser=self.build_file_parser,
address_mapper=self.address_mapper,
**kwargs)
def tearDown(self):
BuildRoot().reset()
SourceRoot.reset()
safe_rmtree(self.build_root)
BuildFile.clear_cache()
def target(self, spec):
"""Resolves the given target address to a Target object.
address: The BUILD target address to resolve.
Returns the corresponding Target or else None if the address does not point to a defined Target.
"""
if self.build_graph.get_target_from_spec(spec) is None:
self.build_graph.inject_spec_closure(spec)
return self.build_graph.get_target_from_spec(spec)
def create_files(self, path, files):
"""Writes to a file under the buildroot with contents same as file name.
path: The relative path to the file from the build root.
files: List of file names.
"""
for f in files:
self.create_file(os.path.join(path, f), contents=f)
def create_library(self, path, target_type, name, sources, **kwargs):
"""Creates a library target of given type at the BUILD file at path with sources
path: The relative path to the BUILD file from the build root.
target_type: valid pants target type.
name: Name of the library target.
sources: List of source file at the path relative to path.
**kwargs: Optional attributes that can be set for any library target.
Currently it includes support for resources and java_sources
"""
self.create_files(path, sources)
self.add_to_build_file(path, dedent('''
%(target_type)s(name='%(name)s',
sources=%(sources)s,
%(resources)s
%(java_sources)s
)
''' % dict(target_type=target_type,
name=name,
sources=repr(sources or []),
resources=('resources=[pants("%s")],' % kwargs.get('resources')
if kwargs.has_key('resources') else ''),
java_sources=('java_sources=[%s]'
% ','.join(map(lambda str_target: 'pants("%s")' % str_target,
kwargs.get('java_sources')))
if kwargs.has_key('java_sources') else ''),
)))
return self.target('%s:%s' % (path, name))
def create_resources(self, path, name, *sources):
return self.create_library(path, 'resources', name, sources)
@contextmanager
def workspace(self, *buildfiles):
with temporary_dir() as root_dir:
with BuildRoot().temporary(root_dir):
with pushd(root_dir):
for buildfile in buildfiles:
touch(os.path.join(root_dir, buildfile))
yield os.path.realpath(root_dir)
示例2: BaseTest
# 需要导入模块: from pants.base.build_graph import BuildGraph [as 别名]
# 或者: from pants.base.build_graph.BuildGraph import inject_spec_closure [as 别名]
#.........这里部分代码省略.........
# Now override with any caller-specified values.
# TODO(benjy): Get rid of the new_options arg, and require tests to call set_new_options.
for scope, opts in new_options.items():
for key, val in opts.items():
new_option_values[scope][key] = val
for scope, opts in self.new_options.items():
for key, val in opts.items():
new_option_values[scope][key] = val
return create_context(config=self.config(overrides=config),
new_options = new_option_values,
target_roots=target_roots,
build_graph=self.build_graph,
build_file_parser=self.build_file_parser,
address_mapper=self.address_mapper,
**kwargs)
def tearDown(self):
BuildRoot().reset()
SourceRoot.reset()
safe_rmtree(self.build_root)
BuildFile.clear_cache()
def target(self, spec):
"""Resolves the given target address to a Target object.
address: The BUILD target address to resolve.
Returns the corresponding Target or else None if the address does not point to a defined Target.
"""
if self.build_graph.get_target_from_spec(spec) is None:
self.build_graph.inject_spec_closure(spec)
return self.build_graph.get_target_from_spec(spec)
def create_files(self, path, files):
"""Writes to a file under the buildroot with contents same as file name.
path: The relative path to the file from the build root.
files: List of file names.
"""
for f in files:
self.create_file(os.path.join(path, f), contents=f)
def create_library(self, path, target_type, name, sources=None, **kwargs):
"""Creates a library target of given type at the BUILD file at path with sources
path: The relative path to the BUILD file from the build root.
target_type: valid pants target type.
name: Name of the library target.
sources: List of source file at the path relative to path.
**kwargs: Optional attributes that can be set for any library target.
Currently it includes support for resources, java_sources, provides
and dependencies.
"""
if sources:
self.create_files(path, sources)
self.add_to_build_file(path, dedent('''
%(target_type)s(name='%(name)s',
%(sources)s
%(resources)s
%(java_sources)s
%(provides)s
%(dependencies)s
)