def install_rapp_dependencies(self, rapp_names): ''' Install the dependencies for a given list of Rapps. :param rapp_name: A C{list} of ROCON URIs :raises: NonInstallableRappException: Any of the ROCON URIs are not installable ''' deps = self.check_rapp_dependencies(rapp_names) uninstallable_rapps = [k for k, v in deps.items() if v.noninstallable] if uninstallable_rapps: raise NonInstallableRappException(uninstallable_rapps) installable = [d for v in deps.values() for d in v.installable] pkg_deps = list(set(installable)) rosdep_installer = RosdepInstaller(self.installer_context, self.lookup) rosdep_installer.install_resolved(self.default_key, pkg_deps)
def test_RosdepInstaller_install_resolved(): from rosdep2 import create_default_installer_context from rosdep2.lookup import RosdepLookup from rosdep2.installers import RosdepInstaller from rosdep2.platforms.debian import APT_INSTALLER from rosdep2.lookup import RosdepLookup rospack, rosstack = get_test_rospkgs() # create our test fixture. use most of the default toolchain, but # replace the apt installer with one that we can have more fun # with. we will do all tests with ubuntu lucid keys -- other # tests should cover different resolution cases. sources_loader = create_test_SourcesListLoader() lookup = RosdepLookup.create_from_rospkg(rospack=rospack, rosstack=rosstack, sources_loader=sources_loader) context = create_default_installer_context() context.set_os_override('ubuntu', 'lucid') installer = RosdepInstaller(context, lookup) with fakeout() as (stdout, stderr): installer.install_resolved(APT_INSTALLER, [], simulate=True, verbose=False) with fakeout() as (stdout, stderr): installer.install_resolved(APT_INSTALLER, [], simulate=True, verbose=True) assert stdout.getvalue().strip() == '#No packages to install' with fakeout() as (stdout, stderr): installer.install_resolved(APT_INSTALLER, ['rosdep-fake1', 'rosdep-fake2'], simulate=True, verbose=True) stdout_lines = [x.strip() for x in stdout.getvalue().split('\n') if x.strip()] assert stdout_lines == ['#[apt] Installation commands:', 'sudo apt-get install rosdep-fake1', 'sudo apt-get install rosdep-fake2', ], ("%s: %s"%(stdout.getvalue(), stdout_lines))
def test_RosdepInstaller_install_resolved(): from rosdep2 import create_default_installer_context from rosdep2.lookup import RosdepLookup from rosdep2.installers import RosdepInstaller from rosdep2.platforms.debian import APT_INSTALLER from rosdep2.lookup import RosdepLookup rospack, rosstack = get_test_rospkgs() # create our test fixture. use most of the default toolchain, but # replace the apt installer with one that we can have more fun # with. we will do all tests with ubuntu lucid keys -- other # tests should cover different resolution cases. sources_loader = create_test_SourcesListLoader() lookup = RosdepLookup.create_from_rospkg(rospack=rospack, rosstack=rosstack, sources_loader=sources_loader) context = create_default_installer_context() context.set_os_override('ubuntu', 'lucid') installer = RosdepInstaller(context, lookup) with fakeout() as (stdout, stderr): installer.install_resolved(APT_INSTALLER, [], simulate=True, verbose=False) with fakeout() as (stdout, stderr): installer.install_resolved(APT_INSTALLER, [], simulate=True, verbose=True) assert stdout.getvalue().strip() == '#No packages to install' with fakeout() as (stdout, stderr): try: installer.install_resolved(APT_INSTALLER, ['rosdep-fake1', 'rosdep-fake2'], simulate=True, verbose=True) except OSError as e: if str(e).count('[Errno 2] No such file or directory') == 0: raise return True stdout_lines = [ x.strip() for x in stdout.getvalue().split('\n') if x.strip() ] assert stdout_lines == [ '#[apt] Installation commands:', 'sudo apt-get install rosdep-fake1', 'sudo apt-get install rosdep-fake2', ], ("%s: %s" % (stdout.getvalue(), stdout_lines))