def test_simple(self): root = self.root run_node = root.find_node(self.d) conf, configure = prepare_configure(run_node, BENTO_INFO, ConfigureYakuContext) run_command_in_context(conf, configure)
def test_simple(self): bscript = """\ from bento.commands import hooks PRE = False POST = False @hooks.pre_configure def pre_configure(ctx): global PRE PRE = True @hooks.post_configure def post_configure(ctx): global POST POST = True """ bento = """\ Name: foo Version: 1.0 HookFile: bscript """ create_fake_package_from_bento_infos(self.top_node, {"bento.info": bento}, {"bscript": bscript}) conf, configure = prepare_configure(self.top_node, bento, ConfigureContext) bscript = self.top_node.search("bscript") m = create_hook_module(bscript.abspath()) self.assertEqual(len(find_pre_hooks([m], "configure")), 1) self.assertEqual(len(find_post_hooks([m], "configure")), 1)
def _run_configure_and_build(self, bento_info, install_prefix): top_node = self.top_node create_fake_package_from_bento_info(top_node, bento_info) context = GlobalContext(None) options = PackageOptions.from_string(bento_info) context.register_package_options(options) cmd_argv = [ "--prefix=%s" % install_prefix, "--exec-prefix=%s" % install_prefix ] conf, configure = prepare_configure(top_node, bento_info, ConfigureYakuContext, cmd_argv) context.register_command("configure", configure) options_context = OptionsContext.from_command(configure) if not context.is_options_context_registered("configure"): context.register_options_context("configure", options_context) context.save_command_argv("configure", cmd_argv) run_command_in_context(conf, configure) bld, build = prepare_build(top_node, bento_info) run_command_in_context(bld, build) return context, conf, configure, bld, build
def _run_configure_and_build(self, bento_info, install_prefix): top_node = self.top_node create_fake_package_from_bento_info(top_node, bento_info) context = GlobalContext(None) options = PackageOptions.from_string(bento_info) context.register_package_options(options) cmd_argv = ["--prefix=%s" % install_prefix, "--exec-prefix=%s" % install_prefix] conf, configure = prepare_configure(top_node, bento_info, ConfigureYakuContext, cmd_argv) context.register_command("configure", configure) options_context = OptionsContext.from_command(configure) if not context.is_options_context_registered("configure"): context.register_options_context("configure", options_context) context.save_command_argv("configure", cmd_argv) run_command_in_context(conf, configure) bld, build = prepare_build(top_node, bento_info) run_command_in_context(bld, build) return context, conf, configure, bld, build
def test_simple(self): root = self.root run_node = root.find_node(self.d) conf, configure = prepare_configure(run_node, BENTO_INFO, ConfigureYakuContext) configure.run(conf) configure.shutdown(conf) conf.shutdown()
def _run_configure(self, bentos, bscripts=None, configure_argv=None, build_argv=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) run_command_in_context(conf, configure) bld, build = prepare_build(top_node, bentos["bento.info"], self._build_context, build_argv) return conf, configure, bld, build
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_installed_sections(self, bento_infos, r_sections): create_fake_package_from_bento_infos(self.top_node, bento_infos) conf, configure = prepare_configure(self.run_node, bento_infos["bento.info"]) run_command_in_context(conf, configure) bld, build = prepare_build(self.top_node, bento_infos["bento.info"]) run_command_in_context(bld, build) sections = bld.section_writer.sections self.assertEqual(comparable_installed_sections(sections), comparable_installed_sections(r_sections))
def test_flags(self): bento_info = """\ Name: foo Flag: floupi Description: some floupi flag Default: true """ run_node = self.root.find_node(self.d) conf, configure = prepare_configure(run_node, bento_info, ConfigureYakuContext, ["--floupi=false"]) run_command_in_context(conf, configure)
def test_simple_distutils(self): top_node = self.top_node create_fake_package_from_bento_info(top_node, BENTO_INFO_WITH_EXT) conf, configure = prepare_configure(top_node, BENTO_INFO_WITH_EXT, DistutilsConfigureContext) run_command_in_context(conf, configure) build = BuildCommand() opts = OptionsContext.from_command(build) bld = DistutilsBuildContext(None, [], opts, conf.pkg, top_node) run_command_in_context(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: Packages: fubar """ bscript = """\ from bento.commands import hooks @hooks.pre_configure def configure(ctx): packages = ctx.local_pkg.packages ctx.local_node.make_node("test").write(str(packages)) """ 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) try: hook = top_node.search("bar/bscript") m = create_hook_module(hook.abspath()) for hook in find_pre_hooks([m], "configure"): conf.pre_recurse(root.find_dir(hook.local_dir)) try: hook(conf) finally: conf.post_recurse() test = top_node.search("bar/test") if test: self.assertEqual(test.read(), "['fubar']") else: self.fail("test dummy not found") finally: configure.finish(conf) conf.finish()
def test_simple_yaku(self): top_node = self.top_node create_fake_package_from_bento_info(top_node, BENTO_INFO_WITH_EXT) conf, configure = prepare_configure(top_node, BENTO_INFO_WITH_EXT, ConfigureYakuContext) configure.run(conf) conf.shutdown() build = BuildCommand() opts = OptionsContext.from_command(build) bld = BuildYakuContext([], opts, conf.pkg, top_node) build.run(bld)
def _test_installed_sections(self, bento_info, r_sections): create_fake_package_from_bento_info(self.top_node, bento_info) conf, configure = prepare_configure(self.run_node, bento_info) run_command_in_context(conf, configure) bld, build = prepare_build(self.top_node, bento_info) run_command_in_context(bld, build) sections = bld.section_writer.sections self.assertEqual(comparable_installed_sections(sections), comparable_installed_sections(r_sections))
def test_simple(self): root = self.root top_node = root.find_node(self.d) create_fake_package_from_bento_info(top_node, BENTO_INFO) conf, configure = prepare_configure(top_node, BENTO_INFO, ConfigureYakuContext) configure.run(conf) conf.shutdown() build = BuildCommand() opts = OptionsContext.from_command(build) bld = BuildYakuContext([], opts, conf.pkg, top_node) build.run(bld)
def _test_installed_sections(self, bento_info, r_sections): create_fake_package_from_bento_info(self.top_node, bento_info) conf, configure = prepare_configure(self.run_node, bento_info) configure.run(conf) conf.shutdown() bld, build = prepare_build(self.top_node, conf.pkg, conf.package_options) build.run(bld) bld.shutdown() sections = bld.section_writer.sections self.assertEqual(comparable_installed_sections(sections), comparable_installed_sections(r_sections))
def test_hook(self): root = self.root top_node = self.top_node bento_info = """\ Name: foo HookFile: bar/bscript Recurse: bar """ bento_info2 = """\ Library: Packages: fubar """ bscript = """\ from bento.commands import hooks @hooks.pre_configure def configure(ctx): packages = ctx.local_pkg.packages ctx.local_node.make_node("test").write(str(packages)) """ 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) try: hook = top_node.search("bar/bscript") m = create_hook_module(hook.abspath()) for hook in find_pre_hooks([m], "configure"): conf.pre_recurse(root.find_dir(hook.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") finally: configure.finish(conf) conf.finish()
def _run_configure_and_build(self, bento_info, install_prefix): top_node = self.top_node create_fake_package_from_bento_info(top_node, bento_info) cmd_argv = ["--prefix=%s" % install_prefix, "--exec-prefix=%s" % install_prefix] conf, configure = prepare_configure(top_node, bento_info, ConfigureYakuContext, cmd_argv) configure.run(conf) conf.shutdown() bld, build = prepare_build(top_node, conf.pkg, conf.package_options) build.run(bld) build.shutdown(bld) return conf, configure, bld, build
def test_simple_waf(self): from bento.commands.extras.waf import ConfigureWafContext, BuildWafContext, make_stream_logger, register_options top_node = self.top_node create_fake_package_from_bento_info(top_node, BENTO_INFO_WITH_EXT) conf, configure = prepare_configure(top_node, BENTO_INFO_WITH_EXT, ConfigureWafContext) configure.run(conf) conf.shutdown() build = BuildCommand() # opts = OptionsContext.from_command(build) opts = prepare_options("build", build, BuildWafContext) bld = BuildWafContext(None, [], opts, conf.pkg, top_node) bld.waf_context.logger = make_stream_logger("build", cStringIO()) build.run(bld)
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)
def _test_run(self, bento_info): top_node = self.top_node create_fake_package_from_bento_info(top_node, bento_info) install_dir = tempfile.mkdtemp() cmd_argv = ["--prefix=%s" % install_dir, "--exec-prefix=%s" % install_dir] conf, configure = prepare_configure(top_node, bento_info, ConfigureYakuContext, cmd_argv) configure.run(conf) conf.shutdown() bld, build = prepare_build(top_node, conf.pkg) build.run(bld) build.shutdown(bld) install = InstallCommand() opts = OptionsContext.from_command(install) inst = CmdContext(["--list-files"], opts, conf.pkg, top_node) try: install.run(inst) finally: shutil.rmtree(install_dir)