no longer check if indirect metafunc.parametrize params are funcarg names

This commit is contained in:
Ronny Pfannschmidt 2012-02-03 16:54:00 +01:00
parent 87b8769680
commit 2ca6d9f039
3 changed files with 9 additions and 5 deletions

View File

@ -10,6 +10,7 @@ Changes between 2.2.1 and 2.2.2.dev
- fix issue106: allow parametrize to be applied multiple times - fix issue106: allow parametrize to be applied multiple times
e.g. from module, class and at function level. e.g. from module, class and at function level.
- fix issue107: actually perform session scope finalization - fix issue107: actually perform session scope finalization
- don't check in parametrize if indirect parameters are funcarg names
- add chdir method to monkeypatch funcarg - add chdir method to monkeypatch funcarg
- fix crash resulting from calling monkeypatch undo a second time - fix crash resulting from calling monkeypatch undo a second time
- extend reports accepting kwargs to set arbitrary additional attributes - extend reports accepting kwargs to set arbitrary additional attributes

View File

@ -629,9 +629,11 @@ class Metafunc:
if not isinstance(argnames, (tuple, list)): if not isinstance(argnames, (tuple, list)):
argnames = (argnames,) argnames = (argnames,)
argvalues = [(val,) for val in argvalues] argvalues = [(val,) for val in argvalues]
for arg in argnames: if not indirect:
if arg not in self.funcargnames: #XXX should we also check for the opposite case?
raise ValueError("%r has no argument %r" %(self.function, arg)) for arg in argnames:
if arg not in self.funcargnames:
raise ValueError("%r has no argument %r" %(self.function, arg))
valtype = indirect and "params" or "funcargs" valtype = indirect and "params" or "funcargs"
if not ids: if not ids:
idmaker = IDMaker() idmaker = IDMaker()

View File

@ -983,11 +983,12 @@ class TestMetafunc:
metafunc = funcargs.Metafunc(func) metafunc = funcargs.Metafunc(func)
metafunc.parametrize('x', [1], indirect=True) metafunc.parametrize('x', [1], indirect=True)
metafunc.parametrize('y', [2,3], indirect=True) metafunc.parametrize('y', [2,3], indirect=True)
metafunc.parametrize('unnamed', [1], indirect=True)
assert len(metafunc._calls) == 2 assert len(metafunc._calls) == 2
assert metafunc._calls[0].funcargs == {} assert metafunc._calls[0].funcargs == {}
assert metafunc._calls[1].funcargs == {} assert metafunc._calls[1].funcargs == {}
assert metafunc._calls[0].params == dict(x=1,y=2) assert metafunc._calls[0].params == dict(x=1,y=2, unnamed=1)
assert metafunc._calls[1].params == dict(x=1,y=3) assert metafunc._calls[1].params == dict(x=1,y=3, unnamed=1)
def test_addcalls_and_parametrize_indirect(self): def test_addcalls_and_parametrize_indirect(self):
def func(x, y): pass def func(x, y): pass