Skip to content

pytest 6.0.0rc1: TypeError: append() takes exactly one argument (5 given) #45

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
hroncok opened this issue Jul 22, 2020 · 12 comments · Fixed by #46
Closed

pytest 6.0.0rc1: TypeError: append() takes exactly one argument (5 given) #45

hroncok opened this issue Jul 22, 2020 · 12 comments · Fixed by #46

Comments

@hroncok
Copy link
Member

hroncok commented Jul 22, 2020

Hello, this is pytest-forked @ b29c386:

$ tox -e py38-pytestlatest --pre
py38-pytestlatest inst-nodeps: .../pytest-forked/.tox/.tmp/package/1/pytest-forked-1.2.1.dev4+gb29c386.tar.gz
py38-pytestlatest installed: attrs==19.3.0,iniconfig==1.0.0,more-itertools==8.4.0,packaging==20.4,pluggy==0.13.1,py==1.9.0,pycmd==1.2,pyparsing==3.0.0a2,pytest==6.0.0rc1,pytest-forked==1.2.1.dev4+gb29c386,setuptools-scm==4.1.2,six==1.15.0,toml==0.10.1
py38-pytestlatest run-test-pre: PYTHONHASHSEED='3934015748'
py38-pytestlatest run-test: commands[0] | pytest
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1
cachedir: .tox/py38-pytestlatest/.pytest_cache
rootdir: .../pytest-forked, configfile: tox.ini
plugins: forked-1.2.1.dev4+gb29c386
collected 10 items

testing/test_boxed.py EEExxE                                             [ 60%]
testing/test_xfail_behavior.py EEEE                                      [100%]

==================================== ERRORS ====================================
___________________ ERROR at setup of test_functional_boxed ____________________

cls = <class '_pytest.runner.CallInfo'>
func = <function call_runtest_hook.<locals>.<lambda> at 0x7eff61f7eca0>
when = 'setup'
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
        cls,
        func: "Callable[[], _T]",
        when: "Literal['collect', 'setup', 'call', 'teardown']",
        reraise: "Optional[Union[Type[BaseException], Tuple[Type[BaseException], ...]]]" = None,
    ) -> "CallInfo[_T]":
        excinfo = None
        start = timing.time()
        precise_start = timing.perf_counter()
        try:
