parent
763d0d72a5
commit
9c6a790992
|
@ -365,30 +365,15 @@ class Function(FunctionMixin, py.test.collect.Item):
|
||||||
for i, argname in py.builtin.enumerate(argnames):
|
for i, argname in py.builtin.enumerate(argnames):
|
||||||
if i < startindex:
|
if i < startindex:
|
||||||
continue
|
continue
|
||||||
|
request = self.getrequest(argname)
|
||||||
try:
|
try:
|
||||||
argvalue = self.getrequest(argname).call_next_provider()
|
self.funcargs[argname] = request.call_next_provider()
|
||||||
self.funcargs[argname] = argvalue
|
except request.Error:
|
||||||
except LookupError, e:
|
|
||||||
numdefaults = len(funcobj.func_defaults or ())
|
numdefaults = len(funcobj.func_defaults or ())
|
||||||
if i + numdefaults >= len(argnames):
|
if i + numdefaults >= len(argnames):
|
||||||
continue # continue # seems that our args have defaults
|
continue # our args have defaults XXX issue warning?
|
||||||
else:
|
else:
|
||||||
raise
|
raise # request.raiselookupfailed()
|
||||||
|
|
||||||
def _raisefuncargerror(self, argname, prefix="pytest_funcarg__"):
|
|
||||||
metainfo = self.repr_metainfo()
|
|
||||||
available = []
|
|
||||||
plugins = list(self.config.pluginmanager.comregistry)
|
|
||||||
#plugins.extend(self.config.pluginmanager.registry.plugins)
|
|
||||||
for plugin in plugins:
|
|
||||||
for name in vars(plugin.__class__):
|
|
||||||
if name.startswith(prefix):
|
|
||||||
name = name[len(prefix):]
|
|
||||||
if name not in available:
|
|
||||||
available.append(name)
|
|
||||||
msg = "funcargument %r not found for: %s" %(argname,metainfo.verboseline())
|
|
||||||
msg += "\n available funcargs: %s" %(", ".join(available),)
|
|
||||||
raise LookupError(msg)
|
|
||||||
|
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
try:
|
try:
|
||||||
|
@ -435,7 +420,6 @@ class FuncargRequest:
|
||||||
if not self._methods:
|
if not self._methods:
|
||||||
raise self.Error("no provider methods left")
|
raise self.Error("no provider methods left")
|
||||||
nextmethod = self._methods.pop()
|
nextmethod = self._methods.pop()
|
||||||
print "calling", nextmethod
|
|
||||||
return nextmethod(request=self)
|
return nextmethod(request=self)
|
||||||
|
|
||||||
def addfinalizer(self, finalizer):
|
def addfinalizer(self, finalizer):
|
||||||
|
@ -443,4 +427,20 @@ class FuncargRequest:
|
||||||
|
|
||||||
def getfspath(self):
|
def getfspath(self):
|
||||||
return self.pyfuncitem.fspath
|
return self.pyfuncitem.fspath
|
||||||
|
|
||||||
|
def _raisefuncargerror(self):
|
||||||
|
metainfo = self.repr_metainfo()
|
||||||
|
available = []
|
||||||
|
plugins = list(self.config.pluginmanager.comregistry)
|
||||||
|
#plugins.extend(self.config.pluginmanager.registry.plugins)
|
||||||
|
for plugin in plugins:
|
||||||
|
for name in vars(plugin.__class__):
|
||||||
|
if name.startswith(prefix):
|
||||||
|
name = name[len(prefix):]
|
||||||
|
if name not in available:
|
||||||
|
available.append(name)
|
||||||
|
msg = "funcargument %r not found for: %s" %(argname,metainfo.verboseline())
|
||||||
|
msg += "\n available funcargs: %s" %(", ".join(available),)
|
||||||
|
raise LookupError(msg)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue