Skip to content
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

Incompatibility with pytest-randomly #26

Open
jacquerie opened this issue Jul 25, 2017 · 3 comments
Open

Incompatibility with pytest-randomly #26

jacquerie opened this issue Jul 25, 2017 · 3 comments

Comments

@jacquerie
Copy link
Collaborator

Minimal reproduction: https://github.com/jacquerie/pytest-flake8-bug

I expect tests to run normally, but this is instead what I see:

% py.test --flake8 tests
================================================================= test session starts =================================================================
platform darwin -- Python 2.7.13, pytest-3.1.3, py-1.4.34, pluggy-0.4.0
Using --randomly-seed=1501011429
rootdir: /Users/jacquerie/Code/pytest-flake8-bug, inifile:
plugins: randomly-1.2.1, flake8-0.8.1
collected 4 items
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/Users/jacquerie/.virtualenvs/flake8/lib/python2.7/site-packages/_pytest/main.py", line 105, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>   File "/Users/jacquerie/.virtualenvs/flake8/lib/python2.7/site-packages/_pytest/main.py", line 140, in _main
INTERNALERROR>     config.hook.pytest_collection(session=session)
INTERNALERROR>   File "/Users/jacquerie/.virtualenvs/flake8/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__
INTERNALERROR>     return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
INTERNALERROR>   File "/Users/jacquerie/.virtualenvs/flake8/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/Users/jacquerie/.virtualenvs/flake8/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
INTERNALERROR>     _MultiCall(methods, kwargs, hook.spec_opts).execute()
INTERNALERROR>   File "/Users/jacquerie/.virtualenvs/flake8/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/Users/jacquerie/.virtualenvs/flake8/lib/python2.7/site-packages/_pytest/main.py", line 150, in pytest_collection
INTERNALERROR>     return session.perform_collect()
INTERNALERROR>   File "/Users/jacquerie/.virtualenvs/flake8/lib/python2.7/site-packages/_pytest/main.py", line 606, in perform_collect
INTERNALERROR>     config=self.config, items=items)
INTERNALERROR>   File "/Users/jacquerie/.virtualenvs/flake8/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__
INTERNALERROR>     return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
INTERNALERROR>   File "/Users/jacquerie/.virtualenvs/flake8/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/Users/jacquerie/.virtualenvs/flake8/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
INTERNALERROR>     _MultiCall(methods, kwargs, hook.spec_opts).execute()
INTERNALERROR>   File "/Users/jacquerie/.virtualenvs/flake8/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/Users/jacquerie/.virtualenvs/flake8/lib/python2.7/site-packages/pytest_randomly.py", line 119, in pytest_collection_modifyitems
INTERNALERROR>     current_module = item.module
INTERNALERROR> AttributeError: 'Flake8Item' object has no attribute 'module'

============================================================ no tests ran in 0.01 seconds =============================================================
@timj
Copy link

timj commented Aug 28, 2017

I have also come across this. There is also a problem with pytest-random-order. It seems that Flake8Item is breaking the plugin contract and it is assumed that all tests items have some scheme for reporting the module associated with the test. Given that flake8 doesn't have any classes or modules, just files, it might be enough to fake a module attribute that returns the name of the file with __name__. Looking at some of the other bug reports referenced here it seems fixturename is also implied by the pytest plugin contract.

@jaraco
Copy link

jaraco commented Aug 2, 2022

I wonder if this issue affects other non-module plugins like pytest-checkdocs or pytest-mypy.

@jaraco
Copy link

jaraco commented Aug 2, 2022

I tried adding pytest-randomly to jaraco.text, which uses a number of other pytest plugins, and it worked just fine:

 jaraco.text main $ tox
