"""Build a "mypy-test" Linux Docker container for running mypy/mypyc tests. This allows running Linux tests under a non-Linux operating system. Mypyc tests can also run much faster under Linux that the host OS. NOTE: You may need to run this as root (using sudo). Run with "--no-cache" to force reinstallation of mypy dependencies. Run with "--pull" to force update of the Linux (Ubuntu) base image. After you've built the container, use "run.sh" to run tests. Example: misc/docker/run.sh pytest mypyc/ """ import argparse import os import subprocess import sys def main() -> None: parser = argparse.ArgumentParser( description="""Build a 'mypy-test' Docker container for running mypy/mypyc tests. You may need to run this as root (using sudo).""" ) parser.add_argument("--no-cache", action="store_true", help="Force rebuilding") parser.add_argument("--pull", action="store_true", help="Force pulling fresh Linux base image") args = parser.parse_args() dockerdir = os.path.dirname(os.path.abspath(__file__)) dockerfile = os.path.join(dockerdir, "Dockerfile") rootdir = os.path.join(dockerdir, "..", "..") cmdline = ["docker", "build", "-t", "mypy-test", "-f", dockerfile] if args.no_cache: cmdline.append("--no-cache") if args.pull: cmdline.append("--pull") cmdline.append(rootdir) result = subprocess.run(cmdline) sys.exit(result.returncode) if __name__ == "__main__": main()