Skip to content

Regression with hypothesis 3.5.1 in pytest's test suite #368

@nicoddemus

Description

@nicoddemus

Hi!

Version 3.5.1 breaks pytest's test suite. Here's a sample of an error:

============================= test session starts =============================
platform win32 -- Python 3.5.0, pytest-3.0.3.dev0, py-1.4.31, pluggy-0.3.1
rootdir: C:\pytest, inifile: tox.ini
plugins: hypothesis-3.5.1
collected 87 items

testing\test_doctest.py .......F

================================== FAILURES ===================================
_____________________ TestDoctests.test_multiple_patterns _____________________

self = <test_doctest.TestDoctests object at 0x04CD1FF0>
testdir = <Testdir local('C:\\Users\\Bruno\\AppData\\Local\\Temp\\pytest-of-Bruno\\pytest-4992\\testdir\\test_multiple_patterns0')>

    def test_multiple_patterns(self, testdir):
        """Test support for multiple --doctest-glob arguments (#1255).
            """
        testdir.maketxtfile(xdoc="""
                >>> 1
                1
            """)
        testdir.makefile('.foo', test="""
                >>> 1
                1
            """)
        testdir.maketxtfile(test_normal="""
                >>> 1
                1
            """)
        expected = set(['xdoc.txt', 'test.foo', 'test_normal.txt'])
        assert set(x.basename for x in testdir.tmpdir.listdir()) == expected
        args = ["--doctest-glob=xdoc*.txt", "--doctest-glob=*.foo"]
        result = testdir.runpytest(*args)
        result.stdout.fnmatch_lines([
            '*test.foo *',
            '*xdoc.txt *',
>           '*2 passed*',
        ])