>           result = func()  # type: Optional[_T]

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:287: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:240: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:141: in pytest_runtest_setup
    item.session._setupstate.prepare(item)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:428: in prepare
    raise e
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:425: in prepare
    col.setup()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/python.py:1568: in setup
    self._request._fillfixtures()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:568: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:581: in getfixturevalue
    fixturedef = self._get_active_fixturedef(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:601: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:683: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1053: in execute
    result = hook.pytest_fixture_setup(fixturedef=self, request=request)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1108: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:915: in call_fixture_func
    fixture_result = fixturefunc(**kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:387: in testdir
    return Testdir(request, tmpdir_factory)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:585: in __init__
    self.tmpdir = tmpdir_factory.mktemp(name, numbered=True)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:120: in mktemp
    return py.path.local(self._tmppath_factory.mktemp(basename, numbered).resolve())
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:72: in mktemp
    basename = self._ensure_relative_to_basetemp(basename)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:51: in _ensure_relative_to_basetemp
    if (self.getbasetemp() / basename).resolve().parent != self.getbasetemp():
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:98: in getbasetemp
    basetemp = make_numbered_dir_with_cleanup(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

root = PosixPath('/tmp/pytest-of-churchyard'), prefix = 'pytest-', keep = 3
lock_timeout = 10800

    def make_numbered_dir_with_cleanup(
        root: Path, prefix: str, keep: int, lock_timeout: float
    ) -> Path:
        """creates a numbered dir with a cleanup lock and removes old ones"""
        e = None
        for i in range(10):
            try:
                p = make_numbered_dir(root, prefix)
                lock_path = create_cleanup_lock(p)
                register_cleanup_lock_removal(lock_path)
            except Exception as exc:
                e = exc
            else:
                consider_lock_dead_if_created_before = p.stat().st_mtime - lock_timeout
                # Register a cleanup for program exit
>               atexit.register(
                    cleanup_numbered_dir,
                    root,
                    prefix,
                    keep,
                    consider_lock_dead_if_created_before,
                )
E               TypeError: append() takes exactly one argument (5 given)

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pathlib.py:354: TypeError
_______________ ERROR at setup of test_functional_boxed_per_test _______________

cls = <class '_pytest.runner.CallInfo'>
func = <function call_runtest_hook.<locals>.<lambda> at 0x7eff61f7eaf0>
when = 'setup'
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
        cls,
        func: "Callable[[], _T]",
        when: "Literal['collect', 'setup', 'call', 'teardown']",
        reraise: "Optional[Union[Type[BaseException], Tuple[Type[BaseException], ...]]]" = None,
    ) -> "CallInfo[_T]":
        excinfo = None
        start = timing.time()
        precise_start = timing.perf_counter()
        try:
>           result = func()  # type: Optional[_T]

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:287: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:240: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:141: in pytest_runtest_setup
    item.session._setupstate.prepare(item)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:428: in prepare
    raise e
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:425: in prepare
    col.setup()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/python.py:1568: in setup
    self._request._fillfixtures()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:568: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:581: in getfixturevalue
    fixturedef = self._get_active_fixturedef(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:601: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:683: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1053: in execute
    result = hook.pytest_fixture_setup(fixturedef=self, request=request)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1108: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:915: in call_fixture_func
    fixture_result = fixturefunc(**kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:387: in testdir
    return Testdir(request, tmpdir_factory)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:585: in __init__
    self.tmpdir = tmpdir_factory.mktemp(name, numbered=True)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:120: in mktemp
    return py.path.local(self._tmppath_factory.mktemp(basename, numbered).resolve())
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:72: in mktemp
    basename = self._ensure_relative_to_basetemp(basename)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:51: in _ensure_relative_to_basetemp
    if (self.getbasetemp() / basename).resolve().parent != self.getbasetemp():
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:98: in getbasetemp
    basetemp = make_numbered_dir_with_cleanup(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

root = PosixPath('/tmp/pytest-of-churchyard'), prefix = 'pytest-', keep = 3
lock_timeout = 10800

    def make_numbered_dir_with_cleanup(
        root: Path, prefix: str, keep: int, lock_timeout: float
    ) -> Path:
        """creates a numbered dir with a cleanup lock and removes old ones"""
        e = None
        for i in range(10):
            try:
                p = make_numbered_dir(root, prefix)
                lock_path = create_cleanup_lock(p)
                register_cleanup_lock_removal(lock_path)
            except Exception as exc:
                e = exc
            else:
                consider_lock_dead_if_created_before = p.stat().st_mtime - lock_timeout
                # Register a cleanup for program exit
>               atexit.register(
                    cleanup_numbered_dir,
                    root,
                    prefix,
                    keep,
                    consider_lock_dead_if_created_before,
                )
E               TypeError: append() takes exactly one argument (5 given)

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pathlib.py:354: TypeError
____________ ERROR at setup of test_functional_boxed_capturing[no] _____________

cls = <class '_pytest.runner.CallInfo'>
func = <function call_runtest_hook.<locals>.<lambda> at 0x7eff61ea9e50>
when = 'setup'
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
        cls,
        func: "Callable[[], _T]",
        when: "Literal['collect', 'setup', 'call', 'teardown']",
        reraise: "Optional[Union[Type[BaseException], Tuple[Type[BaseException], ...]]]" = None,
    ) -> "CallInfo[_T]":
        excinfo = None
        start = timing.time()
        precise_start = timing.perf_counter()
        try:
>           result = func()  # type: Optional[_T]

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:287: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:240: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:141: in pytest_runtest_setup
    item.session._setupstate.prepare(item)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:428: in prepare
    raise e
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:425: in prepare
    col.setup()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/python.py:1568: in setup
    self._request._fillfixtures()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:568: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:581: in getfixturevalue
    fixturedef = self._get_active_fixturedef(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:601: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:683: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1053: in execute
    result = hook.pytest_fixture_setup(fixturedef=self, request=request)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1108: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:915: in call_fixture_func
    fixture_result = fixturefunc(**kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:387: in testdir
    return Testdir(request, tmpdir_factory)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:585: in __init__
    self.tmpdir = tmpdir_factory.mktemp(name, numbered=True)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:120: in mktemp
    return py.path.local(self._tmppath_factory.mktemp(basename, numbered).resolve())
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:72: in mktemp
    basename = self._ensure_relative_to_basetemp(basename)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:51: in _ensure_relative_to_basetemp
    if (self.getbasetemp() / basename).resolve().parent != self.getbasetemp():
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:98: in getbasetemp
    basetemp = make_numbered_dir_with_cleanup(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

root = PosixPath('/tmp/pytest-of-churchyard'), prefix = 'pytest-', keep = 3
lock_timeout = 10800

    def make_numbered_dir_with_cleanup(
        root: Path, prefix: str, keep: int, lock_timeout: float
    ) -> Path:
        """creates a numbered dir with a cleanup lock and removes old ones"""
        e = None
        for i in range(10):
            try:
                p = make_numbered_dir(root, prefix)
                lock_path = create_cleanup_lock(p)
                register_cleanup_lock_removal(lock_path)
            except Exception as exc:
                e = exc
            else:
                consider_lock_dead_if_created_before = p.stat().st_mtime - lock_timeout
                # Register a cleanup for program exit
>               atexit.register(
                    cleanup_numbered_dir,
                    root,
                    prefix,
                    keep,
                    consider_lock_dead_if_created_before,
                )
E               TypeError: append() takes exactly one argument (5 given)

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pathlib.py:354: TypeError
________________ ERROR at setup of test_is_not_boxed_by_default ________________

cls = <class '_pytest.runner.CallInfo'>
func = <function call_runtest_hook.<locals>.<lambda> at 0x7eff61dded30>
when = 'setup'
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
        cls,
        func: "Callable[[], _T]",
        when: "Literal['collect', 'setup', 'call', 'teardown']",
        reraise: "Optional[Union[Type[BaseException], Tuple[Type[BaseException], ...]]]" = None,
    ) -> "CallInfo[_T]":
        excinfo = None
        start = timing.time()
        precise_start = timing.perf_counter()
        try:
>           result = func()  # type: Optional[_T]

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:287: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:240: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:141: in pytest_runtest_setup
    item.session._setupstate.prepare(item)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:428: in prepare
    raise e
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:425: in prepare
    col.setup()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/python.py:1568: in setup
    self._request._fillfixtures()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:568: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:581: in getfixturevalue
    fixturedef = self._get_active_fixturedef(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:601: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:683: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1053: in execute
    result = hook.pytest_fixture_setup(fixturedef=self, request=request)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1108: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:915: in call_fixture_func
    fixture_result = fixturefunc(**kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:387: in testdir
    return Testdir(request, tmpdir_factory)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:585: in __init__
    self.tmpdir = tmpdir_factory.mktemp(name, numbered=True)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:120: in mktemp
    return py.path.local(self._tmppath_factory.mktemp(basename, numbered).resolve())
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:72: in mktemp
    basename = self._ensure_relative_to_basetemp(basename)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:51: in _ensure_relative_to_basetemp
    if (self.getbasetemp() / basename).resolve().parent != self.getbasetemp():
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:98: in getbasetemp
    basetemp = make_numbered_dir_with_cleanup(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

root = PosixPath('/tmp/pytest-of-churchyard'), prefix = 'pytest-', keep = 3
lock_timeout = 10800

    def make_numbered_dir_with_cleanup(
        root: Path, prefix: str, keep: int, lock_timeout: float
    ) -> Path:
        """creates a numbered dir with a cleanup lock and removes old ones"""
        e = None
        for i in range(10):
            try:
                p = make_numbered_dir(root, prefix)
                lock_path = create_cleanup_lock(p)
                register_cleanup_lock_removal(lock_path)
            except Exception as exc:
                e = exc
            else:
                consider_lock_dead_if_created_before = p.stat().st_mtime - lock_timeout
                # Register a cleanup for program exit
>               atexit.register(
                    cleanup_numbered_dir,
                    root,
                    prefix,
                    keep,
                    consider_lock_dead_if_created_before,
                )
E               TypeError: append() takes exactly one argument (5 given)

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pathlib.py:354: TypeError
__________________ ERROR at setup of test_xfail[strict xfail] __________________

cls = <class '_pytest.runner.CallInfo'>
func = <function call_runtest_hook.<locals>.<lambda> at 0x7eff61893040>
when = 'setup'
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
        cls,
        func: "Callable[[], _T]",
        when: "Literal['collect', 'setup', 'call', 'teardown']",
        reraise: "Optional[Union[Type[BaseException], Tuple[Type[BaseException], ...]]]" = None,
    ) -> "CallInfo[_T]":
        excinfo = None
        start = timing.time()
        precise_start = timing.perf_counter()
        try:
>           result = func()  # type: Optional[_T]

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:287: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:240: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:141: in pytest_runtest_setup
    item.session._setupstate.prepare(item)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:428: in prepare
    raise e
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:425: in prepare
    col.setup()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/python.py:1568: in setup
    self._request._fillfixtures()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:568: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:581: in getfixturevalue
    fixturedef = self._get_active_fixturedef(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:601: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:683: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1053: in execute
    result = hook.pytest_fixture_setup(fixturedef=self, request=request)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1108: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:915: in call_fixture_func
    fixture_result = fixturefunc(**kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:387: in testdir
    return Testdir(request, tmpdir_factory)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:585: in __init__
    self.tmpdir = tmpdir_factory.mktemp(name, numbered=True)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:120: in mktemp
    return py.path.local(self._tmppath_factory.mktemp(basename, numbered).resolve())
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:72: in mktemp
    basename = self._ensure_relative_to_basetemp(basename)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:51: in _ensure_relative_to_basetemp
    if (self.getbasetemp() / basename).resolve().parent != self.getbasetemp():
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:98: in getbasetemp
    basetemp = make_numbered_dir_with_cleanup(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

root = PosixPath('/tmp/pytest-of-churchyard'), prefix = 'pytest-', keep = 3
lock_timeout = 10800

    def make_numbered_dir_with_cleanup(
        root: Path, prefix: str, keep: int, lock_timeout: float
    ) -> Path:
        """creates a numbered dir with a cleanup lock and removes old ones"""
        e = None
        for i in range(10):
            try:
                p = make_numbered_dir(root, prefix)
                lock_path = create_cleanup_lock(p)
                register_cleanup_lock_removal(lock_path)
            except Exception as exc:
                e = exc
            else:
                consider_lock_dead_if_created_before = p.stat().st_mtime - lock_timeout
                # Register a cleanup for program exit
>               atexit.register(
                    cleanup_numbered_dir,
                    root,
                    prefix,
                    keep,
                    consider_lock_dead_if_created_before,
                )
E               TypeError: append() takes exactly one argument (5 given)

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pathlib.py:354: TypeError
__________________ ERROR at setup of test_xfail[strict xpass] __________________

cls = <class '_pytest.runner.CallInfo'>
func = <function call_runtest_hook.<locals>.<lambda> at 0x7eff61f7ea60>
when = 'setup'
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
        cls,
        func: "Callable[[], _T]",
        when: "Literal['collect', 'setup', 'call', 'teardown']",
        reraise: "Optional[Union[Type[BaseException], Tuple[Type[BaseException], ...]]]" = None,
    ) -> "CallInfo[_T]":
        excinfo = None
        start = timing.time()
        precise_start = timing.perf_counter()
        try:
>           result = func()  # type: Optional[_T]

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:287: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:240: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:141: in pytest_runtest_setup
    item.session._setupstate.prepare(item)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:428: in prepare
    raise e
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:425: in prepare
    col.setup()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/python.py:1568: in setup
    self._request._fillfixtures()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:568: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:581: in getfixturevalue
    fixturedef = self._get_active_fixturedef(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:601: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:683: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1053: in execute
    result = hook.pytest_fixture_setup(fixturedef=self, request=request)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1108: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:915: in call_fixture_func
    fixture_result = fixturefunc(**kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:387: in testdir
    return Testdir(request, tmpdir_factory)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:585: in __init__
    self.tmpdir = tmpdir_factory.mktemp(name, numbered=True)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:120: in mktemp
    return py.path.local(self._tmppath_factory.mktemp(basename, numbered).resolve())
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:72: in mktemp
    basename = self._ensure_relative_to_basetemp(basename)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:51: in _ensure_relative_to_basetemp
    if (self.getbasetemp() / basename).resolve().parent != self.getbasetemp():
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:98: in getbasetemp
    basetemp = make_numbered_dir_with_cleanup(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

root = PosixPath('/tmp/pytest-of-churchyard'), prefix = 'pytest-', keep = 3
lock_timeout = 10800

    def make_numbered_dir_with_cleanup(
        root: Path, prefix: str, keep: int, lock_timeout: float
    ) -> Path:
        """creates a numbered dir with a cleanup lock and removes old ones"""
        e = None
        for i in range(10):
            try:
                p = make_numbered_dir(root, prefix)
                lock_path = create_cleanup_lock(p)
                register_cleanup_lock_removal(lock_path)
            except Exception as exc:
                e = exc
            else:
                consider_lock_dead_if_created_before = p.stat().st_mtime - lock_timeout
                # Register a cleanup for program exit
>               atexit.register(
                    cleanup_numbered_dir,
                    root,
                    prefix,
                    keep,
                    consider_lock_dead_if_created_before,
                )
E               TypeError: append() takes exactly one argument (5 given)

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pathlib.py:354: TypeError
________________ ERROR at setup of test_xfail[non-strict xfail] ________________

cls = <class '_pytest.runner.CallInfo'>
func = <function call_runtest_hook.<locals>.<lambda> at 0x7eff61f0ca60>
when = 'setup'
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
        cls,
        func: "Callable[[], _T]",
        when: "Literal['collect', 'setup', 'call', 'teardown']",
        reraise: "Optional[Union[Type[BaseException], Tuple[Type[BaseException], ...]]]" = None,
    ) -> "CallInfo[_T]":
        excinfo = None
        start = timing.time()
        precise_start = timing.perf_counter()
        try:
>           result = func()  # type: Optional[_T]

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:287: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:240: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:141: in pytest_runtest_setup
    item.session._setupstate.prepare(item)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:428: in prepare
    raise e
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:425: in prepare
    col.setup()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/python.py:1568: in setup
    self._request._fillfixtures()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:568: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:581: in getfixturevalue
    fixturedef = self._get_active_fixturedef(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:601: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:683: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1053: in execute
    result = hook.pytest_fixture_setup(fixturedef=self, request=request)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1108: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:915: in call_fixture_func
    fixture_result = fixturefunc(**kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:387: in testdir
    return Testdir(request, tmpdir_factory)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:585: in __init__
    self.tmpdir = tmpdir_factory.mktemp(name, numbered=True)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:120: in mktemp
    return py.path.local(self._tmppath_factory.mktemp(basename, numbered).resolve())
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:72: in mktemp
    basename = self._ensure_relative_to_basetemp(basename)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:51: in _ensure_relative_to_basetemp
    if (self.getbasetemp() / basename).resolve().parent != self.getbasetemp():
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:98: in getbasetemp
    basetemp = make_numbered_dir_with_cleanup(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

root = PosixPath('/tmp/pytest-of-churchyard'), prefix = 'pytest-', keep = 3
lock_timeout = 10800

    def make_numbered_dir_with_cleanup(
        root: Path, prefix: str, keep: int, lock_timeout: float
    ) -> Path:
        """creates a numbered dir with a cleanup lock and removes old ones"""
        e = None
        for i in range(10):
            try:
                p = make_numbered_dir(root, prefix)
                lock_path = create_cleanup_lock(p)
                register_cleanup_lock_removal(lock_path)
            except Exception as exc:
                e = exc
            else:
                consider_lock_dead_if_created_before = p.stat().st_mtime - lock_timeout
                # Register a cleanup for program exit
>               atexit.register(
                    cleanup_numbered_dir,
                    root,
                    prefix,
                    keep,
                    consider_lock_dead_if_created_before,
                )
E               TypeError: append() takes exactly one argument (5 given)

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pathlib.py:354: TypeError
________________ ERROR at setup of test_xfail[non-strict xpass] ________________

cls = <class '_pytest.runner.CallInfo'>
func = <function call_runtest_hook.<locals>.<lambda> at 0x7eff61e45670>
when = 'setup'
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
        cls,
        func: "Callable[[], _T]",
        when: "Literal['collect', 'setup', 'call', 'teardown']",
        reraise: "Optional[Union[Type[BaseException], Tuple[Type[BaseException], ...]]]" = None,
    ) -> "CallInfo[_T]":
        excinfo = None
        start = timing.time()
        precise_start = timing.perf_counter()
        try:
>           result = func()  # type: Optional[_T]

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:287: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:240: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:141: in pytest_runtest_setup
    item.session._setupstate.prepare(item)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:428: in prepare
    raise e
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/runner.py:425: in prepare
    col.setup()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/python.py:1568: in setup
    self._request._fillfixtures()
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:568: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:581: in getfixturevalue
    fixturedef = self._get_active_fixturedef(argname)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:601: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:683: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1053: in execute
    result = hook.pytest_fixture_setup(fixturedef=self, request=request)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:1108: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/fixtures.py:915: in call_fixture_func
    fixture_result = fixturefunc(**kwargs)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:387: in testdir
    return Testdir(request, tmpdir_factory)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pytester.py:585: in __init__
    self.tmpdir = tmpdir_factory.mktemp(name, numbered=True)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:120: in mktemp
    return py.path.local(self._tmppath_factory.mktemp(basename, numbered).resolve())
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:72: in mktemp
    basename = self._ensure_relative_to_basetemp(basename)
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:51: in _ensure_relative_to_basetemp
    if (self.getbasetemp() / basename).resolve().parent != self.getbasetemp():
.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/tmpdir.py:98: in getbasetemp
    basetemp = make_numbered_dir_with_cleanup(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

root = PosixPath('/tmp/pytest-of-churchyard'), prefix = 'pytest-', keep = 3
lock_timeout = 10800

    def make_numbered_dir_with_cleanup(
        root: Path, prefix: str, keep: int, lock_timeout: float
    ) -> Path:
        """creates a numbered dir with a cleanup lock and removes old ones"""
        e = None
        for i in range(10):
            try:
                p = make_numbered_dir(root, prefix)
                lock_path = create_cleanup_lock(p)
                register_cleanup_lock_removal(lock_path)
            except Exception as exc:
                e = exc
            else:
                consider_lock_dead_if_created_before = p.stat().st_mtime - lock_timeout
                # Register a cleanup for program exit
>               atexit.register(
                    cleanup_numbered_dir,
                    root,
                    prefix,
                    keep,
                    consider_lock_dead_if_created_before,
                )
E               TypeError: append() takes exactly one argument (5 given)

.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/pathlib.py:354: TypeError
=========================== short test summary info ============================
XFAIL testing/test_boxed.py::test_functional_boxed_capturing[sys]
  capture cleanup needed
XFAIL testing/test_boxed.py::test_functional_boxed_capturing[fd]
  capture cleanup needed
========================= 2 xfailed, 8 errors in 1.91s =========================
ERROR: InvocationError for command .../pytest-forked/.tox/py38-pytestlatest/bin/pytest (exited with code 1)
___________________________________ summary ____________________________________
ERROR:   py38-pytestlatest: commands failed

Not sure if this is a pytest bug or pytest-forked needs to change something. The traceback mostly shows pytest code only :/

@The-Compiler
Copy link
Member

Looks like this is to blame: https://github.com/pytest-dev/pytest-forked/blob/master/testing/conftest.py

Apparently pytest-forked patches atexit, but in a way that doesn't work when trying to call a function with arguments.

@The-Compiler
Copy link
Member

Tried a quick fix:

diff --git i/testing/conftest.py w/testing/conftest.py
index 745c00f..e8343a4 100644
--- i/testing/conftest.py
+++ w/testing/conftest.py
@@ -4,6 +4,17 @@ import pytest
 pytest_plugins = "pytester"
 
 
+class AtExitFunc:
+
+    def __init__(self, func, *args, **kwargs):
+        self.func = func
+        self.args = args
+        self.kwargs = kwargs
+
+    def __call__(self):
+        self.func(*self.args, **self.kwargs)
+
+
 @pytest.fixture(autouse=True)
 def _divert_atexit(request, monkeypatch):
     import atexit
@@ -13,5 +24,6 @@ def _divert_atexit(request, monkeypatch):
         while atexit_fns:
             atexit_fns.pop()()
 
-    monkeypatch.setattr(atexit, "register", atexit_fns.append)
+    monkeypatch.setattr(atexit, "register", lambda func, *args, **kwargs:
+                        atexit_fns.append(AtExitFunc(func, *args, **kwargs)))
     request.addfinalizer(finish)

but I can't seem to successfully run the tests locally, so it'd be good if someone else could pick this up.

@webknjaz
Copy link
Member

If anybody sends this as a PR, we'll see if it explodes in the current CI setup...

@webknjaz
Copy link
Member

/me needs to add a toxenv hitting pytest master...

@The-Compiler
Copy link
Member

I suppose the CI setup doesn't tell the whole story as it doesn't actually test against pytest 6. I suppose having the pytest-latest environment use pip_pre = True to test against the prerelease would help?

@webknjaz
Copy link
Member

Yeah, I guess there should be pytest-latest + pytest-stable + pytest-unstable

@hroncok
Copy link
Member Author

hroncok commented Jul 23, 2020

$ tox -e py38-pytestlatest --pre
py38-pytestlatest inst-nodeps: .../pytest-forked/.tox/.tmp/package/1/pytest-forked-1.2.1.dev4+gb29c386.d20200723.tar.gz
py38-pytestlatest installed: attrs==19.3.0,iniconfig==1.0.0,more-itertools==8.4.0,packaging==20.4,pluggy==0.13.1,py==1.9.0,pycmd==1.2,pyparsing==3.0.0a2,pytest==6.0.0rc1,pytest-forked==1.2.1.dev4+gb29c386.d20200723,setuptools-scm==4.1.2,six==1.15.0,toml==0.10.1
py38-pytestlatest run-test-pre: PYTHONHASHSEED='1380079911'
py38-pytestlatest run-test: commands[0] | pytest
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1
cachedir: .tox/py38-pytestlatest/.pytest_cache
rootdir: .../pytest-forked, configfile: tox.ini
plugins: forked-1.2.1.dev4+gb29c386.d20200723
collected 10 items

testing/test_boxed.py FFFxx.                                             [ 60%]
testing/test_xfail_behavior.py FFFF                                      [100%]

=================================== FAILURES ===================================
____________________________ test_functional_boxed _____________________________

testdir = <Testdir local('/tmp/pytest-of-churchyard/pytest-60/test_functional_boxed0')>

    @needsfork
    def test_functional_boxed(testdir):
        p1 = testdir.makepyfile("""
            import os
            def test_function():
                os.kill(os.getpid(), 15)
        """)
        result = testdir.runpytest(p1, "--forked")
>       result.stdout.fnmatch_lines([
            "*CRASHED*",
            "*1 failed*"
        ])
E       Failed: nomatch: '*CRASHED*'
E           and: '============================= test session starts =============================='
E           and: 'platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1'
E           and: 'rootdir: /tmp/pytest-of-churchyard/pytest-60/test_functional_boxed0'
E           and: 'plugins: forked-1.2.1.dev4+gb29c386.d20200723'
E           and: 'collected 1 item'
E           and: 'INTERNALERROR> Traceback (most recent call last):'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 240, in wrap_session'
E           and: 'INTERNALERROR>     session.exitstatus = doit(config, session) or 0'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 296, in _main'
E           and: 'INTERNALERROR>     config.hook.pytest_runtestloop(session=session)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__'
E           and: 'INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec'
E           and: 'INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call'
E           and: 'INTERNALERROR>     result = func()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>'
E           and: 'INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>'
E           and: 'INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall('
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall'
E           and: 'INTERNALERROR>     res = hook_impl.function(*args)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 321, in pytest_runtestloop'
E           and: 'INTERNALERROR>     item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__'
E           and: 'INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec'
E           and: 'INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call'
E           and: 'INTERNALERROR>     result = func()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>'
E           and: 'INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>'
E           and: 'INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall('
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall'
E           and: 'INTERNALERROR>     res = hook_impl.function(*args)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 44, in pytest_runtest_protocol'
E           and: 'INTERNALERROR>     reports = forked_run_report(item)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 72, in forked_run_report'
E           and: 'INTERNALERROR>     return [report_process_crash(item, result)]'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 76, in report_process_crash'
E           and: 'INTERNALERROR>     from _pytest._code.source import getfslineno'
E           and: "INTERNALERROR> ImportError: cannot import name 'getfslineno' from '_pytest._code.source' (.../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/_code/source.py)"
E           and: ''
E           and: '============================ no tests ran in 0.02s ============================='
E       remains unmatched: '*CRASHED*'

.../pytest-forked/testing/test_boxed.py:16: Failed
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1
rootdir: /tmp/pytest-of-churchyard/pytest-60/test_functional_boxed0
plugins: forked-1.2.1.dev4+gb29c386.d20200723
collected 1 item
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 240, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 296, in _main
INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call
INTERNALERROR>     result = func()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>
INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 321, in pytest_runtestloop
INTERNALERROR>     item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call
INTERNALERROR>     result = func()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>
INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 44, in pytest_runtest_protocol
INTERNALERROR>     reports = forked_run_report(item)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 72, in forked_run_report
INTERNALERROR>     return [report_process_crash(item, result)]
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 76, in report_process_crash
INTERNALERROR>     from _pytest._code.source import getfslineno
INTERNALERROR> ImportError: cannot import name 'getfslineno' from '_pytest._code.source' (.../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/_code/source.py)

============================ no tests ran in 0.02s =============================
________________________ test_functional_boxed_per_test ________________________

testdir = <Testdir local('/tmp/pytest-of-churchyard/pytest-60/test_functional_boxed_per_test0')>

    @needsfork
    def test_functional_boxed_per_test(testdir):
        p1 = testdir.makepyfile("""
            import os
            import pytest
    
            @pytest.mark.forked
            def test_function():
                os.kill(os.getpid(), 15)
        """)
        result = testdir.runpytest(p1)
>       result.stdout.fnmatch_lines([
            "*CRASHED*",
            "*1 failed*"
        ])
E       Failed: nomatch: '*CRASHED*'
E           and: '============================= test session starts =============================='
E           and: 'platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1'
E           and: 'rootdir: /tmp/pytest-of-churchyard/pytest-60/test_functional_boxed_per_test0'
E           and: 'plugins: forked-1.2.1.dev4+gb29c386.d20200723'
E           and: 'collected 1 item'
E           and: 'INTERNALERROR> Traceback (most recent call last):'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 240, in wrap_session'
E           and: 'INTERNALERROR>     session.exitstatus = doit(config, session) or 0'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 296, in _main'
E           and: 'INTERNALERROR>     config.hook.pytest_runtestloop(session=session)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__'
E           and: 'INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec'
E           and: 'INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call'
E           and: 'INTERNALERROR>     result = func()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>'
E           and: 'INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>'
E           and: 'INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall('
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall'
E           and: 'INTERNALERROR>     res = hook_impl.function(*args)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 321, in pytest_runtestloop'
E           and: 'INTERNALERROR>     item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__'
E           and: 'INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec'
E           and: 'INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call'
E           and: 'INTERNALERROR>     result = func()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>'
E           and: 'INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>'
E           and: 'INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall('
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall'
E           and: 'INTERNALERROR>     res = hook_impl.function(*args)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 44, in pytest_runtest_protocol'
E           and: 'INTERNALERROR>     reports = forked_run_report(item)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 72, in forked_run_report'
E           and: 'INTERNALERROR>     return [report_process_crash(item, result)]'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 76, in report_process_crash'
E           and: 'INTERNALERROR>     from _pytest._code.source import getfslineno'
E           and: "INTERNALERROR> ImportError: cannot import name 'getfslineno' from '_pytest._code.source' (.../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/_code/source.py)"
E           and: ''
E           and: '============================ no tests ran in 0.02s ============================='
E       remains unmatched: '*CRASHED*'

.../pytest-forked/testing/test_boxed.py:33: Failed
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1
rootdir: /tmp/pytest-of-churchyard/pytest-60/test_functional_boxed_per_test0
plugins: forked-1.2.1.dev4+gb29c386.d20200723
collected 1 item
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 240, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 296, in _main
INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call
INTERNALERROR>     result = func()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>
INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 321, in pytest_runtestloop
INTERNALERROR>     item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call
INTERNALERROR>     result = func()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>
INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 44, in pytest_runtest_protocol
INTERNALERROR>     reports = forked_run_report(item)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 72, in forked_run_report
INTERNALERROR>     return [report_process_crash(item, result)]
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 76, in report_process_crash
INTERNALERROR>     from _pytest._code.source import getfslineno
INTERNALERROR> ImportError: cannot import name 'getfslineno' from '_pytest._code.source' (.../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/_code/source.py)

============================ no tests ran in 0.02s =============================
_____________________ test_functional_boxed_capturing[no] ______________________

testdir = <Testdir local('/tmp/pytest-of-churchyard/pytest-60/test_functional_boxed_capturing0')>
capmode = 'no'

    @needsfork
    @pytest.mark.parametrize("capmode", [
        "no",
        pytest.param("sys", marks=pytest.mark.xfail(reason="capture cleanup needed")),
        pytest.param("fd", marks=pytest.mark.xfail(reason="capture cleanup needed"))])
    def test_functional_boxed_capturing(testdir, capmode):
        p1 = testdir.makepyfile("""
            import os
            import sys
            def test_function():
                sys.stdout.write("hello\\n")
                sys.stderr.write("world\\n")
                os.kill(os.getpid(), 15)
        """)
        result = testdir.runpytest(p1, "--forked", "--capture=%s" % capmode)
>       result.stdout.fnmatch_lines("""
            *CRASHED*
            *stdout*
            hello
            *stderr*
            world
            *1 failed*
    """)
E       Failed: nomatch: '*CRASHED*'
E           and: '============================= test session starts =============================='
E           and: 'platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1'
E           and: 'rootdir: /tmp/pytest-of-churchyard/pytest-60/test_functional_boxed_capturing0'
E           and: 'plugins: forked-1.2.1.dev4+gb29c386.d20200723'
E           and: 'collected 1 item'
E           and: 'INTERNALERROR> Traceback (most recent call last):'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 240, in wrap_session'
E           and: 'INTERNALERROR>     session.exitstatus = doit(config, session) or 0'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 296, in _main'
E           and: 'INTERNALERROR>     config.hook.pytest_runtestloop(session=session)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__'
E           and: 'INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec'
E           and: 'INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call'
E           and: 'INTERNALERROR>     result = func()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>'
E           and: 'INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>'
E           and: 'INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall('
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall'
E           and: 'INTERNALERROR>     res = hook_impl.function(*args)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 321, in pytest_runtestloop'
E           and: 'INTERNALERROR>     item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__'
E           and: 'INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec'
E           and: 'INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call'
E           and: 'INTERNALERROR>     result = func()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>'
E           and: 'INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>'
E           and: 'INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall('
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall'
E           and: 'INTERNALERROR>     res = hook_impl.function(*args)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 44, in pytest_runtest_protocol'
E           and: 'INTERNALERROR>     reports = forked_run_report(item)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 72, in forked_run_report'
E           and: 'INTERNALERROR>     return [report_process_crash(item, result)]'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 76, in report_process_crash'
E           and: 'INTERNALERROR>     from _pytest._code.source import getfslineno'
E           and: "INTERNALERROR> ImportError: cannot import name 'getfslineno' from '_pytest._code.source' (.../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/_code/source.py)"
E           and: ''
E           and: '============================ no tests ran in 0.02s ============================='
E       remains unmatched: '*CRASHED*'

.../pytest-forked/testing/test_boxed.py:54: Failed
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1
rootdir: /tmp/pytest-of-churchyard/pytest-60/test_functional_boxed_capturing0
plugins: forked-1.2.1.dev4+gb29c386.d20200723
collected 1 item
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 240, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 296, in _main
INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call
INTERNALERROR>     result = func()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>
INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 321, in pytest_runtestloop
INTERNALERROR>     item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call
INTERNALERROR>     result = func()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>
INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 44, in pytest_runtest_protocol
INTERNALERROR>     reports = forked_run_report(item)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 72, in forked_run_report
INTERNALERROR>     return [report_process_crash(item, result)]
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 76, in report_process_crash
INTERNALERROR>     from _pytest._code.source import getfslineno
INTERNALERROR> ImportError: cannot import name 'getfslineno' from '_pytest._code.source' (.../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/_code/source.py)

============================ no tests ran in 0.02s =============================
___________________________ test_xfail[strict xfail] ___________________________

is_crashing = True, is_strict = True
testdir = <Testdir local('/tmp/pytest-of-churchyard/pytest-60/test_xfail0')>

    @pytest.mark.parametrize(
        ('is_crashing', 'is_strict'),
        (
            pytest.param(True, True, id='strict xfail'),
            pytest.param(False, True, id='strict xpass'),
            pytest.param(True, False, id='non-strict xfail'),
            pytest.param(False, False, id='non-strict xpass'),
        ),
    )
    def test_xfail(is_crashing, is_strict, testdir):
        """Test xfail/xpass/strict permutations."""
        # pylint: disable=possibly-unused-variable
        sig_num = signal.SIGTERM.numerator
    
        test_func_body = (
            'os.kill(os.getpid(), signal.SIGTERM)'
            if is_crashing
            else 'assert True'
        )
    
        if is_crashing:
            # marked xfailed and crashing, no matter strict or not
            expected_letter = 'x'  # XFAILED
            expected_lowercase = 'xfailed'
            expected_word = 'XFAIL'
        elif is_strict:
            # strict and not failing as expected should cause failure
            expected_letter = 'F'  # FAILED
            expected_lowercase = 'failed'
            expected_word = FAILED_WORD
        elif not is_strict:
            # non-strict and not failing as expected should cause xpass
            expected_letter = 'X'  # XPASS
            expected_lowercase = 'xpassed'
            expected_word = 'XPASS'
    
        session_start_title = '*==== test session starts ====*'
        loaded_pytest_plugins = 'plugins: forked*'
        collected_tests_num = 'collected 1 item'
        expected_progress = 'test_xfail.py {expected_letter!s}'.format(**locals())
        failures_title = '*==== FAILURES ====*'
        failures_test_name = '*____ test_function ____*'
        failures_test_reason = '[XPASS(strict)] The process gets terminated'
        short_test_summary_title = '*==== short test summary info ====*'
        short_test_summary = (
            '{expected_word!s} test_xfail.py::test_function'.
            format(**locals())
        )
        if expected_lowercase == 'xpassed':
            # XPASS wouldn't have the crash message from
            # pytest-forked because the crash doesn't happen
            short_test_summary = ' '.join((
                short_test_summary, 'The process gets terminated',
            ))
        reason_string = (
            '  reason: The process gets terminated; '
            'pytest-forked reason: '
            '*:*: running the test CRASHED with signal {sig_num:d}'.
            format(**locals())
        )
        total_summary_line = (
            '*==== 1 {expected_lowercase!s} in 0.*s* ====*'.
            format(**locals())
        )
    
        expected_lines = (
            session_start_title,
            loaded_pytest_plugins,
            collected_tests_num,
            expected_progress,
        )
        if expected_word == FAILED_WORD:
            # XPASS(strict)
            expected_lines += (
                failures_title,
                failures_test_name,
                failures_test_reason,
            )
        expected_lines += (
            short_test_summary_title,
            short_test_summary,
        )
        if expected_lowercase == 'xpassed' and expected_word == FAILED_WORD:
            # XPASS(strict)
            expected_lines += (
                reason_string,
            )
        expected_lines += (
            total_summary_line,
        )
    
        test_module = testdir.makepyfile(
            """
            import os
            import signal
    
            import pytest
    
            @pytest.mark.xfail(
                reason='The process gets terminated',
                strict={is_strict!s},
            )
            @pytest.mark.forked
            def test_function():
                {test_func_body!s}
            """.
            format(**locals())
        )
    
        pytest_run_result = testdir.runpytest(
            test_module,
            '-ra',
            '-p', 'no:warnings',  # the current implementation emits RuntimeWarning
        )
>       pytest_run_result.stdout.fnmatch_lines(expected_lines)
E       Failed: fnmatch: '*==== test session starts ====*'
E          with: '============================= test session starts =============================='
E       nomatch: 'plugins: forked*'
E           and: 'platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1'
E           and: 'rootdir: /tmp/pytest-of-churchyard/pytest-60/test_xfail0'
E       fnmatch: 'plugins: forked*'
E          with: 'plugins: forked-1.2.1.dev4+gb29c386.d20200723'
E       exact match: 'collected 1 item'
E       nomatch: 'test_xfail.py x'
E           and: 'INTERNALERROR> Traceback (most recent call last):'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 240, in wrap_session'
E           and: 'INTERNALERROR>     session.exitstatus = doit(config, session) or 0'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 296, in _main'
E           and: 'INTERNALERROR>     config.hook.pytest_runtestloop(session=session)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__'
E           and: 'INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec'
E           and: 'INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call'
E           and: 'INTERNALERROR>     result = func()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>'
E           and: 'INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>'
E           and: 'INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall('
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall'
E           and: 'INTERNALERROR>     res = hook_impl.function(*args)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 321, in pytest_runtestloop'
E           and: 'INTERNALERROR>     item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__'
E           and: 'INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec'
E           and: 'INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call'
E           and: 'INTERNALERROR>     result = func()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>'
E           and: 'INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>'
E           and: 'INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall('
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall'
E           and: 'INTERNALERROR>     res = hook_impl.function(*args)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 44, in pytest_runtest_protocol'
E           and: 'INTERNALERROR>     reports = forked_run_report(item)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 72, in forked_run_report'
E           and: 'INTERNALERROR>     return [report_process_crash(item, result)]'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 76, in report_process_crash'
E           and: 'INTERNALERROR>     from _pytest._code.source import getfslineno'
E           and: "INTERNALERROR> ImportError: cannot import name 'getfslineno' from '_pytest._code.source' (.../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/_code/source.py)"
E           and: ''
E           and: '============================ no tests ran in 0.02s ============================='
E       remains unmatched: 'test_xfail.py x'

.../pytest-forked/testing/test_xfail_behavior.py:131: Failed
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1
rootdir: /tmp/pytest-of-churchyard/pytest-60/test_xfail0
plugins: forked-1.2.1.dev4+gb29c386.d20200723
collected 1 item
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 240, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 296, in _main
INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call
INTERNALERROR>     result = func()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>
INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 321, in pytest_runtestloop
INTERNALERROR>     item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call
INTERNALERROR>     result = func()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>
INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 44, in pytest_runtest_protocol
INTERNALERROR>     reports = forked_run_report(item)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 72, in forked_run_report
INTERNALERROR>     return [report_process_crash(item, result)]
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 76, in report_process_crash
INTERNALERROR>     from _pytest._code.source import getfslineno
INTERNALERROR> ImportError: cannot import name 'getfslineno' from '_pytest._code.source' (.../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/_code/source.py)

============================ no tests ran in 0.02s =============================
___________________________ test_xfail[strict xpass] ___________________________

is_crashing = False, is_strict = True
testdir = <Testdir local('/tmp/pytest-of-churchyard/pytest-60/test_xfail1')>

    @pytest.mark.parametrize(
        ('is_crashing', 'is_strict'),
        (
            pytest.param(True, True, id='strict xfail'),
            pytest.param(False, True, id='strict xpass'),
            pytest.param(True, False, id='non-strict xfail'),
            pytest.param(False, False, id='non-strict xpass'),
        ),
    )
    def test_xfail(is_crashing, is_strict, testdir):
        """Test xfail/xpass/strict permutations."""
        # pylint: disable=possibly-unused-variable
        sig_num = signal.SIGTERM.numerator
    
        test_func_body = (
            'os.kill(os.getpid(), signal.SIGTERM)'
            if is_crashing
            else 'assert True'
        )
    
        if is_crashing:
            # marked xfailed and crashing, no matter strict or not
            expected_letter = 'x'  # XFAILED
            expected_lowercase = 'xfailed'
            expected_word = 'XFAIL'
        elif is_strict:
            # strict and not failing as expected should cause failure
            expected_letter = 'F'  # FAILED
            expected_lowercase = 'failed'
            expected_word = FAILED_WORD
        elif not is_strict:
            # non-strict and not failing as expected should cause xpass
            expected_letter = 'X'  # XPASS
            expected_lowercase = 'xpassed'
            expected_word = 'XPASS'
    
        session_start_title = '*==== test session starts ====*'
        loaded_pytest_plugins = 'plugins: forked*'
        collected_tests_num = 'collected 1 item'
        expected_progress = 'test_xfail.py {expected_letter!s}'.format(**locals())
        failures_title = '*==== FAILURES ====*'
        failures_test_name = '*____ test_function ____*'
        failures_test_reason = '[XPASS(strict)] The process gets terminated'
        short_test_summary_title = '*==== short test summary info ====*'
        short_test_summary = (
            '{expected_word!s} test_xfail.py::test_function'.
            format(**locals())
        )
        if expected_lowercase == 'xpassed':
            # XPASS wouldn't have the crash message from
            # pytest-forked because the crash doesn't happen
            short_test_summary = ' '.join((
                short_test_summary, 'The process gets terminated',
            ))
        reason_string = (
            '  reason: The process gets terminated; '
            'pytest-forked reason: '
            '*:*: running the test CRASHED with signal {sig_num:d}'.
            format(**locals())
        )
        total_summary_line = (
            '*==== 1 {expected_lowercase!s} in 0.*s* ====*'.
            format(**locals())
        )
    
        expected_lines = (
            session_start_title,
            loaded_pytest_plugins,
            collected_tests_num,
            expected_progress,
        )
        if expected_word == FAILED_WORD:
            # XPASS(strict)
            expected_lines += (
                failures_title,
                failures_test_name,
                failures_test_reason,
            )
        expected_lines += (
            short_test_summary_title,
            short_test_summary,
        )
        if expected_lowercase == 'xpassed' and expected_word == FAILED_WORD:
            # XPASS(strict)
            expected_lines += (
                reason_string,
            )
        expected_lines += (
            total_summary_line,
        )
    
        test_module = testdir.makepyfile(
            """
            import os
            import signal
    
            import pytest
    
            @pytest.mark.xfail(
                reason='The process gets terminated',
                strict={is_strict!s},
            )
            @pytest.mark.forked
            def test_function():
                {test_func_body!s}
            """.
            format(**locals())
        )
    
        pytest_run_result = testdir.runpytest(
            test_module,
            '-ra',
            '-p', 'no:warnings',  # the current implementation emits RuntimeWarning
        )
>       pytest_run_result.stdout.fnmatch_lines(expected_lines)
E       Failed: fnmatch: '*==== test session starts ====*'
E          with: '============================= test session starts =============================='
E       nomatch: 'plugins: forked*'
E           and: 'platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1'
E           and: 'rootdir: /tmp/pytest-of-churchyard/pytest-60/test_xfail1'
E       fnmatch: 'plugins: forked*'
E          with: 'plugins: forked-1.2.1.dev4+gb29c386.d20200723'
E       exact match: 'collected 1 item'
E       nomatch: 'test_xfail.py F'
E           and: 'F'
E           and: '=================================== FAILURES ==================================='
E           and: '________________________________ test_function _________________________________'
E           and: '[XPASS(strict)] The process gets terminated'
E           and: '=========================== short test summary info ============================'
E           and: 'FAILED test_xfail.py::test_function'
E           and: '============================== 1 failed in 0.02s ==============================='
E       remains unmatched: 'test_xfail.py F'

.../pytest-forked/testing/test_xfail_behavior.py:131: Failed
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1
rootdir: /tmp/pytest-of-churchyard/pytest-60/test_xfail1
plugins: forked-1.2.1.dev4+gb29c386.d20200723
collected 1 item
F
=================================== FAILURES ===================================
________________________________ test_function _________________________________
[XPASS(strict)] The process gets terminated
=========================== short test summary info ============================
FAILED test_xfail.py::test_function
============================== 1 failed in 0.02s ===============================
_________________________ test_xfail[non-strict xfail] _________________________

is_crashing = True, is_strict = False
testdir = <Testdir local('/tmp/pytest-of-churchyard/pytest-60/test_xfail2')>

    @pytest.mark.parametrize(
        ('is_crashing', 'is_strict'),
        (
            pytest.param(True, True, id='strict xfail'),
            pytest.param(False, True, id='strict xpass'),
            pytest.param(True, False, id='non-strict xfail'),
            pytest.param(False, False, id='non-strict xpass'),
        ),
    )
    def test_xfail(is_crashing, is_strict, testdir):
        """Test xfail/xpass/strict permutations."""
        # pylint: disable=possibly-unused-variable
        sig_num = signal.SIGTERM.numerator
    
        test_func_body = (
            'os.kill(os.getpid(), signal.SIGTERM)'
            if is_crashing
            else 'assert True'
        )
    
        if is_crashing:
            # marked xfailed and crashing, no matter strict or not
            expected_letter = 'x'  # XFAILED
            expected_lowercase = 'xfailed'
            expected_word = 'XFAIL'
        elif is_strict:
            # strict and not failing as expected should cause failure
            expected_letter = 'F'  # FAILED
            expected_lowercase = 'failed'
            expected_word = FAILED_WORD
        elif not is_strict:
            # non-strict and not failing as expected should cause xpass
            expected_letter = 'X'  # XPASS
            expected_lowercase = 'xpassed'
            expected_word = 'XPASS'
    
        session_start_title = '*==== test session starts ====*'
        loaded_pytest_plugins = 'plugins: forked*'
        collected_tests_num = 'collected 1 item'
        expected_progress = 'test_xfail.py {expected_letter!s}'.format(**locals())
        failures_title = '*==== FAILURES ====*'
        failures_test_name = '*____ test_function ____*'
        failures_test_reason = '[XPASS(strict)] The process gets terminated'
        short_test_summary_title = '*==== short test summary info ====*'
        short_test_summary = (
            '{expected_word!s} test_xfail.py::test_function'.
            format(**locals())
        )
        if expected_lowercase == 'xpassed':
            # XPASS wouldn't have the crash message from
            # pytest-forked because the crash doesn't happen
            short_test_summary = ' '.join((
                short_test_summary, 'The process gets terminated',
            ))
        reason_string = (
            '  reason: The process gets terminated; '
            'pytest-forked reason: '
            '*:*: running the test CRASHED with signal {sig_num:d}'.
            format(**locals())
        )
        total_summary_line = (
            '*==== 1 {expected_lowercase!s} in 0.*s* ====*'.
            format(**locals())
        )
    
        expected_lines = (
            session_start_title,
            loaded_pytest_plugins,
            collected_tests_num,
            expected_progress,
        )
        if expected_word == FAILED_WORD:
            # XPASS(strict)
            expected_lines += (
                failures_title,
                failures_test_name,
                failures_test_reason,
            )
        expected_lines += (
            short_test_summary_title,
            short_test_summary,
        )
        if expected_lowercase == 'xpassed' and expected_word == FAILED_WORD:
            # XPASS(strict)
            expected_lines += (
                reason_string,
            )
        expected_lines += (
            total_summary_line,
        )
    
        test_module = testdir.makepyfile(
            """
            import os
            import signal
    
            import pytest
    
            @pytest.mark.xfail(
                reason='The process gets terminated',
                strict={is_strict!s},
            )
            @pytest.mark.forked
            def test_function():
                {test_func_body!s}
            """.
            format(**locals())
        )
    
        pytest_run_result = testdir.runpytest(
            test_module,
            '-ra',
            '-p', 'no:warnings',  # the current implementation emits RuntimeWarning
        )
>       pytest_run_result.stdout.fnmatch_lines(expected_lines)
E       Failed: fnmatch: '*==== test session starts ====*'
E          with: '============================= test session starts =============================='
E       nomatch: 'plugins: forked*'
E           and: 'platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1'
E           and: 'rootdir: /tmp/pytest-of-churchyard/pytest-60/test_xfail2'
E       fnmatch: 'plugins: forked*'
E          with: 'plugins: forked-1.2.1.dev4+gb29c386.d20200723'
E       exact match: 'collected 1 item'
E       nomatch: 'test_xfail.py x'
E           and: 'INTERNALERROR> Traceback (most recent call last):'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 240, in wrap_session'
E           and: 'INTERNALERROR>     session.exitstatus = doit(config, session) or 0'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 296, in _main'
E           and: 'INTERNALERROR>     config.hook.pytest_runtestloop(session=session)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__'
E           and: 'INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec'
E           and: 'INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call'
E           and: 'INTERNALERROR>     result = func()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>'
E           and: 'INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>'
E           and: 'INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall('
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall'
E           and: 'INTERNALERROR>     res = hook_impl.function(*args)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 321, in pytest_runtestloop'
E           and: 'INTERNALERROR>     item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__'
E           and: 'INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec'
E           and: 'INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call'
E           and: 'INTERNALERROR>     result = func()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>'
E           and: 'INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>'
E           and: 'INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall('
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall'
E           and: 'INTERNALERROR>     return outcome.get_result()'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result'
E           and: 'INTERNALERROR>     raise ex[1].with_traceback(ex[2])'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall'
E           and: 'INTERNALERROR>     res = hook_impl.function(*args)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 44, in pytest_runtest_protocol'
E           and: 'INTERNALERROR>     reports = forked_run_report(item)'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 72, in forked_run_report'
E           and: 'INTERNALERROR>     return [report_process_crash(item, result)]'
E           and: 'INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 76, in report_process_crash'
E           and: 'INTERNALERROR>     from _pytest._code.source import getfslineno'
E           and: "INTERNALERROR> ImportError: cannot import name 'getfslineno' from '_pytest._code.source' (.../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/_code/source.py)"
E           and: ''
E           and: '============================ no tests ran in 0.02s ============================='
E       remains unmatched: 'test_xfail.py x'

.../pytest-forked/testing/test_xfail_behavior.py:131: Failed
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1
rootdir: /tmp/pytest-of-churchyard/pytest-60/test_xfail2
plugins: forked-1.2.1.dev4+gb29c386.d20200723
collected 1 item
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 240, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 296, in _main
INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call
INTERNALERROR>     result = func()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>
INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/main.py", line 321, in pytest_runtestloop
INTERNALERROR>     item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 337, in traced_hookexec
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 52, in from_call
INTERNALERROR>     result = func()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 335, in <lambda>
INTERNALERROR>     outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>
INTERNALERROR>     self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 44, in pytest_runtest_protocol
INTERNALERROR>     reports = forked_run_report(item)
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 72, in forked_run_report
INTERNALERROR>     return [report_process_crash(item, result)]
INTERNALERROR>   File ".../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/pytest_forked/__init__.py", line 76, in report_process_crash
INTERNALERROR>     from _pytest._code.source import getfslineno
INTERNALERROR> ImportError: cannot import name 'getfslineno' from '_pytest._code.source' (.../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/_code/source.py)

============================ no tests ran in 0.02s =============================
_________________________ test_xfail[non-strict xpass] _________________________

is_crashing = False, is_strict = False
testdir = <Testdir local('/tmp/pytest-of-churchyard/pytest-60/test_xfail3')>

    @pytest.mark.parametrize(
        ('is_crashing', 'is_strict'),
        (
            pytest.param(True, True, id='strict xfail'),
            pytest.param(False, True, id='strict xpass'),
            pytest.param(True, False, id='non-strict xfail'),
            pytest.param(False, False, id='non-strict xpass'),
        ),
    )
    def test_xfail(is_crashing, is_strict, testdir):
        """Test xfail/xpass/strict permutations."""
        # pylint: disable=possibly-unused-variable
        sig_num = signal.SIGTERM.numerator
    
        test_func_body = (
            'os.kill(os.getpid(), signal.SIGTERM)'
            if is_crashing
            else 'assert True'
        )
    
        if is_crashing:
            # marked xfailed and crashing, no matter strict or not
            expected_letter = 'x'  # XFAILED
            expected_lowercase = 'xfailed'
            expected_word = 'XFAIL'
        elif is_strict:
            # strict and not failing as expected should cause failure
            expected_letter = 'F'  # FAILED
            expected_lowercase = 'failed'
            expected_word = FAILED_WORD
        elif not is_strict:
            # non-strict and not failing as expected should cause xpass
            expected_letter = 'X'  # XPASS
            expected_lowercase = 'xpassed'
            expected_word = 'XPASS'
    
        session_start_title = '*==== test session starts ====*'
        loaded_pytest_plugins = 'plugins: forked*'
        collected_tests_num = 'collected 1 item'
        expected_progress = 'test_xfail.py {expected_letter!s}'.format(**locals())
        failures_title = '*==== FAILURES ====*'
        failures_test_name = '*____ test_function ____*'
        failures_test_reason = '[XPASS(strict)] The process gets terminated'
        short_test_summary_title = '*==== short test summary info ====*'
        short_test_summary = (
            '{expected_word!s} test_xfail.py::test_function'.
            format(**locals())
        )
        if expected_lowercase == 'xpassed':
            # XPASS wouldn't have the crash message from
            # pytest-forked because the crash doesn't happen
            short_test_summary = ' '.join((
                short_test_summary, 'The process gets terminated',
            ))
        reason_string = (
            '  reason: The process gets terminated; '
            'pytest-forked reason: '
            '*:*: running the test CRASHED with signal {sig_num:d}'.
            format(**locals())
        )
        total_summary_line = (
            '*==== 1 {expected_lowercase!s} in 0.*s* ====*'.
            format(**locals())
        )
    
        expected_lines = (
            session_start_title,
            loaded_pytest_plugins,
            collected_tests_num,
            expected_progress,
        )
        if expected_word == FAILED_WORD:
            # XPASS(strict)
            expected_lines += (
                failures_title,
                failures_test_name,
                failures_test_reason,
            )
        expected_lines += (
            short_test_summary_title,
            short_test_summary,
        )
        if expected_lowercase == 'xpassed' and expected_word == FAILED_WORD:
            # XPASS(strict)
            expected_lines += (
                reason_string,
            )
        expected_lines += (
            total_summary_line,
        )
    
        test_module = testdir.makepyfile(
            """
            import os
            import signal
    
            import pytest
    
            @pytest.mark.xfail(
                reason='The process gets terminated',
                strict={is_strict!s},
            )
            @pytest.mark.forked
            def test_function():
                {test_func_body!s}
            """.
            format(**locals())
        )
    
        pytest_run_result = testdir.runpytest(
            test_module,
            '-ra',
            '-p', 'no:warnings',  # the current implementation emits RuntimeWarning
        )
>       pytest_run_result.stdout.fnmatch_lines(expected_lines)
E       Failed: fnmatch: '*==== test session starts ====*'
E          with: '============================= test session starts =============================='
E       nomatch: 'plugins: forked*'
E           and: 'platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1'
E           and: 'rootdir: /tmp/pytest-of-churchyard/pytest-60/test_xfail3'
E       fnmatch: 'plugins: forked*'
E          with: 'plugins: forked-1.2.1.dev4+gb29c386.d20200723'
E       exact match: 'collected 1 item'
E       nomatch: 'test_xfail.py X'
E           and: 'X'
E           and: '=========================== short test summary info ============================'
E           and: 'XPASS test_xfail.py::test_function The process gets terminated'
E           and: '============================== 1 xpassed in 0.02s =============================='
E       remains unmatched: 'test_xfail.py X'

.../pytest-forked/testing/test_xfail_behavior.py:131: Failed
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.8.5, pytest-6.0.0rc1, py-1.9.0, pluggy-0.13.1
rootdir: /tmp/pytest-of-churchyard/pytest-60/test_xfail3
plugins: forked-1.2.1.dev4+gb29c386.d20200723
collected 1 item
X
=========================== short test summary info ============================
XPASS test_xfail.py::test_function The process gets terminated
============================== 1 xpassed in 0.02s ==============================
=============================== warnings summary ===============================
testing/test_boxed.py::test_functional_boxed
testing/test_boxed.py::test_functional_boxed_per_test
testing/test_boxed.py::test_functional_boxed_capturing[no]
testing/test_boxed.py::test_functional_boxed_capturing[sys]
testing/test_boxed.py::test_functional_boxed_capturing[fd]
testing/test_xfail_behavior.py::test_xfail[strict xfail]
testing/test_xfail_behavior.py::test_xfail[strict xpass]
testing/test_xfail_behavior.py::test_xfail[non-strict xfail]
testing/test_xfail_behavior.py::test_xfail[non-strict xpass]
  .../pytest-forked/.tox/py38-pytestlatest/lib/python3.8/site-packages/_pytest/compat.py:340: PytestDeprecationWarning: The TerminalReporter.writer attribute is deprecated, use TerminalReporter._tw instead at your own risk.
  See https://docs.pytest.org/en/stable/deprecations.html#terminalreporter-writer for more information.
    return getattr(object, name, default)

-- Docs: https://docs.pytest.org/en/stable/warnings.html
=========================== short test summary info ============================
FAILED testing/test_boxed.py::test_functional_boxed - Failed: nomatch: '*CRAS...
FAILED testing/test_boxed.py::test_functional_boxed_per_test - Failed: nomatc...
FAILED testing/test_boxed.py::test_functional_boxed_capturing[no] - Failed: n...
FAILED testing/test_xfail_behavior.py::test_xfail[strict xfail] - Failed: fnm...
FAILED testing/test_xfail_behavior.py::test_xfail[strict xpass] - Failed: fnm...
FAILED testing/test_xfail_behavior.py::test_xfail[non-strict xfail] - Failed:...
FAILED testing/test_xfail_behavior.py::test_xfail[non-strict xpass] - Failed:...
XFAIL testing/test_boxed.py::test_functional_boxed_capturing[sys]
  capture cleanup needed
XFAIL testing/test_boxed.py::test_functional_boxed_capturing[fd]
  capture cleanup needed
============== 7 failed, 1 passed, 2 xfailed, 9 warnings in 0.85s ==============
ERROR: InvocationError for command .../pytest-forked/.tox/py38-pytestlatest/bin/pytest (exited with code 1)
___________________________________ summary ____________________________________
ERROR:   py38-pytestlatest: commands failed

@The-Compiler
Copy link
Member

@hroncok I assume this is after my patch above? Looks like pytest-forked is using private pytest APIs which moved around with 6.0. I assume adjusting the import to do from _pytest._code import getfslineno (which should work with both pytest 5 and 6?) will help. I'm afraid I won't have the time to continue looking at this, as I've never used this plugin and should take care of some non-pytest things :)

@hroncok
Copy link
Member Author

hroncok commented Jul 23, 2020

I assume this is after my patch above?

Indeed.

@bluetech
Copy link
Member

I am taking @The-Compiler's work and will submit a PR. There are other failures afterwards which I'm still working on.

@webknjaz
Copy link
Member

@bluetech great! Feel free to submit a draft PR so that any WIP failures are visible in the CI logs.

@webknjaz
Copy link
Member

webknjaz commented Jul 27, 2020

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants