merging pedronis-branch changes to resolve issue 15 for now.
This introduces py.test.collect._fillfuncargs which can operate on Function like objects. --HG-- branch : trunk
This commit is contained in:
commit
4bc352cc7d
|
@ -89,6 +89,7 @@ initpkg(__name__,
|
||||||
'test.collect.Instance' : ('./test/pycollect.py', 'Instance'),
|
'test.collect.Instance' : ('./test/pycollect.py', 'Instance'),
|
||||||
'test.collect.Generator' : ('./test/pycollect.py', 'Generator'),
|
'test.collect.Generator' : ('./test/pycollect.py', 'Generator'),
|
||||||
'test.collect.Function' : ('./test/pycollect.py', 'Function'),
|
'test.collect.Function' : ('./test/pycollect.py', 'Function'),
|
||||||
|
'test.collect._fillfuncargs' : ('./test/funcargs.py', 'fillfuncargs'),
|
||||||
|
|
||||||
# thread related API (still in early design phase)
|
# thread related API (still in early design phase)
|
||||||
'_thread.WorkerPool' : ('./thread/pool.py', 'WorkerPool'),
|
'_thread.WorkerPool' : ('./thread/pool.py', 'WorkerPool'),
|
||||||
|
|
|
@ -95,7 +95,7 @@ class FuncargRequest:
|
||||||
def _fillfuncargs(self):
|
def _fillfuncargs(self):
|
||||||
argnames = getfuncargnames(self.function)
|
argnames = getfuncargnames(self.function)
|
||||||
if argnames:
|
if argnames:
|
||||||
assert not self._pyfuncitem._args, "yielded functions cannot have funcargs"
|
assert not getattr(self._pyfuncitem, '_args', None), "yielded functions cannot have funcargs"
|
||||||
for argname in argnames:
|
for argname in argnames:
|
||||||
if argname not in self._pyfuncitem.funcargs:
|
if argname not in self._pyfuncitem.funcargs:
|
||||||
self._pyfuncitem.funcargs[argname] = self.getfuncargvalue(argname)
|
self._pyfuncitem.funcargs[argname] = self.getfuncargvalue(argname)
|
||||||
|
|
|
@ -79,6 +79,17 @@ class TestFillFuncArgs:
|
||||||
"*1 passed*"
|
"*1 passed*"
|
||||||
])
|
])
|
||||||
|
|
||||||
|
def test_fillfuncargs_exposed(self, testdir):
|
||||||
|
item = testdir.getitem("def test_func(some, other=42): pass")
|
||||||
|
class Provider:
|
||||||
|
def pytest_funcarg__some(self, request):
|
||||||
|
return request.function.__name__
|
||||||
|
item.config.pluginmanager.register(Provider())
|
||||||
|
if hasattr(item, '_args'):
|
||||||
|
del item._args
|
||||||
|
py.test.collect._fillfuncargs(item)
|
||||||
|
assert len(item.funcargs) == 1
|
||||||
|
|
||||||
class TestRequest:
|
class TestRequest:
|
||||||
def test_request_attributes(self, testdir):
|
def test_request_attributes(self, testdir):
|
||||||
item = testdir.getitem("""
|
item = testdir.getitem("""
|
||||||
|
|
Loading…
Reference in New Issue