E       Failed: nomatch: '*test.foo *'
E           and: '============================= test session starts ============================='
E           and: 'platform win32 -- Python 3.5.0, pytest-3.0.3.dev0, py-1.4.31, pluggy-0.3.1'
E           and: 'rootdir: C:\\Users\\Bruno\\AppData\\Local\\Temp\\pytest-of-Bruno\\pytest-4992\\testdir\\test_multiple_patterns0, inifile: '
E           and: 'plugins: hypothesis-3.5.1'
E           and: 'collected 2 items'
E           and: ''
E       fnmatch: '*test.foo *'
E          with: 'test.foo F'
E       fnmatch: '*xdoc.txt *'
E          with: 'xdoc.txt F'
E       nomatch: '*2 passed*'
E           and: ''
E           and: '================================== FAILURES ==================================='
E           and: '_____________________________ [doctest] test.foo ______________________________'
E           and: ''
E           and: "self = <CallInfo when='call' exception: 'DoctestItem' object has no attribute 'function'>"
E           and: 'func = <function call_runtest_hook.<locals>.<lambda> at 0x04BDE468>'
E           and: "when = 'call'"
E           and: ''
E           and: '    def __init__(self, func, when):'
E           and: '        #: context of invocation: one of "setup", "call",'
E           and: '        #: "teardown", "memocollect"'
E           and: '        self.when = when'
E           and: '        self.start = time()'
E           and: '        try:'
E           and: '>           self.result = func()'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\runner.py:163: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: '>   return CallInfo(lambda: ihook(item=item, **kwds), when=when)'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\runner.py:151: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: "self = <_HookCaller 'pytest_runtest_call'>"
E           and: "kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'test.foo'>}"
E           and: ''
E           and: '    def __call__(self, **kwargs):'
E           and: '        assert not self.is_historic()'
E           and: '>       return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:724: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'self = <_pytest.config.PytestPluginManager object at 0x04CD1050>'
E           and: "hook = <_HookCaller 'pytest_runtest_call'>"
E           and: 'methods = [<_pytest.vendored_packages.pluggy.HookImpl object at 0x04CD1BF0>]'
E           and: "kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'test.foo'>}"
E           and: ''
E           and: '    def _hookexec(self, hook, methods, kwargs):'
E           and: '        # called from all hookcaller instances.'
E           and: '        # enable_tracing will set its own wrapping function at self._inner_hookexec'
E           and: '>       return self._inner_hookexec(hook, methods, kwargs)'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:338: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'self = <_pytest.vendored_packages.pluggy._TracedHookExecution object at 0x04BE4170>'
E           and: "hook = <_HookCaller 'pytest_runtest_call'>"
E           and: 'hook_impls = [<_pytest.vendored_packages.pluggy.HookImpl object at 0x04CD1BF0>]'
E           and: "kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'test.foo'>}"
E           and: ''
E           and: '    def __call__(self, hook, hook_impls, kwargs):'
E           and: '        self.before(hook.name, hook_impls, kwargs)'
E           and: '        outcome = _CallOutcome(lambda: self.oldcall(hook, hook_impls, kwargs))'
E           and: '        self.after(outcome, hook.name, hook_impls, kwargs)'
E           and: '>       return outcome.get_result()'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:301: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x04C34DD0>'
E           and: ''
E           and: '    def get_result(self):'
E           and: '        if self.excinfo is None:'
E           and: '            return self.result'
E           and: '        else:'
E           and: '            ex = self.excinfo'
E           and: '            if _py3:'
E           and: '>               raise ex[1].with_traceback(ex[2])'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:278: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x04C34DD0>'
E           and: 'func = <function _TracedHookExecution.__call__.<locals>.<lambda> at 0x04BDE858>'
E           and: ''
E           and: '    def __init__(self, func):'
E           and: '        try:'
E           and: '>           self.result = func()'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:264: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: '>   outcome = _CallOutcome(lambda: self.oldcall(hook, hook_impls, kwargs))'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:299: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: "hook = <_HookCaller 'pytest_runtest_call'>"
E           and: 'methods = [<_pytest.vendored_packages.pluggy.HookImpl object at 0x04CD1BF0>]'
E           and: "kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'test.foo'>}"
E           and: ''
E           and: '    self._inner_hookexec = lambda hook, methods, kwargs: \\'
E           and: '>       _MultiCall(methods, kwargs, hook.spec_opts).execute()'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:333: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: "self = <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>"
E           and: ''
E           and: '    def execute(self):'
E           and: '        all_kwargs = self.kwargs'
E           and: '        self.results = results = []'
E           and: '        firstresult = self.specopts.get("firstresult")'
E           and: '    '
E           and: '        while self.hook_impls:'
E           and: '            hook_impl = self.hook_impls.pop()'
E           and: '            args = [all_kwargs[argname] for argname in hook_impl.argnames]'
E           and: '            if hook_impl.hookwrapper:'
E           and: '>               return _wrapped_call(hook_impl.function(*args), self.execute)'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:595: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'wrap_controller = <generator object pytest_runtest_call at 0x04C31F60>'
E           and: "func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>>"
E           and: ''
E           and: '    def _wrapped_call(wrap_controller, func):'
E           and: '        """ Wrap calling to a function with a generator which needs to yield'
E           and: '        exactly once.  The yield point will trigger calling the wrapped function'
E           and: '        and return its _CallOutcome to the yield point.  The generator then needs'
E           and: '        to finish (raise StopIteration) in order for the wrapped call to complete.'
E           and: '        """'
E           and: '        try:'
E           and: '            next(wrap_controller)   # first yield'
E           and: '        except StopIteration:'
E           and: '            _raise_wrapfail(wrap_controller, "did not yield")'
E           and: '        call_outcome = _CallOutcome(func)'
E           and: '        try:'
E           and: '            wrap_controller.send(call_outcome)'
E           and: '            _raise_wrapfail(wrap_controller, "has second yield")'
E           and: '        except StopIteration:'
E           and: '            pass'
E           and: '>       return call_outcome.get_result()'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:253: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x04C34F30>'
E           and: ''
E           and: '    def get_result(self):'
E           and: '        if self.excinfo is None:'
E           and: '            return self.result'
E           and: '        else:'
E           and: '            ex = self.excinfo'
E           and: '            if _py3:'
E           and: '>               raise ex[1].with_traceback(ex[2])'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:278: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x04C34F30>'
E           and: "func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>>"
E           and: ''
E           and: '    def __init__(self, func):'
E           and: '        try:'
E           and: '>           self.result = func()'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:264: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: "self = <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>"
E           and: ''
E           and: '    def execute(self):'
E           and: '        all_kwargs = self.kwargs'
E           and: '        self.results = results = []'
E           and: '        firstresult = self.specopts.get("firstresult")'
E           and: '    '
E           and: '        while self.hook_impls:'
E           and: '            hook_impl = self.hook_impls.pop()'
E           and: '            args = [all_kwargs[argname] for argname in hook_impl.argnames]'
E           and: '            if hook_impl.hookwrapper:'
E           and: '>               return _wrapped_call(hook_impl.function(*args), self.execute)'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:595: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'wrap_controller = <generator object pytest_runtest_call at 0x04C31FC0>'
E           and: "func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>>"
E           and: ''
E           and: '    def _wrapped_call(wrap_controller, func):'
E           and: '        """ Wrap calling to a function with a generator which needs to yield'
E           and: '        exactly once.  The yield point will trigger calling the wrapped function'
E           and: '        and return its _CallOutcome to the yield point.  The generator then needs'
E           and: '        to finish (raise StopIteration) in order for the wrapped call to complete.'
E           and: '        """'
E           and: '        try:'
E           and: '>           next(wrap_controller)   # first yield'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:244: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: "item = <DoctestItem 'test.foo'>"
E           and: ''
E           and: '    @pytest.mark.hookwrapper'
E           and: '    def pytest_runtest_call(item):'
E           and: '>       if not is_hypothesis_test(item.function):'
E           and: "E       AttributeError: 'DoctestItem' object has no attribute 'function'"
E           and: ''
E           and: 'c:\\pytest\\.env35\\lib\\site-packages\\hypothesis\\extra\\pytestplugin.py:76: AttributeError'
E           and: '_____________________________ [doctest] xdoc.txt ______________________________'
E           and: ''
E           and: "self = <CallInfo when='call' exception: 'DoctestItem' object has no attribute 'function'>"
E           and: 'func = <function call_runtest_hook.<locals>.<lambda> at 0x04BDEAE0>'
E           and: "when = 'call'"
E           and: ''
E           and: '    def __init__(self, func, when):'
E           and: '        #: context of invocation: one of "setup", "call",'
E           and: '        #: "teardown", "memocollect"'
E           and: '        self.when = when'
E           and: '        self.start = time()'
E           and: '        try:'
E           and: '>           self.result = func()'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\runner.py:163: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: '>   return CallInfo(lambda: ihook(item=item, **kwds), when=when)'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\runner.py:151: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: "self = <_HookCaller 'pytest_runtest_call'>"
E           and: "kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'xdoc.txt'>}"
E           and: ''
E           and: '    def __call__(self, **kwargs):'
E           and: '        assert not self.is_historic()'
E           and: '>       return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:724: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'self = <_pytest.config.PytestPluginManager object at 0x04CD1050>'
E           and: "hook = <_HookCaller 'pytest_runtest_call'>"
E           and: 'methods = [<_pytest.vendored_packages.pluggy.HookImpl object at 0x04CD1BF0>]'
E           and: "kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'xdoc.txt'>}"
E           and: ''
E           and: '    def _hookexec(self, hook, methods, kwargs):'
E           and: '        # called from all hookcaller instances.'
E           and: '        # enable_tracing will set its own wrapping function at self._inner_hookexec'
E           and: '>       return self._inner_hookexec(hook, methods, kwargs)'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:338: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'self = <_pytest.vendored_packages.pluggy._TracedHookExecution object at 0x04BE4170>'
E           and: "hook = <_HookCaller 'pytest_runtest_call'>"
E           and: 'hook_impls = [<_pytest.vendored_packages.pluggy.HookImpl object at 0x04CD1BF0>]'
E           and: "kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'xdoc.txt'>}"
E           and: ''
E           and: '    def __call__(self, hook, hook_impls, kwargs):'
E           and: '        self.before(hook.name, hook_impls, kwargs)'
E           and: '        outcome = _CallOutcome(lambda: self.oldcall(hook, hook_impls, kwargs))'
E           and: '        self.after(outcome, hook.name, hook_impls, kwargs)'
E           and: '>       return outcome.get_result()'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:301: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x0555B3D0>'
E           and: ''
E           and: '    def get_result(self):'
E           and: '        if self.excinfo is None:'
E           and: '            return self.result'
E           and: '        else:'
E           and: '            ex = self.excinfo'
E           and: '            if _py3:'
E           and: '>               raise ex[1].with_traceback(ex[2])'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:278: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x0555B3D0>'
E           and: 'func = <function _TracedHookExecution.__call__.<locals>.<lambda> at 0x04BDED20>'
E           and: ''
E           and: '    def __init__(self, func):'
E           and: '        try:'
E           and: '>           self.result = func()'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:264: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: '>   outcome = _CallOutcome(lambda: self.oldcall(hook, hook_impls, kwargs))'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:299: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: "hook = <_HookCaller 'pytest_runtest_call'>"
E           and: 'methods = [<_pytest.vendored_packages.pluggy.HookImpl object at 0x04CD1BF0>]'
E           and: "kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'xdoc.txt'>}"
E           and: ''
E           and: '    self._inner_hookexec = lambda hook, methods, kwargs: \\'
E           and: '>       _MultiCall(methods, kwargs, hook.spec_opts).execute()'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:333: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: "self = <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>"
E           and: ''
E           and: '    def execute(self):'
E           and: '        all_kwargs = self.kwargs'
E           and: '        self.results = results = []'
E           and: '        firstresult = self.specopts.get("firstresult")'
E           and: '    '
E           and: '        while self.hook_impls:'
E           and: '            hook_impl = self.hook_impls.pop()'
E           and: '            args = [all_kwargs[argname] for argname in hook_impl.argnames]'
E           and: '            if hook_impl.hookwrapper:'
E           and: '>               return _wrapped_call(hook_impl.function(*args), self.execute)'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:595: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'wrap_controller = <generator object pytest_runtest_call at 0x04C41A80>'
E           and: "func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>>"
E           and: ''
E           and: '    def _wrapped_call(wrap_controller, func):'
E           and: '        """ Wrap calling to a function with a generator which needs to yield'
E           and: '        exactly once.  The yield point will trigger calling the wrapped function'
E           and: '        and return its _CallOutcome to the yield point.  The generator then needs'
E           and: '        to finish (raise StopIteration) in order for the wrapped call to complete.'
E           and: '        """'
E           and: '        try:'
E           and: '            next(wrap_controller)   # first yield'
E           and: '        except StopIteration:'
E           and: '            _raise_wrapfail(wrap_controller, "did not yield")'
E           and: '        call_outcome = _CallOutcome(func)'
E           and: '        try:'
E           and: '            wrap_controller.send(call_outcome)'
E           and: '            _raise_wrapfail(wrap_controller, "has second yield")'
E           and: '        except StopIteration:'
E           and: '            pass'
E           and: '>       return call_outcome.get_result()'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:253: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x0555B290>'
E           and: ''
E           and: '    def get_result(self):'
E           and: '        if self.excinfo is None:'
E           and: '            return self.result'
E           and: '        else:'
E           and: '            ex = self.excinfo'
E           and: '            if _py3:'
E           and: '>               raise ex[1].with_traceback(ex[2])'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:278: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x0555B290>'
E           and: "func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>>"
E           and: ''
E           and: '    def __init__(self, func):'
E           and: '        try:'
E           and: '>           self.result = func()'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:264: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: "self = <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>"
E           and: ''
E           and: '    def execute(self):'
E           and: '        all_kwargs = self.kwargs'
E           and: '        self.results = results = []'
E           and: '        firstresult = self.specopts.get("firstresult")'
E           and: '    '
E           and: '        while self.hook_impls:'
E           and: '            hook_impl = self.hook_impls.pop()'
E           and: '            args = [all_kwargs[argname] for argname in hook_impl.argnames]'
E           and: '            if hook_impl.hookwrapper:'
E           and: '>               return _wrapped_call(hook_impl.function(*args), self.execute)'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:595: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: 'wrap_controller = <generator object pytest_runtest_call at 0x04C412D0>'
E           and: "func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>>"
E           and: ''
E           and: '    def _wrapped_call(wrap_controller, func):'
E           and: '        """ Wrap calling to a function with a generator which needs to yield'
E           and: '        exactly once.  The yield point will trigger calling the wrapped function'
E           and: '        and return its _CallOutcome to the yield point.  The generator then needs'
E           and: '        to finish (raise StopIteration) in order for the wrapped call to complete.'
E           and: '        """'
E           and: '        try:'
E           and: '>           next(wrap_controller)   # first yield'
E           and: ''
E           and: 'c:\\pytest\\_pytest\\vendored_packages\\pluggy.py:244: '
E           and: '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _'
E           and: ''
E           and: "item = <DoctestItem 'xdoc.txt'>"
E           and: ''
E           and: '    @pytest.mark.hookwrapper'
E           and: '    def pytest_runtest_call(item):'
E           and: '>       if not is_hypothesis_test(item.function):'
E           and: "E       AttributeError: 'DoctestItem' object has no attribute 'function'"
E           and: ''
E           and: 'c:\\pytest\\.env35\\lib\\site-packages\\hypothesis\\extra\\pytestplugin.py:76: AttributeError'
E           and: '========================== 2 failed in 0.25 seconds ==========================='
E           and: ''
E       remains unmatched: '*2 passed*'

