From d37002a5f54b08e1bd6c3f7182e47d941b60137b Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Mon, 31 Jan 2022 19:10:37 -0500 Subject: [PATCH] run_unittests: check for pytest and pytest-xdist separately Do not quit from using pytest at all, when pytest is present, simply because xdist isn't available. Even without xdist, pytest is still useful. There doesn't seem to be any particular reason to require xdist. It just happens to have been implemented that way, back in commit 4200afc74d1e6ba6d117e900799d0d82a85bae8a when we originally added a check to avoid pytest erroring out with unknown options when xdist options are passed and xdist is not installed. --- run_unittests.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/run_unittests.py b/run_unittests.py index ad62823bc510..ddcde76b685e 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -122,13 +122,16 @@ def main(): try: import pytest # noqa: F401 - # Need pytest-xdist for `-n` arg - import xdist # noqa: F401 pytest_args = [] - # Don't use pytest-xdist when running single unit tests since it wastes - # time spawning a lot of processes to distribute tests to in that case. - if not running_single_tests(sys.argv, cases): - pytest_args += ['-n', 'auto'] + try: + # Need pytest-xdist for `-n` arg + import xdist # noqa: F401 + # Don't use pytest-xdist when running single unit tests since it wastes + # time spawning a lot of processes to distribute tests to in that case. + if not running_single_tests(sys.argv, cases): + pytest_args += ['-n', 'auto'] + except ImportError: + print('pytest-xdist not found, tests will not be distributed across CPU cores') # Let there be colors! if 'CI' in os.environ: pytest_args += ['--color=yes'] @@ -143,7 +146,7 @@ def main(): pass return subprocess.run(python_command + ['-m', 'pytest'] + pytest_args).returncode except ImportError: - print('pytest-xdist not found, using unittest instead') + print('pytest not found, using unittest instead') # Fallback to plain unittest. return unittest.main(defaultTest=cases, buffer=True)