1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #!/usr/bin/env python
- # Don't run tests from the root repo dir.
- # We want to ensure we're importing from the installed
- # binary package not from the CWD.
- import argparse
- import os
- from contextlib import contextmanager
- from subprocess import check_call
- _dname = os.path.dirname
- REPO_ROOT = _dname(_dname(_dname(os.path.abspath(__file__))))
- PACKAGE = "s3transfer"
- @contextmanager
- def cd(path):
- """Change directory while inside context manager."""
- cwd = os.getcwd()
- try:
- os.chdir(path)
- yield
- finally:
- os.chdir(cwd)
- def run(command, env=None):
- return check_call(command, shell=True, env=env)
- def process_args(args):
- runner = args.test_runner
- test_args = ""
- if args.with_cov:
- test_args += f"--cov={PACKAGE} --cov-report xml "
- dirs = " ".join(args.test_dirs)
- return runner, test_args, dirs
- if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument(
- "test_dirs",
- default=["unit/", "functional/"],
- nargs="*",
- help="One or more directories containing tests.",
- )
- parser.add_argument(
- "-r",
- "--test-runner",
- default="pytest",
- help="Test runner to execute tests. Defaults to pytest.",
- )
- parser.add_argument(
- "-c",
- "--with-cov",
- default=False,
- action="store_true",
- help="Run default test-runner with code coverage enabled.",
- )
- raw_args = parser.parse_args()
- test_runner, test_args, test_dirs = process_args(raw_args)
- with cd(os.path.join(REPO_ROOT, "tests")):
- cmd = f"{test_runner} {test_args}{test_dirs}"
- print(f"Running {cmd}...")
- run(cmd)
- # Run the serial implementation of s3transfer
- os.environ["USE_SERIAL_EXECUTOR"] = "True"
- print(f"Running serial execution for {cmd}...")
- run(cmd, env=os.environ)
|