C:\pytest\testing\test_doctest.py:124: Failed
---------------------------- Captured stdout call -----------------------------
============================= test session starts =============================
platform win32 -- Python 3.5.0, pytest-3.0.3.dev0, py-1.4.31, pluggy-0.3.1
rootdir: C:\Users\Bruno\AppData\Local\Temp\pytest-of-Bruno\pytest-4992\testdir\test_multiple_patterns0, inifile: 
plugins: hypothesis-3.5.1
collected 2 items

test.foo F
xdoc.txt F

================================== FAILURES ===================================
_____________________________ [doctest] test.foo ______________________________

self = <CallInfo when='call' exception: 'DoctestItem' object has no attribute 'function'>
func = <function call_runtest_hook.<locals>.<lambda> at 0x04BDE468>
when = 'call'

    def __init__(self, func, when):
        #: context of invocation: one of "setup", "call",
        #: "teardown", "memocollect"
        self.when = when
        self.start = time()
        try:
>           self.result = func()

c:\pytest\_pytest\runner.py:163: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

>   return CallInfo(lambda: ihook(item=item, **kwds), when=when)

c:\pytest\_pytest\runner.py:151: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_HookCaller 'pytest_runtest_call'>
kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'test.foo'>}

    def __call__(self, **kwargs):
        assert not self.is_historic()
>       return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)

c:\pytest\_pytest\vendored_packages\pluggy.py:724: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.config.PytestPluginManager object at 0x04CD1050>
hook = <_HookCaller 'pytest_runtest_call'>
methods = [<_pytest.vendored_packages.pluggy.HookImpl object at 0x04CD1BF0>]
kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'test.foo'>}

    def _hookexec(self, hook, methods, kwargs):
        # called from all hookcaller instances.
        # enable_tracing will set its own wrapping function at self._inner_hookexec
>       return self._inner_hookexec(hook, methods, kwargs)

c:\pytest\_pytest\vendored_packages\pluggy.py:338: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.vendored_packages.pluggy._TracedHookExecution object at 0x04BE4170>
hook = <_HookCaller 'pytest_runtest_call'>
hook_impls = [<_pytest.vendored_packages.pluggy.HookImpl object at 0x04CD1BF0>]
kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'test.foo'>}

    def __call__(self, hook, hook_impls, kwargs):
        self.before(hook.name, hook_impls, kwargs)
        outcome = _CallOutcome(lambda: self.oldcall(hook, hook_impls, kwargs))
        self.after(outcome, hook.name, hook_impls, kwargs)
>       return outcome.get_result()

c:\pytest\_pytest\vendored_packages\pluggy.py:301: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x04C34DD0>

    def get_result(self):
        if self.excinfo is None:
            return self.result
        else:
            ex = self.excinfo
            if _py3:
>               raise ex[1].with_traceback(ex[2])

c:\pytest\_pytest\vendored_packages\pluggy.py:278: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x04C34DD0>
func = <function _TracedHookExecution.__call__.<locals>.<lambda> at 0x04BDE858>

    def __init__(self, func):
        try:
>           self.result = func()

c:\pytest\_pytest\vendored_packages\pluggy.py:264: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

>   outcome = _CallOutcome(lambda: self.oldcall(hook, hook_impls, kwargs))

c:\pytest\_pytest\vendored_packages\pluggy.py:299: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

hook = <_HookCaller 'pytest_runtest_call'>
methods = [<_pytest.vendored_packages.pluggy.HookImpl object at 0x04CD1BF0>]
kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'test.foo'>}

    self._inner_hookexec = lambda hook, methods, kwargs: \
>       _MultiCall(methods, kwargs, hook.spec_opts).execute()

c:\pytest\_pytest\vendored_packages\pluggy.py:333: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>

    def execute(self):
        all_kwargs = self.kwargs
        self.results = results = []
        firstresult = self.specopts.get("firstresult")

        while self.hook_impls:
            hook_impl = self.hook_impls.pop()
            args = [all_kwargs[argname] for argname in hook_impl.argnames]
            if hook_impl.hookwrapper:
>               return _wrapped_call(hook_impl.function(*args), self.execute)

c:\pytest\_pytest\vendored_packages\pluggy.py:595: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

wrap_controller = <generator object pytest_runtest_call at 0x04C31F60>
func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>>

    def _wrapped_call(wrap_controller, func):
        """ Wrap calling to a function with a generator which needs to yield
        exactly once.  The yield point will trigger calling the wrapped function
        and return its _CallOutcome to the yield point.  The generator then needs
        to finish (raise StopIteration) in order for the wrapped call to complete.
        """
        try:
            next(wrap_controller)   # first yield
        except StopIteration:
            _raise_wrapfail(wrap_controller, "did not yield")
        call_outcome = _CallOutcome(func)
        try:
            wrap_controller.send(call_outcome)
            _raise_wrapfail(wrap_controller, "has second yield")
        except StopIteration:
            pass
>       return call_outcome.get_result()

c:\pytest\_pytest\vendored_packages\pluggy.py:253: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x04C34F30>

    def get_result(self):
        if self.excinfo is None:
            return self.result
        else:
            ex = self.excinfo
            if _py3:
>               raise ex[1].with_traceback(ex[2])

c:\pytest\_pytest\vendored_packages\pluggy.py:278: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x04C34F30>
func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>>

    def __init__(self, func):
        try:
>           self.result = func()

c:\pytest\_pytest\vendored_packages\pluggy.py:264: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>

    def execute(self):
        all_kwargs = self.kwargs
        self.results = results = []
        firstresult = self.specopts.get("firstresult")

        while self.hook_impls:
            hook_impl = self.hook_impls.pop()
            args = [all_kwargs[argname] for argname in hook_impl.argnames]
            if hook_impl.hookwrapper:
>               return _wrapped_call(hook_impl.function(*args), self.execute)

c:\pytest\_pytest\vendored_packages\pluggy.py:595: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

