Skip to content

Commit

Permalink
Make nsp/nate/better-unused-argument merge-able with origin/master
Browse files Browse the repository at this point in the history
Signed-off-by: Stavros Ntentos <[email protected]>
  • Loading branch information
stdedos committed Oct 23, 2023
1 parent bb0b523 commit 360461c
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 17 deletions.
28 changes: 17 additions & 11 deletions pylint_pytest/checkers/fixture.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ def visit_functiondef(self, node):
for arg in node.args.args:
self._invoked_with_func_args.add(arg.name)

# pylint: disable=protected-access,bad-staticmethod-argument
# pylint: disable=bad-staticmethod-argument,too-many-branches # The function itself is an if-return logic.
@staticmethod
def patch_add_message(self, msgid, line=None, node=None, args=None,
confidence=None, col_offset=None):
Expand Down Expand Up @@ -238,16 +238,22 @@ def patch_add_message(self, msgid, line=None, node=None, args=None,
return

# check W0613 unused-argument
if msgid == 'unused-argument':
if _can_use_fixture(node.parent.parent):
if isinstance(node.parent, astroid.Arguments):
if node.name in FixtureChecker._pytest_fixtures:
return # argument is used as a fixture
else:
fixnames = (arg.name for arg in node.parent.args if arg.name in FixtureChecker._pytest_fixtures)
for fixname in fixnames:
if node.name in FixtureChecker._pytest_fixtures[fixname][0].argnames:
return # argument is used by a fixture
if (
msgid == "unused-argument"
and _can_use_fixture(node.parent.parent)
and isinstance(node.parent, astroid.Arguments)
):
if node.name in FixtureChecker._pytest_fixtures:
# argument is used as a fixture
return

fixnames = (
arg.name for arg in node.parent.args if arg.name in FixtureChecker._pytest_fixtures
)
for fixname in fixnames:
if node.name in FixtureChecker._pytest_fixtures[fixname][0].argnames:
# argument is used by a fixture
return

# check W0621 redefined-outer-name
if msgid == 'redefined-outer-name' and \
Expand Down
1 change: 1 addition & 0 deletions tests/input/unused-argument/func_param_as_fixture_arg.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ def test_myfix(myfix, arg):
"""A test function that uses the param through a fixture"""
assert myfix


@pytest.mark.parametrize("narg", [4, 5, 6])
def test_nyfix(narg): # unused-argument
"""A test function that does not use its param"""
Expand Down
12 changes: 6 additions & 6 deletions tests/test_unused_argument.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,29 @@
class TestUnusedArgument(BasePytestTester):
CHECKER_CLASS = FixtureChecker
IMPACTED_CHECKER_CLASSES = [VariablesChecker]
MSG_ID = 'unused-argument'
MSG_ID = "unused-argument"

@pytest.mark.parametrize('enable_plugin', [True, False])
@pytest.mark.parametrize("enable_plugin", [True, False])
def test_smoke(self, enable_plugin):
self.run_linter(enable_plugin)
self.verify_messages(0 if enable_plugin else 2)

@pytest.mark.parametrize('enable_plugin', [True, False])
@pytest.mark.parametrize("enable_plugin", [True, False])
def test_caller_yield_fixture(self, enable_plugin):
self.run_linter(enable_plugin)
self.verify_messages(0 if enable_plugin else 1)

@pytest.mark.parametrize('enable_plugin', [True, False])
@pytest.mark.parametrize("enable_plugin", [True, False])
def test_caller_not_a_test_func(self, enable_plugin):
self.run_linter(enable_plugin)
self.verify_messages(1)

@pytest.mark.parametrize('enable_plugin', [True, False])
@pytest.mark.parametrize("enable_plugin", [True, False])
def test_args_and_kwargs(self, enable_plugin):
self.run_linter(enable_plugin)
self.verify_messages(2)

@pytest.mark.parametrize('enable_plugin', [True, False])
@pytest.mark.parametrize("enable_plugin", [True, False])
def test_func_param_as_fixture_arg(self, enable_plugin):
self.run_linter(enable_plugin)
self.verify_messages(1 if enable_plugin else 2)

0 comments on commit 360461c

Please sign in to comment.