diff --git a/py/test/plugin/pytest_default.py b/py/test/plugin/pytest_default.py index e9adbed98..c1d1655a4 100644 --- a/py/test/plugin/pytest_default.py +++ b/py/test/plugin/pytest_default.py @@ -5,7 +5,6 @@ class DefaultPlugin: def pytest_pyfunc_call(self, pyfuncitem, args, kwargs): pyfuncitem.obj(*args, **kwargs) - return def pytest_collect_file(self, path, parent): ext = path.ext diff --git a/py/test/plugin/pytest_doctest.py b/py/test/plugin/pytest_doctest.py index f721ccc15..fed1c7f94 100644 --- a/py/test/plugin/pytest_doctest.py +++ b/py/test/plugin/pytest_doctest.py @@ -2,7 +2,8 @@ import py class DoctestPlugin: def pytest_addoption(self, parser): - parser.addoption("--doctest-modules", + group = parser.addgroup("doctest options") + group.addoption("--doctest-modules", action="store_true", default=False, dest="doctestmodules") diff --git a/py/test/plugin/pytest_figleaf.py b/py/test/plugin/pytest_figleaf.py index d54ba1c20..93fda3b9b 100644 --- a/py/test/plugin/pytest_figleaf.py +++ b/py/test/plugin/pytest_figleaf.py @@ -5,7 +5,8 @@ class FigleafPlugin: group = parser.addgroup('figleaf options') group.addoption('-F', action='store_true', default=False, dest = 'figleaf', - help='trace coverage with figleaf and write HTML') + help=('trace coverage with figleaf and write HTML ' + 'for files below the current working dir')) group.addoption('--figleaf-data', action='store', default='.figleaf', dest='figleafdata', help='path coverage tracing file.') @@ -25,32 +26,31 @@ class FigleafPlugin: def pytest_terminal_summary(self, terminalreporter): if hasattr(self, 'figleaf'): - datafile = terminalreporter.config.getvalue('figleafdata') - datafile = py.path.local(datafile) + config = terminalreporter.config + datafile = py.path.local(config.getvalue('figleafdata')) tw = terminalreporter._tw tw.sep('-', 'figleaf') tw.line('Writing figleaf data to %s' % (datafile)) self.figleaf.stop() self.figleaf.write_coverage(str(datafile)) - coverage = self.get_coverage(datafile, - terminalreporter.config.topdir) + coverage = self.get_coverage(datafile, config) - reportdir = terminalreporter.config.getvalue('figleafhtml') - reportdir = py.path.local(reportdir) + reportdir = py.path.local(config.getvalue('figleafhtml')) tw.line('Writing figleaf html to file://%s' % (reportdir)) self.figleaf.annotate_html.prepare_reportdir(str(reportdir)) exclude = [] self.figleaf.annotate_html.report_as_html(coverage, str(reportdir), exclude, {}) - def get_coverage(self, datafile, topdir): + def get_coverage(self, datafile, config): + # basepath = config.topdir + basepath = py.path.local() data = self.figleaf.read_coverage(str(datafile)) d = {} coverage = self.figleaf.combine_coverage(d, data) for path in coverage.keys(): - if not py.path.local(path).relto(topdir): + if not py.path.local(path).relto(basepath): del coverage[path] - return coverage @@ -71,4 +71,4 @@ def test_functional(testdir): assert result.stdout.fnmatch_lines([ '*figleaf html*' ]) - print result.stdout.str() + #print result.stdout.str() diff --git a/py/test/plugin/pytest_plugintester.py b/py/test/plugin/pytest_plugintester.py index be317d73c..c31f92ead 100644 --- a/py/test/plugin/pytest_plugintester.py +++ b/py/test/plugin/pytest_plugintester.py @@ -29,6 +29,7 @@ class PluginTester(Support): # FSTester = self.pyfuncitem.config.pytestplugins.getpluginattr("pytester", "FSTester") from pytest_pytester import TmpTestdir crunner = TmpTestdir(self.pyfuncitem) + self.pyfuncitem.addfinalizer(crunner.finalize) # for colitem in self.pyfuncitem.listchain(): if isinstance(colitem, py.test.collect.Module) and \ diff --git a/py/test/plugin/pytest_pytester.py b/py/test/plugin/pytest_pytester.py index e21dde849..85fa67d63 100644 --- a/py/test/plugin/pytest_pytester.py +++ b/py/test/plugin/pytest_pytester.py @@ -15,7 +15,6 @@ class PytesterPlugin: def pytest_funcarg__testdir(self, pyfuncitem): tmptestdir = TmpTestdir(pyfuncitem) - pyfuncitem.addfinalizer(tmptestdir.finalize) return tmptestdir def pytest_funcarg__EventRecorder(self, pyfuncitem): @@ -56,6 +55,11 @@ class TmpTestdir: self.plugins = [] self._syspathremove = [] self.chdir() # always chdir + assert hasattr(self, '_olddir') + self.pyfuncitem.addfinalizer(self.finalize) + + def __repr__(self): + return "" % (self.tmpdir,) def Config(self, pyplugins=None, topdir=None): if topdir is None: @@ -69,7 +73,7 @@ class TmpTestdir: self._olddir.chdir() def chdir(self): - old = self.testdir.chdir() + old = self.tmpdir.chdir() if not hasattr(self, '_olddir'): self._olddir = old @@ -110,9 +114,6 @@ class TmpTestdir: def mkdir(self, name): return self.tmpdir.mkdir(name) - def chdir(self): - return self.tmpdir.chdir() - def genitems(self, colitems): return list(self.session.genitems(colitems)) diff --git a/py/test/plugin/pytest_terminal.py b/py/test/plugin/pytest_terminal.py index 8e1a77f62..4705460e1 100644 --- a/py/test/plugin/pytest_terminal.py +++ b/py/test/plugin/pytest_terminal.py @@ -29,6 +29,7 @@ class TerminalReporter: self.gateway2info = {} def write_fspath_result(self, fspath, res): + fspath = self.curdir.bestrelpath(fspath) if fspath != self.currentfspath: self._tw.line() relpath = self.curdir.bestrelpath(fspath) @@ -138,6 +139,8 @@ class TerminalReporter: def pyevent_itemstart(self, item, node=None): if self.config.option.debug: info = item.repr_metainfo() +node +n line = info.verboseline(basedir=self.curdir) + " " extra = "" if node: