import argparse import subprocess import os here = os.path.abspath(os.path.dirname(__file__)) wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir)) def build(*args, **kwargs): subprocess.check_call(["docker", "build", "--tag", "wpt:local", here]) def parser_run(): parser = argparse.ArgumentParser() parser.add_argument("--rebuild", action="store_true", help="Force rebuild of image") parser.add_argument("--checkout", action="store", help="Revision to checkout in the image. " "If this is not supplied we mount the wpt checkout on the host as " "/home/test/web-platform-tests/") parser.add_argument("--privileged", action="store_true", help="Run the image in priviledged mode (required for emulators)") return parser def run(*args, **kwargs): if kwargs["rebuild"]: build() args = ["docker", "run"] args.extend(["--security-opt", "seccomp:%s" % os.path.join(wpt_root, "tools", "docker", "seccomp.json")]) if kwargs["privileged"]: args.append("--privileged") if kwargs["checkout"]: args.extend(["--env", "REF==%s" % kwargs["checkout"]]) else: args.extend(["--mount", "type=bind,source=%s,target=/home/test/web-platform-tests" % wpt_root]) args.extend(["-it", "wpt:local"]) proc = subprocess.Popen(args) proc.wait() return proc.returncode