def test_empty_variants_and_packages(self): packages = [(),] with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "True"}): runner = RunnerMultipleMock() spt = SystemPackageTool(runner=runner, tool=AptTool(output=self.out), output=self.out) spt.install_packages(packages) self.assertEqual(0, runner.calls)
def test_install_all_multiple_package_list(self): """ Separated string list must be treated as full package list to be installed """ packages = "varianta variantb", "variantc variantd" runner = RunnerMultipleMock([]) spt = SystemPackageTool(runner=runner, tool=AptTool(output=self.out), output=self.out) with self.assertRaises(ConanException) as error: spt.install_packages(packages) self.assertEqual("Each string must contain only one package to be installed." " Use a list instead e.g. ['foo', 'bar'].", str(error.exception))
def test_install_all_packages(self): """ SystemPackageTool must install all packages """ # No packages installed packages = ["a_package", "another_package", "yet_another_package"] with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "True"}): runner = RunnerMultipleMock(["sudo -A apt-get update", "sudo -A apt-get install -y --no-install-recommends" " a_package another_package yet_another_package", ]) spt = SystemPackageTool(runner=runner, tool=AptTool(output=self.out), output=self.out) spt.install_packages(packages) self.assertEqual(5, runner.calls)
def test_installed_variant_and_install_packages(self): """ Only packages must be installed. Variants are already installed """ packages = [("varianta", "variantb", "variantc"), "a_package", "another_package"] with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "True"}): runner = RunnerMultipleMock(['dpkg-query -W -f=\'${Status}\' varianta | ' 'grep -q "ok installed"', "sudo -A apt-get update", "sudo -A apt-get install -y --no-install-recommends" " a_package another_package", ]) spt = SystemPackageTool(runner=runner, tool=AptTool(output=self.out), output=self.out) spt.install_packages(packages) self.assertEqual(5, runner.calls)
def test_install_few_packages(self): """ SystemPackageTool must install 2 packages only """ packages = ["a_package", "another_package", "yet_another_package"] with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "True"}): runner = RunnerMultipleMock(['dpkg-query -W -f=\'${Status}\' a_package | ' 'grep -q "ok installed"', "sudo -A apt-get update", "sudo -A apt-get install -y --no-install-recommends" " another_package yet_another_package", ]) spt = SystemPackageTool(runner=runner, tool=AptTool(output=self.out), output=self.out) spt.install_packages(packages) self.assertEqual(5, runner.calls)
def test_variants_and_packages_installed(self): """ Install nothing, all is already installed """ packages = [("varianta", "variantb", "variantc"), "a_package", "another_package"] with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "True"}): runner = RunnerMultipleMock(['dpkg-query -W -f=\'${Status}\' varianta | ' 'grep -q "ok installed"', 'dpkg-query -W -f=\'${Status}\' a_package | ' 'grep -q "ok installed"', 'dpkg-query -W -f=\'${Status}\' another_package | ' 'grep -q "ok installed"', ]) spt = SystemPackageTool(runner=runner, tool=AptTool(output=self.out), output=self.out) spt.install_packages(packages) self.assertEqual(3, runner.calls)
def test_install_variants_and_packages(self): """ SystemPackageTool must install one of variants and all packages at same list """ packages = [("varianta", "variantb", "variantc"), "a_package", "another_package"] with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "True"}): runner = RunnerMultipleMock(["sudo -A apt-get update", "sudo -A apt-get install -y --no-install-recommends" " varianta", "sudo -A apt-get update", "sudo -A apt-get install -y --no-install-recommends" " a_package another_package", ]) spt = SystemPackageTool(runner=runner, tool=AptTool(output=self.out), output=self.out) spt.install_packages(packages) self.assertEqual(8, runner.calls)
def test_packages_installed(self): """ SystemPackageTool must not install. All packages are installed. """ packages = ["a_package", "another_package", "yet_another_package"] with tools.environment_append({"CONAN_SYSREQUIRES_SUDO": "True"}): runner = RunnerMultipleMock(['dpkg-query -W -f=\'${Status}\' a_package | ' 'grep -q "ok installed"', 'dpkg-query -W -f=\'${Status}\' another_package | ' 'grep -q "ok installed"', 'dpkg-query -W -f=\'${Status}\' yet_another_package | ' 'grep -q "ok installed"', ]) spt = SystemPackageTool(runner=runner, tool=AptTool(output=self.out), output=self.out) spt.install_packages(packages) self.assertEqual(3, runner.calls)