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.Generator' : ('./test/pycollect.py', 'Generator'),
|
||||
'test.collect.Function' : ('./test/pycollect.py', 'Function'),
|
||||
'test.collect._fillfuncargs' : ('./test/funcargs.py', 'fillfuncargs'),
|
||||
|
||||
# thread related API (still in early design phase)
|
||||
'_thread.WorkerPool' : ('./thread/pool.py', 'WorkerPool'),
|
||||
|
|
|
@ -95,7 +95,7 @@ class FuncargRequest:
|
|||
def _fillfuncargs(self):
|
||||
argnames = getfuncargnames(self.function)
|
||||
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:
|
||||
if argname not in self._pyfuncitem.funcargs:
|
||||
self._pyfuncitem.funcargs[argname] = self.getfuncargvalue(argname)
|
||||
|
|
|
@ -79,6 +79,17 @@ class TestFillFuncArgs:
|
|||
"*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:
|
||||
def test_request_attributes(self, testdir):
|
||||
item = testdir.getitem("""
|
||||
|
|
Loading…
Reference in New Issue