Thanks to visit codestin.com
Credit goes to github.com

Skip to content

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

conftest.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import (absolute_import, division, print_function,
22
unicode_literals)
33

4+
from six.moves import reduce
45
import inspect
56
import os
67
import pytest
@@ -83,17 +84,31 @@ def pytest_configure(config):
8384
ccache.ConversionCache(max_size=int(max_size))
8485
else:
8586
ccache.conversion_cache = ccache.ConversionCache()
87+
if config.pluginmanager.hasplugin('xdist'):
88+
config.pluginmanager.register(DeferPlugin())
8689

8790

8891
def pytest_unconfigure(config):
8992
ccache.conversion_cache.expire()
9093
matplotlib._called_from_pytest = False
9194

9295

96+
def pytest_sessionfinish(session):
97+
if hasattr(session.config, 'slaveoutput'):
98+
session.config.slaveoutput['cache-report'] = ccache.conversion_cache.report()
99+
100+
93101
def pytest_terminal_summary(terminalreporter):
94102
tr = terminalreporter
95-
data = ccache.conversion_cache.report()
96-
tr.write_sep('-', 'Image conversion cache report')
103+
if hasattr(tr.config, 'cache_reports'):
104+
reports = tr.config.cache_reports
105+
data = {'hits': reduce(lambda x, y: x.union(y),
106+
(rep['hits'] for rep in reports)),
107+
'gets': reduce(lambda x, y: x.union(y),
108+
(rep['gets'] for rep in reports))}
109+
else:
110+
data = ccache.conversion_cache.report()
111+
tr.write_sep('=', 'Image conversion cache report')
97112
tr.write_line('Hit rate: %d/%d' % (len(data['hits']), len(data['gets'])))
98113
if tr.config.getoption('--conversion-cache-report-misses'):
99114
tr.write_line('Missed files:')
@@ -125,3 +140,10 @@ def pytest_pycollect_makeitem(collector, name, obj):
125140
obj.teardown_class = obj.tearDownClass
126141

127142
return pytest.Class(name, parent=collector)
143+
144+
145+
class DeferPlugin(object):
146+
def pytest_testnodedown(self, node, error):
147+
if not hasattr(node.config, 'cache_reports'):
148+
node.config.cache_reports = []
149+
node.config.cache_reports.append(node.slaveoutput['cache-report'])

0 commit comments

Comments
 (0)