| """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() |