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):
 | 
				
			||||||
| 
						 | 
					@ -444,3 +428,19 @@ 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