pytest-dev / pytest-forked

extracted --boxed from pytest-xdist to ensure backward compat
MIT License
62 stars 21 forks source link

Backward compatibility with pytest 3.1.3 #24

Closed LittleWolus closed 4 years ago

LittleWolus commented 4 years ago

Hello, I am using Jenkins ver. 2.176.1 and Python virtualenv. Since yesterday pytest-forked(1.1.1) is not compatible with older pytest (3.1.3). Run ends with pytest internal error.

+ py.test -n2 --junit-xml=build/test-reports/TEST-result.xml -s -v
============================= test session starts ==============================
platform linux -- Python 3.5.0, pytest-3.1.3, py-1.4.33, pluggy-0.4.0 -- /var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/bin/python3.5
cachedir: .cache
rootdir: /var/lib/jenkins/jobs/Autotests nfdumptools a exporter/workspace, inifile:
plugins: xdist-1.24.1, forked-1.1.1
gw0 I / gw1 I

[gw0] linux Python 3.5.0 cwd: /var/lib/jenkins/jobs/Autotests nfdumptools a exporter/workspace

[gw1] linux Python 3.5.0 cwd: /var/lib/jenkins/jobs/Autotests nfdumptools a exporter/workspace

[gw0] Python 3.5.0 (default, Mar  1 2017, 13:17:53)  -- [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]

[gw1] Python 3.5.0 (default, Mar  1 2017, 13:17:53)  -- [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
gw0 [141] / gw1 [141]

scheduling tests via LoadScheduling
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/main.py", line 105, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/main.py", line 141, in _main
INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__
INTERNALERROR>     return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
INTERNALERROR>     _MultiCall(methods, kwargs, hook.spec_opts).execute()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "<remote exec>", line 66, in pytest_runtestloop
INTERNALERROR>   File "<remote exec>", line 83, in run_one_test
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__
INTERNALERROR>     return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
INTERNALERROR>     _MultiCall(methods, kwargs, hook.spec_opts).execute()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 613, in execute
INTERNALERROR>     return _wrapped_call(hook_impl.function(*args), self.execute)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 254, in _wrapped_call
INTERNALERROR>     return call_outcome.get_result()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 279, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 265, in __init__
INTERNALERROR>     self.result = func()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 613, in execute
INTERNALERROR>     return _wrapped_call(hook_impl.function(*args), self.execute)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 254, in _wrapped_call
INTERNALERROR>     return call_outcome.get_result()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 279, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 265, in __init__
INTERNALERROR>     self.result = func()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/pytest_forked/__init__.py", line 41, in pytest_runtest_protocol
INTERNALERROR>     if item.config.getvalue("forked") or item.get_closest_marker("forked"):
INTERNALERROR> AttributeError: 'Function' object has no attribute 'get_closest_marker'
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/main.py", line 105, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/main.py", line 141, in _main
INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__
INTERNALERROR>     return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
INTERNALERROR>     _MultiCall(methods, kwargs, hook.spec_opts).execute()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "<remote exec>", line 66, in pytest_runtestloop
INTERNALERROR>   File "<remote exec>", line 83, in run_one_test
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__
INTERNALERROR>     return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
INTERNALERROR>     _MultiCall(methods, kwargs, hook.spec_opts).execute()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 613, in execute
INTERNALERROR>     return _wrapped_call(hook_impl.function(*args), self.execute)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 254, in _wrapped_call
INTERNALERROR>     return call_outcome.get_result()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 279, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 265, in __init__
INTERNALERROR>     self.result = func()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 613, in execute
INTERNALERROR>     return _wrapped_call(hook_impl.function(*args), self.execute)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 254, in _wrapped_call
INTERNALERROR>     return call_outcome.get_result()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 279, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 265, in __init__
INTERNALERROR>     self.result = func()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/pytest_forked/__init__.py", line 41, in pytest_runtest_protocol
INTERNALERROR>     if item.config.getvalue("forked") or item.get_closest_marker("forked"):
INTERNALERROR> AttributeError: 'Function' object has no attribute 'get_closest_marker'
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/main.py", line 105, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/main.py", line 141, in _main
INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__
INTERNALERROR>     return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
INTERNALERROR>     _MultiCall(methods, kwargs, hook.spec_opts).execute()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/xdist/dsession.py", line 115, in pytest_runtestloop
INTERNALERROR>     self.loop_once()
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/xdist/dsession.py", line 138, in loop_once
INTERNALERROR>     call(**kwargs)
INTERNALERROR>   File "/var/lib/jenkins/shiningpanda/jobs/833158f0/virtualenvs/d41d8cd9/lib/python3.5/site-packages/xdist/dsession.py", line 180, in worker_workerfinished
INTERNALERROR>     assert not crashitem, (crashitem, node)
INTERNALERROR> AssertionError: ('test_case.py::TestCase::()::test_reboot', <WorkerController gw0>)
INTERNALERROR> assert not 'test_case.py::TestCase::()::test_reboot'

I guess it will be refused since pytest 3.1.3 is eol, but it took me some time to find out what is problem. So maybe backward compatibility check and info will be nice? Or maybe at least this post will help someone.

RonnyPfannschmidt commented 4 years ago

thanks for the info, sounds like the minimal pytest version needs to be pinned higher

nicoddemus commented 4 years ago

Indeed, should be >=3.6: https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst#pytest-360-2018-05-23

webknjaz commented 4 years ago

FTR we've increased the minimum version of pytest from v3.1 to v3.10 from the test matrix earlier this month https://github.com/pytest-dev/pytest-forked/pull/36. So I think it'd be fair to set it to >=3.10 now.