reverbc / pylint-pytest

A Pylint plugin to suppress pytest-related false positives.
https://pypi.org/project/pylint-pytest/
MIT License
3 stars 8 forks source link

FixtureCollector uses static data #24

Open kasium opened 3 years ago

kasium commented 3 years ago

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

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