From 9aee5f3d6663844674ffa6296551ffa9a9c533e5 Mon Sep 17 00:00:00 2001 From: Comrade DOS Date: Mon, 12 Jan 2015 17:51:11 +0600 Subject: [PATCH] Add auto detection CPUs number. --- xdist/plugin.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/xdist/plugin.py b/xdist/plugin.py index bc32104..e138ee4 100644 --- a/xdist/plugin.py +++ b/xdist/plugin.py @@ -1,3 +1,5 @@ +import multiprocessing + import py import pytest @@ -8,8 +10,10 @@ def pytest_addoption(parser): help="run tests in subprocess, wait for modified files " "and re-run failing test set until all pass.") group._addoption('-n', dest="numprocesses", metavar="numprocesses", - action="store", type="int", - help="shortcut for '--dist=load --tx=NUM*popen'") + action="store", + help="shortcut for '--dist=load --tx=NUM*popen', " + "you can use 'auto' here for auto detection CPUs number on " + "host system") group.addoption('--boxed', action="store_true", dest="boxed", default=False, help="box each test run in a separate process (unix)") @@ -69,8 +73,15 @@ def pytest_configure(config, __multicall__): def check_options(config): if config.option.numprocesses: + if config.option.numprocesses == 'auto': + config.option.numprocesses = multiprocessing.cpu_count() + else: + try: + config.option.numprocesses = int(config.option.numprocesses) + except ValueError: + config.option.numprocesses = 1 config.option.dist = "load" - config.option.tx = ['popen'] * int(config.option.numprocesses) + config.option.tx = ['popen'] * config.option.numprocesses if config.option.distload: config.option.dist = "load" val = config.getvalue