Repository navigation
Test collecting errors with pytest 3.2.0 #6418
Copy link
Copy link
Closed
Description
Test collection is failing when using the latest 3.2.0 pytest. Currently it's not yet picked up on either travis or appveyor, but is used on circleCI. Getting a solution is critical, and I'm looking into it now. Alternatively we could limit the pytest version until this is solved.
============================= test session starts ==============================
platform linux2 -- Python 2.7.6, pytest-3.2.0, py-1.4.34, pluggy-0.4.0
Running tests with Astropy version 3.0.dev.
Running tests in lib.linux-i686-2.7/astropy docs.
Date: 2017-08-02T01:53:28
Platform: Linux-3.13.0-125-generic-i686-with-Ubuntu-14.04-trusty
Executable: /usr/bin/python
Full Python Version:
2.7.6 (default, Oct 26 2016, 20:32:47)
[GCC 4.8.4]
encodings: sys: ascii, locale: UTF-8, filesystem: UTF-8, unicode bits: 20
byteorder: little
float info: dig: 15, mant_dig: 15
Numpy: 1.12.1
Scipy: not available
Matplotlib: not available
h5py: not available
Pandas: not available
Cython: 0.25.2
Using Astropy options: remote_data: none.
rootdir: /tmp/astropy-test-lYT0mu, inifile: setup.cfg
collected 12700 items / 4 errors / 35 skipped
==================================== ERRORS ====================================
ERROR collecting lib.linux-i686-2.7/astropy/coordinates/tests/test_finite_difference_velocities.py
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/runner.py:191: in __init__
self.result = func()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/runner.py:370: in <lambda>
lambda: list(collector.collect()),
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:389: in collect
return super(Module, self).collect()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:330: in collect
res = self.makeitem(name, obj)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:342: in makeitem
collector=self, name=name, obj=obj)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:745: in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:339: in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:334: in <lambda>
_MultiCall(methods, kwargs, hook.spec_opts).execute()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:613: in execute
return _wrapped_call(hook_impl.function(*args), self.execute)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:250: in _wrapped_call
wrap_controller.send(call_outcome)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:188: in pytest_pycollect_makeitem
res = list(collector._genfunctions(name, obj))
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:362: in _genfunctions
self.ihook.pytest_generate_tests(metafunc=metafunc)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:745: in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:339: in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:334: in <lambda>
_MultiCall(methods, kwargs, hook.spec_opts).execute()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:614: in execute
res = hook_impl.function(*args)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:113: in pytest_generate_tests
metafunc.parametrize(*marker.args, **marker.kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:781: in parametrize
for x in argvalues]
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/mark.py:66: in extract_from
warnings.warn(MARK_PARAMETERSET_UNPACKING)
E RemovedInPytest4Warning: Applying marks directly to parameters is deprecated, please use pytest.param(..., marks=...) instead.
E For more details, see: https://docs.pytest.org/en/latest/parametrize.html
_ ERROR collecting lib.linux-i686-2.7/astropy/io/ascii/tests/test_c_reader.py __
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/runner.py:191: in __init__
self.result = func()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/runner.py:370: in <lambda>
lambda: list(collector.collect()),
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:389: in collect
return super(Module, self).collect()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:330: in collect
res = self.makeitem(name, obj)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:342: in makeitem
collector=self, name=name, obj=obj)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:745: in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:339: in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:334: in <lambda>
_MultiCall(methods, kwargs, hook.spec_opts).execute()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:613: in execute
return _wrapped_call(hook_impl.function(*args), self.execute)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:250: in _wrapped_call
wrap_controller.send(call_outcome)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:188: in pytest_pycollect_makeitem
res = list(collector._genfunctions(name, obj))
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:362: in _genfunctions
self.ihook.pytest_generate_tests(metafunc=metafunc)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:745: in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:339: in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:334: in <lambda>
_MultiCall(methods, kwargs, hook.spec_opts).execute()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:614: in execute
res = hook_impl.function(*args)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:113: in pytest_generate_tests
metafunc.parametrize(*marker.args, **marker.kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:781: in parametrize
for x in argvalues]
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/mark.py:66: in extract_from
warnings.warn(MARK_PARAMETERSET_UNPACKING)
E RemovedInPytest4Warning: Applying marks directly to parameters is deprecated, please use pytest.param(..., marks=...) instead.
E For more details, see: https://docs.pytest.org/en/latest/parametrize.html
_____ ERROR collecting lib.linux-i686-2.7/astropy/utils/tests/test_data.py _____
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/runner.py:191: in __init__
self.result = func()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/runner.py:370: in <lambda>
lambda: list(collector.collect()),
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:389: in collect
return super(Module, self).collect()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:330: in collect
res = self.makeitem(name, obj)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:342: in makeitem
collector=self, name=name, obj=obj)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:745: in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:339: in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:334: in <lambda>
_MultiCall(methods, kwargs, hook.spec_opts).execute()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:613: in execute
return _wrapped_call(hook_impl.function(*args), self.execute)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:250: in _wrapped_call
wrap_controller.send(call_outcome)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:188: in pytest_pycollect_makeitem
res = list(collector._genfunctions(name, obj))
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:362: in _genfunctions
self.ihook.pytest_generate_tests(metafunc=metafunc)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:745: in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:339: in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:334: in <lambda>
_MultiCall(methods, kwargs, hook.spec_opts).execute()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:614: in execute
res = hook_impl.function(*args)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:113: in pytest_generate_tests
metafunc.parametrize(*marker.args, **marker.kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:781: in parametrize
for x in argvalues]
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/mark.py:66: in extract_from
warnings.warn(MARK_PARAMETERSET_UNPACKING)
E RemovedInPytest4Warning: Applying marks directly to parameters is deprecated, please use pytest.param(..., marks=...) instead.
E For more details, see: https://docs.pytest.org/en/latest/parametrize.html
_____ ERROR collecting lib.linux-i686-2.7/astropy/utils/tests/test_data.py _____
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/runner.py:191: in __init__
self.result = func()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/runner.py:370: in <lambda>
lambda: list(collector.collect()),
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:389: in collect
return super(Module, self).collect()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:330: in collect
res = self.makeitem(name, obj)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:342: in makeitem
collector=self, name=name, obj=obj)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:745: in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:339: in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:334: in <lambda>
_MultiCall(methods, kwargs, hook.spec_opts).execute()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:613: in execute
return _wrapped_call(hook_impl.function(*args), self.execute)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:250: in _wrapped_call
wrap_controller.send(call_outcome)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:188: in pytest_pycollect_makeitem
res = list(collector._genfunctions(name, obj))
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:362: in _genfunctions
self.ihook.pytest_generate_tests(metafunc=metafunc)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:745: in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:339: in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:334: in <lambda>
_MultiCall(methods, kwargs, hook.spec_opts).execute()
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/vendored_packages/pluggy.py:614: in execute
res = hook_impl.function(*args)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:113: in pytest_generate_tests
metafunc.parametrize(*marker.args, **marker.kwargs)
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/python.py:781: in parametrize
for x in argvalues]
/usr/local/lib/python2.7/dist-packages/pytest-3.2.0-py2.7.egg/_pytest/mark.py:66: in extract_from
warnings.warn(MARK_PARAMETERSET_UNPACKING)
E RemovedInPytest4Warning: Applying marks directly to parameters is deprecated, please use pytest.param(..., marks=...) instead.
E For more details, see: https://docs.pytest.org/en/latest/parametrize.html
=============================== warnings summary ===============================
None
[pytest] section in setup.cfg files is deprecated, use [tool:pytest] instead.
-- Docs: http://doc.pytest.org/en/latest/warnings.html
!!!!!!!!!!!!!!!!!!! Interrupted: 4 errors during collection !!!!!!!!!!!!!!!!!!!!
=============== 35 skipped, 1 warnings, 4 error in 23.28 seconds ===============
./.run_docker_tests.sh returned exit code 2
Reactions are currently unavailable
Activity
astrofrog commentedon Aug 2, 2017
I'll take a look to see if I can fix it as part of #6415
astrofrog commentedon Aug 2, 2017
Ah sorry you are looking into a solution, so ignore me. I'll leave you to take a look :)
astrofrog commentedon Aug 2, 2017
I would suggest let's just try and fix it and only restrict the pytest version if a fix isn't easy.
bsipocz commentedon Aug 2, 2017
The solution seems to be trivial, PR is coming soon.
drdavella commentedon Aug 2, 2017
I guess this means open PRs will need to be rebased onto your fix once it's merged?
bsipocz commentedon Aug 2, 2017
@drdavella - yes, either way they need to get the circleCI pass.
larrybradley commentedon Aug 2, 2017
Thanks, @bsipocz. I started working on this exact same thing this morning, but got interrupted by meetings.
bsipocz commentedon Aug 2, 2017
@larrybradley - No problem. However we run into new issues that relates to a bug (or at least I think it's a bug), so there will be a version limitation in ci-helpers for pytest <3.2 for a while.
Photutils may need that limitation for it's circle, too, but I'll look into that in a PR shortly.
pllim commentedon Aug 2, 2017
So... Does this affect affiliated packages? 😱
bsipocz commentedon Aug 2, 2017
photutils and astroquery are fine, but it may affect others, too. This actually only had a few month long deprecation period, and no warnings were issued before this error, so I'm not sure how we were supposed to notice it in time.
larrybradley commentedon Aug 2, 2017
regionsseems to be fine too.bsipocz commentedon Aug 3, 2017
A follow-up on this based on the discussion over there in the pytest repo. They haven't yet removed this deprecation but raise a deprecation warning. We see it as an error as we turn every deprecation into an exception and unfortunately it's a bit messy when the warning is issues at collection time.
Also as it happens at collection time, none of our machinery is suitable to ignore these warnings when
enable_deprecations_as_exceptionsis opted in.astrofrog commentedon Aug 3, 2017
Can we not list the warning here? https://github.com/astropy/astropy/blob/master/astropy/tests/helper.py#L140
5 remaining items
bsipocz commentedon Aug 3, 2017
@pllim - that was my instinct, too thus haven't even tried it out yesterday along with the others 😄
bwinkel commentedon Aug 3, 2017
I'm using the astropy package template and, yes, am affected by the bug.
bsipocz commentedon Aug 3, 2017
@bwinkel - I've just merged the ci-helpers PR that limits pytest to be <3.2, so affiliates should be fine for now. Nevertheless it's worth trying it locally and fix any issues that is triggered by the package itself.
Once we worked out the issues in astropy core I'll send out an e-mail to astropy-dev and the affiliate maintainers mailing list about the workarounds affiliates can have.
bwinkel commentedon Aug 4, 2017
@bsipocz - Thanks!
Unfortunately, I have no idea what could go wrong in my .rst files. If I run the doctests individually on them, every single one of them seems to fail. I'm not sure if this is related to a warning (as expected), if I run
python setup.py test -a -WignoreI still get the error messages (see below). The tests return with exit code 3 in both cases.
bsipocz commentedon Aug 4, 2017
Is this happening locally? The quickest fix is to downgrade pytest to <3.2. I'll send out more info probably later today.
bwinkel commentedon Aug 4, 2017
I first encountered this on travis/appveyor, but I can reproduce it on my machine if is use pytest=3.2.
bwinkel commentedon Aug 4, 2017
@bsipocz, you did not change it for the appveyor script, did you? Sorry to bother you.
bsipocz commentedon Aug 4, 2017
It should be limited to <3.2 in appveyor, too. If you find it otherwise, could you post the link here?
bwinkel commentedon Aug 4, 2017
https://ci.appveyor.com/project/bwinkel/pycraf/build/job/wx6pf494meo6e358
It's strange; if you look at lines 54-65:
bsipocz commentedon Aug 4, 2017
@bwinkel - Thanks, that indeed is an issue. I'll ping you once the fix is done.
bsipocz commentedon Aug 4, 2017
@bwinkel - try restarting now.
bwinkel commentedon Aug 4, 2017
@bsipocz - It works. Thanks a lot, I appreciate your help.
adrn commentedon Sep 11, 2017
@bsipocz Just confirming: the fix for this is still to use
pytest<3.2? I keep running in to this in my own packages (locally).bsipocz commentedon Sep 11, 2017
Yes, that's the quickest workaround. You don't see it on travis as
ci-helperscurrently limits pytest to <3.2 unless it's overridden with thePYTEST_VERSIONvariable.However locally everything should be fine also if you have astropy dev. If you keep seeing issue that means that you package also have affected code. If that's the case, feel free to ping me on a GH issue that has the details.