blob: 2103be3f110fcacae0447a62ee460eb5e324f438 [file] [log] [blame] [edit]
"""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()