wrap_controller = <generator object pytest_runtest_call at 0x04C31FC0>
func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'test.foo'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>>

    def _wrapped_call(wrap_controller, func):
        """ Wrap calling to a function with a generator which needs to yield
        exactly once.  The yield point will trigger calling the wrapped function
        and return its _CallOutcome to the yield point.  The generator then needs
        to finish (raise StopIteration) in order for the wrapped call to complete.
        """
        try:
>           next(wrap_controller)   # first yield

c:\pytest\_pytest\vendored_packages\pluggy.py:244: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

item = <DoctestItem 'test.foo'>

    @pytest.mark.hookwrapper
    def pytest_runtest_call(item):
>       if not is_hypothesis_test(item.function):
E       AttributeError: 'DoctestItem' object has no attribute 'function'

c:\pytest\.env35\lib\site-packages\hypothesis\extra\pytestplugin.py:76: AttributeError
_____________________________ [doctest] xdoc.txt ______________________________

self = <CallInfo when='call' exception: 'DoctestItem' object has no attribute 'function'>
func = <function call_runtest_hook.<locals>.<lambda> at 0x04BDEAE0>
when = 'call'

    def __init__(self, func, when):
        #: context of invocation: one of "setup", "call",
        #: "teardown", "memocollect"
        self.when = when
        self.start = time()
        try:
>           self.result = func()

c:\pytest\_pytest\runner.py:163: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

>   return CallInfo(lambda: ihook(item=item, **kwds), when=when)

c:\pytest\_pytest\runner.py:151: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_HookCaller 'pytest_runtest_call'>
kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'xdoc.txt'>}

    def __call__(self, **kwargs):
        assert not self.is_historic()
>       return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)

c:\pytest\_pytest\vendored_packages\pluggy.py:724: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.config.PytestPluginManager object at 0x04CD1050>
hook = <_HookCaller 'pytest_runtest_call'>
methods = [<_pytest.vendored_packages.pluggy.HookImpl object at 0x04CD1BF0>]
kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'xdoc.txt'>}

    def _hookexec(self, hook, methods, kwargs):
        # called from all hookcaller instances.
        # enable_tracing will set its own wrapping function at self._inner_hookexec
>       return self._inner_hookexec(hook, methods, kwargs)

c:\pytest\_pytest\vendored_packages\pluggy.py:338: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.vendored_packages.pluggy._TracedHookExecution object at 0x04BE4170>
hook = <_HookCaller 'pytest_runtest_call'>
hook_impls = [<_pytest.vendored_packages.pluggy.HookImpl object at 0x04CD1BF0>]
kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'xdoc.txt'>}

    def __call__(self, hook, hook_impls, kwargs):
        self.before(hook.name, hook_impls, kwargs)
        outcome = _CallOutcome(lambda: self.oldcall(hook, hook_impls, kwargs))
        self.after(outcome, hook.name, hook_impls, kwargs)
>       return outcome.get_result()

c:\pytest\_pytest\vendored_packages\pluggy.py:301: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x0555B3D0>

    def get_result(self):
        if self.excinfo is None:
            return self.result
        else:
            ex = self.excinfo
            if _py3:
>               raise ex[1].with_traceback(ex[2])

c:\pytest\_pytest\vendored_packages\pluggy.py:278: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x0555B3D0>
func = <function _TracedHookExecution.__call__.<locals>.<lambda> at 0x04BDED20>

    def __init__(self, func):
        try:
>           self.result = func()

c:\pytest\_pytest\vendored_packages\pluggy.py:264: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

>   outcome = _CallOutcome(lambda: self.oldcall(hook, hook_impls, kwargs))

c:\pytest\_pytest\vendored_packages\pluggy.py:299: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

hook = <_HookCaller 'pytest_runtest_call'>
methods = [<_pytest.vendored_packages.pluggy.HookImpl object at 0x04CD1BF0>]
kwargs = {'__multicall__': <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>, 'item': <DoctestItem 'xdoc.txt'>}

    self._inner_hookexec = lambda hook, methods, kwargs: \
