minimal changes to expose fillfuncargs

--HG--
branch : trunk
This commit is contained in:
Samuele Pedroni 2009-05-21 19:08:33 +02:00
parent f2b1eb5bba
commit e79f4d298c
3 changed files with 13 additions and 1 deletions

View File

@ -79,6 +79,7 @@ initpkg(__name__,
'test.fail' : ('./test/outcome.py', 'fail'),
'test.exit' : ('./test/outcome.py', 'exit'),
'test.pdb' : ('./test/custompdb.py', 'set_trace'),
'test.fillfuncargs' : ('./test/funcargs.py', 'fillfuncargs'),
# configuration/initialization related test api
'test.config' : ('./test/config.py', 'config_per_process'),

View File

@ -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)

View File

@ -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.fillfuncargs(item)
assert len(item.funcargs) == 1
class TestRequest:
def test_request_attributes(self, testdir):
item = testdir.getitem("""