From 934ec1619f77e73662e7ff0b0d7d2c35225c0c59 Mon Sep 17 00:00:00 2001 From: Daniel Narvaez Date: Thu, 15 Nov 2012 09:54:03 +0000 Subject: Add a --test option --- diff --git a/commands/check-system b/commands/check-system index d605434..ac0b9d3 100755 --- a/commands/check-system +++ b/commands/check-system @@ -13,6 +13,8 @@ parser.add_argument("--update", action="store_true", help="first of all update the system") parser.add_argument("--remove", action="store_true", help="remove all the unnecessary packages") +parser.add_argument("--test", action="store_true", + help="don't add or remove packages, test only") args = parser.parse_args() -system.check(update=args.update, remove=args.remove) +system.check(update=args.update, remove=args.remove, test=args.test) diff --git a/devbot/command.py b/devbot/command.py index c6ac319..8da8051 100644 --- a/devbot/command.py +++ b/devbot/command.py @@ -1,11 +1,12 @@ import subprocess -def run_command(args): +def run_command(args, test=False): print " ".join(args) - subprocess.check_call(args) + if not test: + subprocess.check_call(args) -def run_with_sudo(args): +def run_with_sudo(args, test=False): args_with_sudo = ["sudo"] args_with_sudo.extend(args) - run_command(args_with_sudo) + run_command(args_with_sudo, test=test) diff --git a/devbot/distro.py b/devbot/distro.py index 1d44808..6219a09 100644 --- a/devbot/distro.py +++ b/devbot/distro.py @@ -4,6 +4,9 @@ import subprocess from devbot import command class FedoraPackageManager: + def __init__(test=False): + self._test = test + def install_packages(self, packages): args = ["yum"] @@ -13,13 +16,13 @@ class FedoraPackageManager: args.append("install") args.extend(packages) - command.run_with_sudo(args) + command.run_with_sudo(args, test=self._test) def remove_packages(self, packages): args = ["rpm", "-e"] args.extend(packages) - command.run_with_sudo(args) + command.run_with_sudo(args, test=self._test) def update(self): args = ["yum"] @@ -29,7 +32,7 @@ class FedoraPackageManager: args.append("update") - command.run_with_sudo(args) + command.run_with_sudo(args, test=self._test) def find_all(self): query_format = "--queryformat=[%{NAME} ]" @@ -73,11 +76,14 @@ class FedoraPackageManager: self._find_deps(dep_package, result) class UbuntuPackageManager: + def __init__(test=False): + self._test = test + def install_packages(self, packages): args = ["apt-get", "install"] args.extend(packages) - command.run_with_sudo(args) + command.run_with_sudo(args, self._test=test) def remove_packages(self, packages): raise NotImplementedError @@ -88,13 +94,13 @@ class UbuntuPackageManager: def find_with_deps(self, package_names): raise NotImplementedError -def get_package_manager(): +def get_package_manager(test=False): name, version = _get_distro_info() if name == "fedora": - return FedoraPackageManager() + return FedoraPackageManager(test=test) elif name == "ubuntu": - return UbuntuPackageManager() + return UbuntuPackageManager(test=test) def get_system_version(): name, version = _get_distro_info() diff --git a/devbot/system.py b/devbot/system.py index ca9ff13..b12190a 100644 --- a/devbot/system.py +++ b/devbot/system.py @@ -68,7 +68,9 @@ def load_deps_json(name): path = os.path.join(scriptdir, "deps", "%s.json" % name) return json.load(open(path)) -def run_checks(distro_name, checks, packages): +def run_checks(package_manager, checks, packages): + distro_name = distro.get_distro_name() + failed_checks = [] to_install = [] @@ -89,7 +91,6 @@ def run_checks(distro_name, checks, packages): failed_checks.append(check) if to_install: - package_manager = distro.get_package_manager() package_manager.install_packages(to_install) if failed_checks: @@ -148,9 +149,8 @@ def warn_if_unsupported(distro_name): "distributions listed in the README.\n" \ "*********************************************************\n" -def remove_packages(packages): +def remove_packages(package_manager, packages): distro_name = distro.get_distro_name() - package_manager = distro.get_package_manager() to_keep = [] for package_info in packages.values(): @@ -178,8 +178,9 @@ def remove_packages(packages): if to_remove: package_manager.remove_packages(to_remove) -def check(remove=False, update=False): +def check(remove=False, update=False, test=False): distro_name = distro.get_distro_name() + package_manager = distro.get_package_manager(test=test) packages = config.load_packages() @@ -189,7 +190,7 @@ def check(remove=False, update=False): xvfb_proc, orig_display = start_xvfb() - run_checks(distro_name, config.load_checks(), packages) + run_checks(package_manager, config.load_checks(), packages) warn_if_unsupported(distro_name) apply_distro_tweaks(distro_name) @@ -197,8 +198,7 @@ def check(remove=False, update=False): stop_xvfb(xvfb_proc, orig_display) if update: - package_manager = distro.get_package_manager() package_manager.update() if remove: - remove_packages(packages) + remove_packages(package_manager, packages) -- cgit v0.9.1