traceback for test.collect.Directory.listchain

/home/johnny/projects/merlinux/py/dist/py/test/collect.py:54

   def getfscollector(fspath):
       if isinstance(fspath, str): 
           fspath = py.path.local(fspath)
       if not fspath.check(): 
          raise py.error.ENOENT(fspath) 
       pkgpath = fspath.pypkgpath() 
       if pkgpath is None:
           if fspath.check(dir=1):
               pkgpath = fspath
           else:
               pkgpath = fspath.dirpath()
       Directory = py.test.Config.getvalue('Directory', pkgpath)
       current = Directory(pkgpath) 
       #print "pkgpath", pkgpath
       names = filter(None, fspath.relto(pkgpath).split(fspath.sep))
       for name in names: 
           current = current.join(name) 
           assert current, "joining %r resulted in None!" % (names,)
->     top = current.listchain()[0]
       #top._config = config 
       return current 

/home/johnny/projects/merlinux/py/dist/py/test/session.py:139

   def _map2colitems(items): 
       # first convert all path objects into collectors 
       from py.__.test.collect import getfscollector 
       colitems = []
       for item in items: 
           if isinstance(item, (list, tuple)): 
               colitems.extend(Session._map2colitems(item))
           elif not isinstance(item, py.test.collect.Collector): 
->             colitems.append(getfscollector(item))
           else:
               colitems.append(item)
       return colitems 

/home/johnny/projects/merlinux/py/dist/py/test/session.py:40

   def main(self, args): 
       """ main loop for running tests. """
->     colitems = self._map2colitems(args) 
       try:
           self.header(colitems) 
           try:
               for colitem in colitems: 
                   colitem.option = self.config.option
                   self.runtraced(colitem)
           except KeyboardInterrupt: 
               raise 
           except: 
               self.footer(colitems) 
           else: 
               self.footer(colitems) 
       except Exit, ex:
           pass
       # return [(fspath as string, [names as string])]
       return [(str(item.listchain()[0].fspath), item.listnames())
               for item, outcome in self.getitemoutcomepairs(py.test.Item.Failed)]

/home/johnny/projects/merlinux/py/dist/py/test/terminal/terminal.py:34

   def main(self, args): 
       if self.config.option._remote: 
           from py.__.test.terminal import remote 
           return remote.main(self.config, self._file, self.config._origargs)
       else: 
->         return super(TerminalSession, self).main(args) 

/home/johnny/projects/merlinux/py/dist/py/test/testing/test_session.py:166

   def test_recursion_detection(self): 
       o = tmpdir.ensure('recursiontest', dir=1)
       tfile = o.join('test_recursion.py')
       tfile.write(py.code.Source("""
               def test_1():
                   def f(): 
                       g() 
                   def g(): 
                       f() 
                   f() 
           """))
       #print "hello"
       session = self.session 
       #session.config.option.nocapture = True 
       print "calling main", o
->     session.main([str(o)]) 
       print "back from main", o
       out = self.file.getvalue() 
       #print out
       i = out.find('Recursion detected') 
       assert i != -1 

/home/johnny/projects/merlinux/py/dist/py/test/item.py:79

   def execute(self, target, *args):
       """ default implementation for calling a test target is to
               simply call it.
           """
->     target(*args)

/home/johnny/projects/merlinux/py/dist/py/test/item.py:73

   def run(self):
       self.state.prepare(self) 
->     self.execute(self.obj, *self.args)

/home/johnny/projects/merlinux/py/dist/py/test/rsession/executor.py:22

   def execute(self):
       try:
->         self.item.run()
           outcome = Outcome()
       except py.test.Item.Skipped, e: 
           outcome = Outcome(skipped=str(e))
       except (KeyboardInterrupt, SystemExit):
           raise
       except:
           excinfo = py.code.ExceptionInfo()
           if isinstance(self.item, py.test.Function): 
               fun = self.item.obj # hope this is stable 
               code = py.code.Code(fun)
               excinfo.traceback = excinfo.traceback.cut(
                       path=code.path, firstlineno=code.firstlineno)
           outcome = Outcome(excinfo=excinfo, setupfailure=False)
           if self.usepdb:
               if self.reporter is not None:
                   self.reporter(report.ImmediateFailure(self.item,
                       ReprOutcome(outcome.make_repr())))
               import pdb
               pdb.post_mortem(excinfo._excinfo[2])
               # XXX hmm, we probably will not like to continue from that point
               # or we do?
               raise SystemExit()
       outcome.stdout = ""
       outcome.stderr = ""
       return outcome

/home/johnny/projects/merlinux/py/dist/py/test/rsession/local.py:31

   def plain_runner(item, session, reporter):
       # box executor is doing stdout/err catching for us, let's do it here
       startcapture(session)
       r = RunExecutor(item, usepdb=session.config.option.usepdb, reporter=reporter)
->     outcome = r.execute()
       outcome = ReprOutcome(outcome.make_repr())
       outcome.stdout, outcome.stderr = finishcapture(session)
       return outcome

/home/johnny/projects/merlinux/py/dist/py/test/rsession/local.py:47

   def apigen_runner(item, session, reporter):
       r = RunExecutor(item, reporter=reporter)
       session.tracer.start_tracing()
->     retval = plain_runner(item, session, reporter)
       session.tracer.end_tracing()
       return retval