summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNick Pesce <npesce@terpmail.umd.edu>2021-10-19 12:35:30 -0400
committerGitHub <noreply@github.com>2021-10-19 18:35:30 +0200
commit80205dc813e17fc416e56bace982c971a10553fb (patch)
treea281ba61226fb0bc52749ca897992720958ba5c9 /tests
parent27cabbbb1f950c64c2f4a80bfcf005a694ae14a6 (diff)
downloadpylint-git-80205dc813e17fc416e56bace982c971a10553fb.tar.gz
Fix useless-super-delegation false positive when default keyword argument is a variable. (#5157)
Compare variable default args and simplify the logic of the checkers. Co-authored-by: Pierre Sassoulas <pierre.sassoulas@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/functional/u/useless/useless_super_delegation.py19
-rw-r--r--tests/functional/u/useless/useless_super_delegation.txt37
2 files changed, 38 insertions, 18 deletions
diff --git a/tests/functional/u/useless/useless_super_delegation.py b/tests/functional/u/useless/useless_super_delegation.py
index 002c7eb03..2e0384040 100644
--- a/tests/functional/u/useless/useless_super_delegation.py
+++ b/tests/functional/u/useless/useless_super_delegation.py
@@ -3,6 +3,7 @@
# pylint: disable=line-too-long, useless-object-inheritance, arguments-out-of-order
# pylint: disable=super-with-arguments, dangerous-default-value
+default_var = 1
def not_a_method(param, param2):
return super(None, None).not_a_method(param, param2)
@@ -52,12 +53,18 @@ class Base(SuperBase):
def with_default_argument_dict(self, first, default_arg={}):
pass
+ def with_default_argument_var(self, first, default_arg=default_var):
+ pass
+
def with_default_arg_ter(self, first, default_arg="has_been_changed"):
super().with_default_arg_ter(first, default_arg)
def with_default_arg_quad(self, first, default_arg="has_been_changed"):
super().with_default_arg_quad(first, default_arg)
+ def with_default_unhandled(self, first, default_arg=lambda: True):
+ super().with_default_arg_quad(first, default_arg)
+
class NotUselessSuper(Base):
def multiple_statements(self):
@@ -167,6 +174,11 @@ class NotUselessSuper(Base):
# Not useless because the default_arg is different from the one in the base class
super(NotUselessSuper, self).with_default_argument_dict(first, default_arg)
+ default_var = 2
+ def with_default_argument_var(self, first, default_arg=default_var):
+ # Not useless because the default_arg refers to a different variable from the one in the base class
+ super(NotUselessSuper, self).with_default_argument_var(first, default_arg)
+
def with_default_argument_bis(self, first, default_arg="default"):
# Although the default_arg is the same as in the base class, the call signature
# differs. Thus it is not useless.
@@ -192,6 +204,10 @@ class NotUselessSuper(Base):
# call is different from the signature
super(NotUselessSuper, self).with_default_arg_quad(first, default_arg + "_and_modified")
+ def with_default_unhandled(self, first, default_arg=lambda: True):
+ # Not useless because the default value type is not explictely handled (Lambda), so assume they are different
+ super(NotUselessSuper, self).with_default_unhandled(first, default_arg)
+
class UselessSuper(Base):
@@ -236,6 +252,9 @@ class UselessSuper(Base):
def with_default_argument_dict(self, first, default_arg={}): # [useless-super-delegation]
super(UselessSuper, self).with_default_argument_dict(first, default_arg)
+ def with_default_argument_var(self, first, default_arg=default_var): # [useless-super-delegation]
+ super(UselessSuper, self).with_default_argument_var(first, default_arg)
+
def __init__(self): # [useless-super-delegation]
super(UselessSuper, self).__init__()
diff --git a/tests/functional/u/useless/useless_super_delegation.txt b/tests/functional/u/useless/useless_super_delegation.txt
index d2dae5603..0d4b0a1fa 100644
--- a/tests/functional/u/useless/useless_super_delegation.txt
+++ b/tests/functional/u/useless/useless_super_delegation.txt
@@ -1,18 +1,19 @@
-useless-super-delegation:198:4:UselessSuper.equivalent_params:Useless super delegation in method 'equivalent_params'
-useless-super-delegation:201:4:UselessSuper.equivalent_params_1:Useless super delegation in method 'equivalent_params_1'
-useless-super-delegation:204:4:UselessSuper.equivalent_params_2:Useless super delegation in method 'equivalent_params_2'
-useless-super-delegation:207:4:UselessSuper.equivalent_params_3:Useless super delegation in method 'equivalent_params_3'
-useless-super-delegation:210:4:UselessSuper.equivalent_params_4:Useless super delegation in method 'equivalent_params_4'
-useless-super-delegation:213:4:UselessSuper.equivalent_params_5:Useless super delegation in method 'equivalent_params_5'
-useless-super-delegation:216:4:UselessSuper.equivalent_params_6:Useless super delegation in method 'equivalent_params_6'
-useless-super-delegation:219:4:UselessSuper.with_default_argument:Useless super delegation in method 'with_default_argument'
-useless-super-delegation:223:4:UselessSuper.without_default_argument:Useless super delegation in method 'without_default_argument'
-useless-super-delegation:226:4:UselessSuper.with_default_argument_none:Useless super delegation in method 'with_default_argument_none'
-useless-super-delegation:230:4:UselessSuper.with_default_argument_int:Useless super delegation in method 'with_default_argument_int'
-useless-super-delegation:233:4:UselessSuper.with_default_argument_tuple:Useless super delegation in method 'with_default_argument_tuple'
-useless-super-delegation:236:4:UselessSuper.with_default_argument_dict:Useless super delegation in method 'with_default_argument_dict'
-useless-super-delegation:239:4:UselessSuper.__init__:Useless super delegation in method '__init__'
-useless-super-delegation:242:4:UselessSuper.with_default_arg:Useless super delegation in method 'with_default_arg'
-useless-super-delegation:245:4:UselessSuper.with_default_arg_bis:Useless super delegation in method 'with_default_arg_bis'
-useless-super-delegation:248:4:UselessSuper.with_default_arg_ter:Useless super delegation in method 'with_default_arg_ter'
-useless-super-delegation:251:4:UselessSuper.with_default_arg_quad:Useless super delegation in method 'with_default_arg_quad'
+useless-super-delegation:214:4:UselessSuper.equivalent_params:Useless super delegation in method 'equivalent_params'
+useless-super-delegation:217:4:UselessSuper.equivalent_params_1:Useless super delegation in method 'equivalent_params_1'
+useless-super-delegation:220:4:UselessSuper.equivalent_params_2:Useless super delegation in method 'equivalent_params_2'
+useless-super-delegation:223:4:UselessSuper.equivalent_params_3:Useless super delegation in method 'equivalent_params_3'
+useless-super-delegation:226:4:UselessSuper.equivalent_params_4:Useless super delegation in method 'equivalent_params_4'
+useless-super-delegation:229:4:UselessSuper.equivalent_params_5:Useless super delegation in method 'equivalent_params_5'
+useless-super-delegation:232:4:UselessSuper.equivalent_params_6:Useless super delegation in method 'equivalent_params_6'
+useless-super-delegation:235:4:UselessSuper.with_default_argument:Useless super delegation in method 'with_default_argument'
+useless-super-delegation:239:4:UselessSuper.without_default_argument:Useless super delegation in method 'without_default_argument'
+useless-super-delegation:242:4:UselessSuper.with_default_argument_none:Useless super delegation in method 'with_default_argument_none'
+useless-super-delegation:246:4:UselessSuper.with_default_argument_int:Useless super delegation in method 'with_default_argument_int'
+useless-super-delegation:249:4:UselessSuper.with_default_argument_tuple:Useless super delegation in method 'with_default_argument_tuple'
+useless-super-delegation:252:4:UselessSuper.with_default_argument_dict:Useless super delegation in method 'with_default_argument_dict'
+useless-super-delegation:255:4:UselessSuper.with_default_argument_var:Useless super delegation in method 'with_default_argument_var'
+useless-super-delegation:258:4:UselessSuper.__init__:Useless super delegation in method '__init__'
+useless-super-delegation:261:4:UselessSuper.with_default_arg:Useless super delegation in method 'with_default_arg'
+useless-super-delegation:264:4:UselessSuper.with_default_arg_bis:Useless super delegation in method 'with_default_arg_bis'
+useless-super-delegation:267:4:UselessSuper.with_default_arg_ter:Useless super delegation in method 'with_default_arg_ter'
+useless-super-delegation:270:4:UselessSuper.with_default_arg_quad:Useless super delegation in method 'with_default_arg_quad'