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)
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)