Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcommands/check-system4
-rw-r--r--devbot/command.py9
-rw-r--r--devbot/distro.py20
-rw-r--r--devbot/system.py16
4 files changed, 29 insertions, 20 deletions
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)