def _create_contexts(self, bentos, bscripts=None): top_node = self.top_node create_fake_package_from_bento_infos(top_node, bentos, bscripts) conf, configure = prepare_configure(top_node, bentos["bento.info"], self._configure_context) configure.run(conf) conf.shutdown() bld, build = prepare_build(top_node, conf.pkg, context_klass=self._build_context) return conf, configure, bld, build
def test_hook(self): root = self.root top_node = self.top_node bento_info = """\ Name: foo HookFile: bar/bscript Recurse: bar """ bento_info2 = """\ Library: Modules: fubar """ bscript = """\ from bento.commands import hooks @hooks.pre_configure def configure(ctx): py_modules = ctx.local_pkg.py_modules ctx.local_node.make_node("test").write(str(py_modules)) """ bentos = {"bento.info": bento_info, os.path.join("bar", "bento.info"): bento_info2} bscripts = {os.path.join("bar", "bscript"): bscript} create_fake_package_from_bento_infos(top_node, bentos, bscripts) conf, configure = prepare_configure(self.run_node, bento_info, ConfigureYakuContext) hook = top_node.search("bar/bscript") m = create_hook_module(hook.abspath()) for hook, local_dir, help_bypass in get_pre_hooks("configure"): conf.pre_recurse(root.find_dir(local_dir)) try: hook(conf) finally: conf.post_recurse() test = top_node.search("bar/test") if test: self.failUnlessEqual(test.read(), "['fubar']") else: self.fail("test dummy not found")
def test_simple(self): root = self.root top_node = self.top_node run_node = self.run_node bento_info = """\ Name: foo Recurse: bar """ bento_info2 = """\ Recurse: foo Library: Modules: fubar Extension: _foo Sources: foo.c """ bento_info3 = """\ Library: Modules: foufoufou Packages: sub2 """ bentos = {"bento.info": bento_info, os.path.join("bar", "bento.info"): bento_info2, os.path.join("bar", "foo", "bento.info"): bento_info3} create_fake_package_from_bento_infos(run_node, bentos) conf, configure = prepare_configure(run_node, bento_info, ConfigureYakuContext) configure.run(conf) conf.shutdown() build = BuildCommand() opts = OptionsContext.from_command(build) cmd_argv = [] bld = BuildYakuContext(cmd_argv, opts, conf.pkg, run_node) build.run(bld)