1 new commit in pytest:
https://bitbucket.org/hpk42/pytest/changeset/da7434cf50bc/ changeset: da7434cf50bc user: RonnyPfannschmidt date: 2012-09-24 11:36:24 summary: backout, the _memoizedcall change worked only due to a local effect affected #: 3 files diff -r cfe628a3d13254a5f6ea8a52656f014f0160116c -r da7434cf50bc85c393c42c1559ced0715f4db5e7 _pytest/main.py --- a/_pytest/main.py +++ b/_pytest/main.py @@ -251,6 +251,24 @@ def teardown(self): pass + def _memoizedcall(self, attrname, function): + exattrname = "_ex_" + attrname + failure = getattr(self, exattrname, None) + if failure is not None: + py.builtin._reraise(failure[0], failure[1], failure[2]) + if hasattr(self, attrname): + return getattr(self, attrname) + try: + res = function() + except py.builtin._sysex: + raise + except: + failure = py.std.sys.exc_info() + setattr(self, exattrname, failure) + raise + setattr(self, attrname, res) + return res + def listchain(self): """ return list of all parent collectors up to self, starting from root of collection tree. """ @@ -327,6 +345,10 @@ return str(exc.args[0]) return self._repr_failure_py(excinfo, style="short") + def _memocollect(self): + """ internal helper method to cache results of calling collect(). """ + return self._memoizedcall('_collected', lambda: list(self.collect())) + def _prunetraceback(self, excinfo): if hasattr(self, 'fspath'): path = self.fspath diff -r cfe628a3d13254a5f6ea8a52656f014f0160116c -r da7434cf50bc85c393c42c1559ced0715f4db5e7 _pytest/python.py --- a/_pytest/python.py +++ b/_pytest/python.py @@ -332,12 +332,8 @@ class Module(pytest.File, PyCollector): """ Collector for test classes and functions. """ - _obj = None - def _getobj(self): - if self._obj is None: - self._obj = self._importtestmodule() - return _obj + return self._memoizedcall('_obj', self._importtestmodule) def collect(self): self.session.funcargmanager._parsefactories(self.obj, self.nodeid) diff -r cfe628a3d13254a5f6ea8a52656f014f0160116c -r da7434cf50bc85c393c42c1559ced0715f4db5e7 _pytest/runner.py --- a/_pytest/runner.py +++ b/_pytest/runner.py @@ -244,7 +244,7 @@ self.__dict__.update(extra) def pytest_make_collect_report(collector): - call = CallInfo(lambda: list(collector.collect()), "collect") + call = CallInfo(collector._memocollect, "memocollect") longrepr = None if not call.excinfo: outcome = "passed" Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. _______________________________________________ py-svn mailing list py-svn@codespeak.net http://codespeak.net/mailman/listinfo/py-svn