python develop-inst-noop: /Users/jaraco/code/main/jaraco.text
python installed: attrs==22.1.0,black==22.6.0,click==8.1.3,coverage==6.4.2,docutils==0.19,filelock==3.7.1,flake8==4.0.1,importlib-metadata==4.12.0,iniconfig==1.1.1,jaraco.context==4.1.2,jaraco.functools==3.5.1,-e git+gh://jaraco/jaraco.text@5572d7a7168dd8643bea1fd50d8d42cdd28b765c#egg=jaraco.text,mccabe==0.6.1,more-itertools==8.13.0,mypy==0.971,mypy-extensions==0.4.3,packaging==21.3,pathspec==0.9.0,pep517==0.12.0,platformdirs==2.5.2,pluggy==1.0.0,py==1.11.0,pycodestyle==2.8.0,pyflakes==2.4.0,pyparsing==3.0.9,pytest==7.1.2,pytest-black==0.3.12,pytest-checkdocs==2.7.1,pytest-cov==3.0.0,pytest-enabler==1.3.0,pytest-flake8==1.1.1,pytest-mypy==0.9.1,pytest-randomly==3.12.0,toml==0.10.2,tomli==2.0.1,typing_extensions==4.3.0,zipp==3.8.1
python run-test-pre: PYTHONHASHSEED='2359061132'
python run-test: commands[0] | pytest
=============================================================================== test session starts ===============================================================================
platform darwin -- Python 3.10.5, pytest-7.1.2, pluggy-1.0.0
cachedir: .tox/python/.pytest_cache
Using --randomly-seed=932733908
rootdir: /Users/jaraco/code/main/jaraco.text, configfile: pytest.ini
plugins: checkdocs-2.7.1, black-0.3.12, randomly-3.12.0, flake8-1.1.1, enabler-1.3.0, mypy-0.9.1, cov-3.0.0
collected 42 items                                                                                                                                                                

jaraco/text/__init__.py ...                                                                                                                                                 [  7%]
jaraco/text/to-dvorak.py s                                                                                                                                                  [  9%]
jaraco/text/__init__.py ..                                                                                                                                                  [ 14%]
jaraco/text/layouts.py s                                                                                                                                                    [ 17%]
jaraco/text/to-dvorak.py .                                                                                                                                                  [ 19%]
jaraco/text/layouts.py .                                                                                                                                                    [ 21%]
jaraco/text/to-qwerty.py s                                                                                                                                                  [ 24%]
jaraco/text/__init__.py .                                                                                                                                                   [ 26%]
jaraco/text/layouts.py .s                                                                                                                                                   [ 31%]
docs/conf.py s                                                                                                                                                              [ 34%]
jaraco/text/__init__.py ..                                                                                                                                                  [ 39%]
. .                                                                                                                                                                         [ 41%]
jaraco/text/__init__.py ....                                                                                                                                                [ 51%]
jaraco/text/to-qwerty.py .                                                                                                                                                  [ 53%]
jaraco/text/__init__.py ..                                                                                                                                                  [ 58%]
docs/conf.py s                                                                                                                                                              [ 60%]
jaraco/text/layouts.py .                                                                                                                                                    [ 63%]
jaraco/text/__init__.py s                                                                                                                                                   [ 65%]
docs/conf.py .                                                                                                                                                              [ 68%]
jaraco/text/__init__.py .                                                                                                                                                   [ 70%]
jaraco/text/to-qwerty.py s                                                                                                                                                  [ 73%]
jaraco/text/to-dvorak.py s                                                                                                                                                  [ 75%]
jaraco/text/__init__.py ......                                                                                                                                              [ 90%]
docs/conf.py .                                                                                                                                                              [ 92%]
jaraco/text/__init__.py s..                                                                                                                                                 [100%]

---------- coverage: platform darwin, python 3.10.5-final-0 ----------
Name                       Stmts   Miss  Cover   Missing
--------------------------------------------------------
docs/conf.py                   7      0   100%
jaraco/text/__init__.py      157      0   100%
jaraco/text/layouts.py         8      0   100%
jaraco/text/to-dvorak.py       3      0   100%
jaraco/text/to-qwerty.py       3      0   100%
--------------------------------------------------------
TOTAL                        178      0   100%

====================================================================================== mypy =======================================================================================

Success: no issues found in 5 source files
========================================================================= 31 passed, 10 skipped in 3.98s ==========================================================================
_____________________________________________________________________________________ summary _____________________________________________________________________________________
  python: commands succeeded
  congratulations :)

I believe this issue can be closed as obsolete.

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

No branches or pull requests

3 participants