#!/usr/bin/python -u import argparse import os import shutil import sys import common from devbot import run from devbot import check from devbot import command from devbot import system from devbot import build def _get_profile(): profile_path = os.path.expanduser("~/.sugar/uitests") shutil.rmtree(profile_path, ignore_errors=True) return profile_path def _get_test_path(name): return os.path.join(common.base_dir, "tests", "sugar", name) def _get_python_scripts(): shebang = "#!/usr/bin/python" dirs = ["commands", "tools"] scripts = [] for dir_name in dirs: dir_path = os.path.join(common.base_dir, dir_name) for name in os.listdir(dir_path): script_path = os.path.join(dir_path, name) with open(script_path) as f: if f.read(len(shebang)) == shebang: scripts.append(script_path) return scripts def _run_pep8(): args = ["pep8"] for dir_name in ["devbot", "tests"]: args.append(os.path.join(common.base_dir, dir_name)) args.extend(_get_python_scripts()) command.run(args) def _run_pylint(): args = ["pylint", "--reports=n", "--disable=C,W,R,E,F", "--enable=W0611"] args.append(os.path.join(common.base_dir, "devbot")) args.extend(_get_python_scripts()) command.run(args) def _run_unittests(): tests_tmp = os.path.join(common.base_dir, "tests", "tmp") try: os.mkdir(tests_tmp) except OSError: pass os.environ["TESTS_TMP"] = tests_tmp os.environ["PYTHONPATH"] = common.base_dir os.chdir(os.path.join(common.base_dir, "tests", "devbot")) command.run(["python", "-m", "unittest", "discover"]) shutil.rmtree(tests_tmp, ignore_errors=True) def _check_devbot(): print "* Checking devbot" try: _run_pep8() _run_pylint() _run_unittests() except subprocess.CalledProcessError: return False def _check_ui(): print "* Checking UI" profile_path = _get_profile() result = run.run_test("sugar-runner", _get_test_path("shell.py")) run.collect_logs(os.path.join(profile_path, "logs")) return result def _check_modules(): return check.check() parser = argparse.ArgumentParser() parser.add_argument("module", nargs="?", help="name of the module to test") args = parser.parse_args() common.setup(log_name="check") os.environ["SUGAR_LOGGER_LEVEL"] = "debug" os.environ["SUGAR_PROFILE"] = "uitests" os.environ["GTK_MODULES"] = "gail:atk-bridge" if args.module: if not check.check_one(args.module): sys.exit(1) else: if not system.check(lazy=True): sys.exit(1) if not build.pull(lazy=True): sys.exit(1) if not build.build(): sys.exit(1) if not _check_devbot(): sys.exit(1) if not _check_modules(): sys.exit(1) if not _check_ui(): sys.exit(1)