pylint-pytest icon indicating copy to clipboard operation
pylint-pytest copied to clipboard

FixtureCollector uses static data

Open kasium opened this issue 4 years ago • 0 comments

Describe the bug In the FixtureCollector, the variables fixtures and errors are defined as class variables, not as instance attributes, This means, if e.g. first a non-test file is checked, the errors set will get an entry, but (since it's not a test file) not pylint message is printed. Now, when checking any other file, the error field is still filled, meaning that this will now fail.

To Reproduce Package versions

  • pylint 2.9.6
  • pytest 6.2.4
  • pylint-pytest 1.1.2

Folder structure

- a.py
- test_b.py

File content a.py

import os
os.environ["NOT_HERE"]

File content test_b.py

def test_foo():
  assert 1==1

Now, when executing pylint a.py test_b.py and these files are linted in that order, a "cannot-enumerate-pytest-fixtures" will occur.

************* Module x
a.py:2:0: C0304: Final newline missing (missing-final-newline)
a.py:1:0: C0114: Missing module docstring (missing-module-docstring)
a.py:2:0: W0104: Statement seems to have no effect (pointless-statement)
************* Module test_a
test_b.py:2:0: C0304: Final newline missing (missing-final-newline)
test_b.py:1:0: C0114: Missing module docstring (missing-module-docstring)
test_b.py:1:0: F6401: pylint-pytest plugin cannot enumerate and collect pytest fixtures. Please run `pytest --fixtures --collect-only path/to/current/module.py` and resolve any potential syntax error or package dependency issues (cannot-enumerate-pytest-fixtures)
test_b.py:1:0: C0116: Missing function or method docstring (missing-function-docstring)
test_b.py:2:11: R0124: Redundant comparison - 1 == 1 (comparison-with-itself

Expected behavior Init the variables in the constructor

kasium avatar Sep 07 '21 14:09 kasium