internal test runs: do inline_run() without io-capturing
as this nested capturing can leave open FDs which breaks larger test runs. also introduce an internal option "--lsof" for checking the number of file descriptors --HG-- branch : trunk
This commit is contained in:
parent
545aab85f2
commit
9173b60677
23
conftest.py
23
conftest.py
|
@ -7,7 +7,9 @@ collect_ignore = ['build', 'doc/_build']
|
|||
|
||||
rsyncdirs = ['conftest.py', 'bin', 'py', 'doc', 'testing']
|
||||
|
||||
import py
|
||||
import os, py
|
||||
pid = os.getpid()
|
||||
|
||||
def pytest_addoption(parser):
|
||||
group = parser.getgroup("pylib", "py lib testing options")
|
||||
group.addoption('--sshhost',
|
||||
|
@ -16,7 +18,26 @@ def pytest_addoption(parser):
|
|||
group.addoption('--runslowtests',
|
||||
action="store_true", dest="runslowtests", default=False,
|
||||
help=("run slow tests"))
|
||||
group.addoption('--lsof',
|
||||
action="store_true", dest="lsof", default=False,
|
||||
help=("run FD checks if lsof is available"))
|
||||
|
||||
def pytest_configure(config):
|
||||
if config.getvalue("lsof"):
|
||||
try:
|
||||
out = py.process.cmdexec("lsof -p %d" % pid)
|
||||
except py.process.cmdexec.Error:
|
||||
pass
|
||||
else:
|
||||
config._numfiles = len([x for x in out.split("\n") if "REG" in x])
|
||||
|
||||
def pytest_unconfigure(config, __multicall__):
|
||||
if not hasattr(config, '_numfiles'):
|
||||
return
|
||||
__multicall__.execute()
|
||||
out2 = py.process.cmdexec("lsof -p %d" % pid)
|
||||
len2 = len([x for x in out2.split("\n") if "REG" in x])
|
||||
assert len2 < config._numfiles + 7, out2
|
||||
|
||||
def pytest_funcarg__sshhost(request):
|
||||
val = request.config.getvalue("sshhost")
|
||||
|
|
|
@ -185,6 +185,7 @@ class TmpTestdir:
|
|||
return reports[0]
|
||||
|
||||
def inline_run(self, *args):
|
||||
args = ("-s", ) + args # otherwise FD leakage
|
||||
config = self.parseconfig(*args)
|
||||
config.pluginmanager.do_configure(config)
|
||||
session = config.initsession()
|
||||
|
|
Loading…
Reference in New Issue