>       _MultiCall(methods, kwargs, hook.spec_opts).execute()

c:\pytest\_pytest\vendored_packages\pluggy.py:333: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>

    def execute(self):
        all_kwargs = self.kwargs
        self.results = results = []
        firstresult = self.specopts.get("firstresult")

        while self.hook_impls:
            hook_impl = self.hook_impls.pop()
            args = [all_kwargs[argname] for argname in hook_impl.argnames]
            if hook_impl.hookwrapper:
>               return _wrapped_call(hook_impl.function(*args), self.execute)

c:\pytest\_pytest\vendored_packages\pluggy.py:595: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

wrap_controller = <generator object pytest_runtest_call at 0x04C41A80>
func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>>

    def _wrapped_call(wrap_controller, func):
        """ Wrap calling to a function with a generator which needs to yield
        exactly once.  The yield point will trigger calling the wrapped function
        and return its _CallOutcome to the yield point.  The generator then needs
        to finish (raise StopIteration) in order for the wrapped call to complete.
        """
        try:
            next(wrap_controller)   # first yield
        except StopIteration:
            _raise_wrapfail(wrap_controller, "did not yield")
        call_outcome = _CallOutcome(func)
        try:
            wrap_controller.send(call_outcome)
            _raise_wrapfail(wrap_controller, "has second yield")
        except StopIteration:
            pass
>       return call_outcome.get_result()

c:\pytest\_pytest\vendored_packages\pluggy.py:253: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x0555B290>

    def get_result(self):
        if self.excinfo is None:
            return self.result
        else:
            ex = self.excinfo
            if _py3:
>               raise ex[1].with_traceback(ex[2])

c:\pytest\_pytest\vendored_packages\pluggy.py:278: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_pytest.vendored_packages.pluggy._CallOutcome object at 0x0555B290>
func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>>

    def __init__(self, func):
        try:
>           self.result = func()

c:\pytest\_pytest\vendored_packages\pluggy.py:264: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>

    def execute(self):
        all_kwargs = self.kwargs
        self.results = results = []
        firstresult = self.specopts.get("firstresult")

        while self.hook_impls:
            hook_impl = self.hook_impls.pop()
            args = [all_kwargs[argname] for argname in hook_impl.argnames]
            if hook_impl.hookwrapper:
>               return _wrapped_call(hook_impl.function(*args), self.execute)

c:\pytest\_pytest\vendored_packages\pluggy.py:595: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

wrap_controller = <generator object pytest_runtest_call at 0x04C412D0>
func = <bound method _MultiCall.execute of <_MultiCall 0 results, 1 meths, kwargs={'item': <DoctestItem 'xdoc.txt'>, '__multicall__': <_MultiCall 0 results, 1 meths, kwargs={...}>}>>

    def _wrapped_call(wrap_controller, func):
        """ Wrap calling to a function with a generator which needs to yield
        exactly once.  The yield point will trigger calling the wrapped function
        and return its _CallOutcome to the yield point.  The generator then needs
        to finish (raise StopIteration) in order for the wrapped call to complete.
        """
        try:
>           next(wrap_controller)   # first yield

c:\pytest\_pytest\vendored_packages\pluggy.py:244: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

item = <DoctestItem 'xdoc.txt'>

    @pytest.mark.hookwrapper
    def pytest_runtest_call(item):
>       if not is_hypothesis_test(item.function):
E       AttributeError: 'DoctestItem' object has no attribute 'function'

c:\pytest\.env35\lib\site-packages\hypothesis\extra\pytestplugin.py:76: AttributeError
========================== 2 failed in 0.25 seconds ===========================
!!!!!!!!!!!!!!!!!!! Interrupted: stopping after 1 failures !!!!!!!!!!!!!!!!!!!!
===================== 1 failed, 7 passed in 1.34 seconds ======================

Installing hypothesis 3.5.0 fixes the issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions