Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1try: 

2 from StringIO import StringIO 

3except ImportError: 

4 from io import StringIO 

5 

6import pytest 

7 

8StringIO # pyflakes, this is for re-export 

9 

10 

11if hasattr(pytest, 'hookimpl'): 

12 hookwrapper = pytest.hookimpl(hookwrapper=True) 

13else: 

14 hookwrapper = pytest.mark.hookwrapper 

15 

16 

17class SessionWrapper(object): 

18 def __init__(self, session): 

19 self._session = session 

20 if hasattr(session, 'testsfailed'): 

21 self._attr = 'testsfailed' 

22 else: 

23 self._attr = '_testsfailed' 

24 

25 @property 

26 def testsfailed(self): 

27 return getattr(self._session, self._attr) 

28 

29 @testsfailed.setter 

30 def testsfailed(self, value): 

31 setattr(self._session, self._attr, value) 

32 

33 

34def _attrgetter(attr): 

35 """ 

36 Return a callable object that fetches attr from its operand. 

37 

38 Unlike operator.attrgetter, the returned callable supports an extra two 

39 arg form for a default. 

40 """ 

41 def fn(obj, *args): 

42 return getattr(obj, attr, *args) 

43 

44 return fn 

45 

46 

47worker = 'slave' # for compatability with pytest-xdist<=1.22.0 

48workerid = worker + 'id' 

49workerinput = _attrgetter(worker + 'input') 

50workeroutput = _attrgetter(worker + 'output')