示例#1
0
文件: test.py 项目: zhengweina/conan
def install_build_and_test(app, conanfile_abs_path, reference, graph_info,
                           remotes, update, build_modes=None, manifest_folder=None,
                           manifest_verify=False, manifest_interactive=False, keep_build=False,
                           test_build_folder=None, recorder=None):
    """
    Installs the reference (specified by the parameters or extracted from the test conanfile)
    and builds the test_package/conanfile.py running the test() method.
    """
    base_folder = os.path.dirname(conanfile_abs_path)
    test_build_folder, delete_after_build = _build_folder(test_build_folder, graph_info.profile_host,
                                                          base_folder)
    rmdir(test_build_folder)
    if build_modes is None:
        build_modes = ["never"]
    try:
        deps_install(app=app,
                     create_reference=reference,
                     ref_or_path=conanfile_abs_path,
                     install_folder=test_build_folder,
                     remotes=remotes,
                     graph_info=graph_info,
                     update=update,
                     build_modes=build_modes,
                     manifest_folder=manifest_folder,
                     manifest_verify=manifest_verify,
                     manifest_interactive=manifest_interactive,
                     keep_build=keep_build,
                     recorder=recorder)
        cmd_build(app, conanfile_abs_path, base_folder, test_build_folder, package_folder=None,
                  install_folder=test_build_folder, test=reference)
    finally:
        if delete_after_build:
            # Required for windows where deleting the cwd is not possible.
            os.chdir(base_folder)
            rmdir(test_build_folder)
def build(self, install_folder, graph, output, app):
    if self._ws_generator == "cmake":
        cmake = ""
        add_subdirs = ""
        # To avoid multiple additions (can happen for build_requires repeated nodes)
        unique_refs = OrderedDict()
        for node in graph.ordered_iterate():
            if node.recipe != RECIPE_EDITABLE:
                continue
            unique_refs[node.ref] = node

        for ref, node in unique_refs.items():
            ws_pkg = self._workspace_packages[ref]
            layout = self._cache.package_layout(ref)
            editable = layout.editable_cpp_info()

            conanfile = node.conanfile
            src = build = None
            if editable:
                build = editable.folder(ref, EditableLayout.BUILD_FOLDER,
                                        conanfile.settings, conanfile.options)
                src = editable.folder(ref, EditableLayout.SOURCE_FOLDER,
                                      conanfile.settings, conanfile.options)

                build = os.path.join(ws_pkg.root_folder,
                                     build).replace("\\", "/")
                src = os.path.join(ws_pkg.root_folder, src).replace("\\", "/")
                package_folder = os.path.join(build,
                                              'package').replace("\\", "/")

                conanFilePath = os.path.join(ws_pkg.root_folder, src,
                                             "conanfile.py").replace(
                                                 "\\", "/")
                #print("install folder "+install_folder)
                #print("build folder "+build)
                #build(graph_manager, hook_manager, conanfile_path, source_folder, build_folder, package_folder, install_folder,
                #test=False, should_configure=True, should_build=True, should_install=True, should_test=True)
                #build(app, conanfile_path, source_folder, build_folder, package_folder, install_folder,
                #test=False, should_configure=True, should_build=True, should_install=True, should_test=True):
                _build.cmd_build(app, conanFilePath, src, build,
                                 install_folder, build)
示例#3
0
def install_build_and_test(app,
                           conanfile_abs_path,
                           reference,
                           graph_info,
                           remotes,
                           update,
                           build_modes=None,
                           manifest_folder=None,
                           manifest_verify=False,
                           manifest_interactive=False,
                           keep_build=False,
                           test_build_folder=None,
                           recorder=None,
                           require_overrides=None):
    """
    Installs the reference (specified by the parameters or extracted from the test conanfile)
    and builds the test_package/conanfile.py running the test() method.
    """
    base_folder = os.path.dirname(conanfile_abs_path)

    # FIXME: Remove this check in 2.0, always use the base_folder
    conanfile = app.loader.load_basic(conanfile_abs_path)
    if hasattr(conanfile, "layout"):
        # Don't use "test_package/build/HASH/" as the build_f
        delete_after_build = False
        test_build_folder = base_folder
    else:
        test_build_folder, delete_after_build = _build_folder(
            test_build_folder, graph_info.profile_host, base_folder)
        rmdir(test_build_folder)
    if build_modes is None:
        build_modes = ["never"]
    try:
        deps_install(
            app=app,
            create_reference=reference,
            ref_or_path=conanfile_abs_path,
            install_folder=test_build_folder,
            base_folder=test_build_folder,
            remotes=remotes,
            graph_info=graph_info,
            update=update,
            build_modes=build_modes,
            manifest_folder=manifest_folder,
            manifest_verify=manifest_verify,
            manifest_interactive=manifest_interactive,
            keep_build=keep_build,
            recorder=recorder,
            require_overrides=require_overrides,
            conanfile_path=os.path.dirname(conanfile_abs_path),
            test=True  # To keep legacy test_package_layout
        )
        cmd_build(app,
                  conanfile_abs_path,
                  test_build_folder,
                  source_folder=base_folder,
                  build_folder=test_build_folder,
                  package_folder=os.path.join(test_build_folder, "package"),
                  install_folder=test_build_folder,
                  test=reference)
    finally:
        if delete_after_build:
            # Required for windows where deleting the cwd is not possible.
            os.chdir(base_folder)
            rmdir(test_build_folder)