#!/usr/bin/python -u import argparse import os import shutil import sys import subprocess import common from devbot import run from devbot import check from devbot import command from devbot import main 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 return True 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 _run_checks(): print "\n= Check =\n" return check.check() and \ _check_ui() and \ _check_devbot() 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 main.run_build(full=False): sys.exit(1) if not _run_checks(): sys.exit(1)